Řídicí znak () ve výpočetní technice a v telekomunikacích je znak nebo přesněji kódový bod (), který nereprezentuje nějaký grafém (napsaný symbol, ), ale má speciální význam pro zpracování textu (řetězce, souboru) nebo pro řízení přenosu. Proto se někdy řídicím znakům říká netisknutelné znaky ().
Řídicí znaky jsou používány pro signalizaci v přenosovém kanálu () pro dosažení jiného výsledku než přidání symbolu do textu. K těmto znakům patří i znaky CR a LF používané pro oddělování řádků textu.
V kódování ASCII jsou všechny znaky s kódem menším než 32 řídicí znaky (jsou označovány jako sada řídicích kódů C0). Řídicím znakem je i kód 127 (DEL).
Rozšířené ASCII sady definované standardem ISO/IEC 8859 doplňují sadu řídicích znaků o kódy 128 až 159, původně se záměrem, aby vynulováním nejvyššího bitu nedošlo ke změně tisknutelného znaku na řídicí kód z oblasti C0. Tato druhá sada řídicích znaků se nazývá sada C1. I v tomto rozsahu jsou definovány řídicí znaky, např. NEL.
65 řídicích kódů (po 32 z oblastí C0, C1 a znak DEL) bylo zahrnuto také do Univerzální znakové sady definované v Unicode/ISO/IEC 10646. Tato znaková sada obsahuje i další znaky, které by bylo možné považovat za řídicí (jako například oddělovač nulové šířky), ale místo řídicích znaků je nazývá "formátovací znaky" ().
Znaková sada EBCDIC obsahuje 65 řídicích kódů zahrnujících všech 33 řídicích znaků ASCII a přídavné kódy, které z větší části slouží pro řízení periferních zařízení vyráběných firmou IBM.
Řídicí znaky v ASCII
Norma ASCII z ní odvozené normy pro 7bitová kódování ISO/IEC 646, ECMA-6 a ITU T.50 rozdělují řídicí znaky v kódování, které definují, na sadu řídicích kódů C0 a znak DEL.
Sada řídicích kódů C0
Codeposition Kóddes. hex. okt. binárně Unicodecode point zkratka zápisse ^ jazyk C anglicky česky 0/0 0 00 00 00000000 U+0000 NUL ^@ \0 null prázdný znak 0/1 1 01 01 00000001 U+0001 SOH ^A start of heading začátek záhlaví 0/2 2 02 02 00000010 U+0002 STX ^B start of text začátek textu 0/3 3 03 03 00000011 U+0003 ETX ^C end of text konec textu 0/4 4 04 04 00000100 U+0004 EOT ^D end of tramsmission konec přenosu 0/5 5 05 05 00000101 U+0005 ENQ ^E enquiry dotaz 0/6 6 06 06 00000110 U+0006 ACK ^F acknowledge potvrzení 0/7 7 07 07 00000111 U+0007 BEL ^G \a bell zvonek 0/8 8 08 10 00001000 U+0008 BS ^H \b backspace krok zpět 0/9 9 09 11 00001001 U+0009 HT ^I \t horizontal tabulation horizontální tabulace 0/10 10 0A 12 00001010 U+000A LF ^J \n line feed posuv o řádku 0/11 11 0B 13 00001011 U+000B VT ^K \v vertical tabulation vertikální tabulace 0/12 12 0C 14 00001100 U+000C FF ^L \f form feed posuv o stránku 0/13 13 0D 15 00001101 U+000D CR ^M \r carriage return návrat vozíku 0/14 14 0E 16 00001110 U+000E SO ^N shift-out změna registru 0/15 15 0F 17 00001111 U+000F SI ^O shift-in návrat registru 1/0 16 10 20 00010000 U+0010 DLE ^P data link escape autoregistr 1 1/1 17 11 21 00010001 U+0011 DC1 ^Q device control one ovládáni zařízení 1 1/2 18 12 22 00010010 U+0012 DC2 ^R device control two ovládání zařízení 2 1/3 19 13 23 00010011 U+0013 DC3 ^S device control three ovládání zařízení 3 1/4 20 14 24 00010100 U+0014 DC4 ^T device control four ovládání zařízení 4 1/5 21 15 25 00010101 U+0015 NAK ^U negative acknowledge negativní potvrzení 1/6 22 16 26 00010110 U+0016 SYN ^V synchronous idle synchronizace 1/7 23 17 27 00010111 U+0017 ETB ^W end of transmission block konec přenosového bloku 1/8 24 18 30 00011000 U+0018 CAN ^X cancel zrušení 1/9 25 19 31 00011001 U+0019 EM ^Y end of medium konec média 1/10 26 1A 32 00011010 U+001A SUB ^Z substitute character substituce znaku 1/11 27 1B 33 00011011 U+001B ESC ^[ \e escape změna významu 1/12 28 1C 34 00011100 U+001C FS ^\ file separator oddělovač souborů 1/13 29 1D 35 00011101 U+001D GS ^] group separator oddělovač skupin 1/14 30 1E 36 00011110 U+001E RS ^^ record separator oddělovač vět 1/15 31 1F 37 00011111 U+001F US ^_ unit separator oddělovač jednotek
Tabulka obsahuje různé metody zápisu řídicích znaků: Code position je standardní zápis kódu v normě ISO/IEC 646 (ASCII) tvaru x/y; x je číslo sloupce, y je číslo řádku. Pro převod na lineární kód platí c = 16.x + y. V dalších sloupcích jsou lineární kódy znaků zapsané v desítkové (dec.), šestnáctkové (hex.), osmičkové (okt.) a dvojkové soustavě (binárně). Kódové body znaků z Unicode a ISO/IEC 10646 se zapisují velkým písmenem U následovaným znakem plus a kódem zapsaným v šestnáctkové soustavě (obvykle se používá alespoň čtyřciferný zápis kódu). Řídicí znaky mají zkratku tvořenou třemi nebo dvěma písmeny; kódové body U+2400 až U+241F Unicode jsou tisknutelné znaky, které se zobrazují jako zkratky řídicích znaků NUL až US. Stříškový zápis je odvozený od způsobu zadávání znaků pomocí klávesy Control Zápis pomocí obráceného lomítka a písmena, který zavedl jazyk C má pouze několik nejpoužívanějších znaků (\e je GNU rozšíření) Anglický název řídicího znaku Český název podle norem ČSN.
Další (nepříliš často používaný) způsob grafické reprezentace řídicích znaků popisuje norma ISO 2047; například znak BEL je znázorněn pomocí Unicode kódového bodu U+237E (⍾) „grafický znak pro zvonek“.
Další řídicí znaky v ASCII
Znak výmaz (DEL, delete) je řídicí znak, který nepatří do sady C0. Má kód 127 (U+007F).
Někdy se za řídicí znak považuje i znak mezera s kódem 32 (U+0020), která má kromě přidání mezery do textu i řídicí interpretaci posuv tiskové hlavy o jedno místo doprava.
Codeposition Kóddes. hex. okt. binárně Unicodecode point zkratka zápisse ^ anglicky česky 2/0 32 20 40 00100000 U+0020 SP space mezera 7/15 127 7F 157 01111111 U+007F DEL ^? delete výmaz
Univerzální znaková sada obsahuje několik znaků pro znázornění mezery: U+2420 je její zkratka (SP), U+2422 je přeškrtnutí písmeno b, U+2423 je skobička. Znak U+2421 je zkratka pro DELThe Unicode Standard. Control Pictures. Range: 2400–243F. .
Řídicí znaky v osmibitových kódováních
Sada řídicích kódů C1
Rozšířené ASCII sady definované standardem ISO/IEC 8859 doplňují sadu řídicích znaků o kódy 128 až 159 nazývané sada C1. Tento prostor byl původně vytvořen se záměrem, aby vynulováním nejvyššího bitu nedošlo ke změně tisknutelného znaku na řídicí kód z oblasti C0, ale i v tomto prostoru jsou definovány řídicí znaky, např. znak NEL.
Kóddes. hex. okt. binárně Unicodecode point zkratka Esc+ anglicky poznámka 128 80 200 10000000 U+0080 PAD @ Padding Character Chybí v 1. vydání ISO/IEC 6429 (ECMA-48). V prvních pracovních verzích ISO 10646 se používalo pro uvedení ne-ASCII znaků, v pozdějších verzích byla tato funkcionalita odstraněna. 129 81 201 10000001 U+0081 HOP A High Octet Preset 130 82 202 10000010 U+0082 BPH B Break Permitted Here Následuje za tisknutelným znakem, za kterým je povolen řádkový zlom. Má podobnou funkci jako měkké rozdělení, ale nepoužívá pomlčku pro označení rozdělení. Chybí v 1. vydání ISO/IEC 6429. 131 83 203 10000011 U+0083 NBH C No Break Here Následuje za tisknutelným znakem, za kterým není povolen řádkový zlom. Chybí v 1. vydání ISO/IEC 6429. 132 84 204 10000100 U+0084 IND D Index Posune aktivní pozici o jeden řádek dolů. Na rozdíl od LF není víceznačné. Ve verzi ISO/IEC 6429 z roku 1988 označeno jako nedoporučované, ve verzi z roku 1992 vypuštěno (v normě ECMA-48 nedoporučované ve verzi z roku 1986, vypuštěné ve verzi z roku 1991). 133 85 205 10000101 U+0085 NEL E Next Line Ekvivalent CR+LF. Používané pro ukončení řádku na některých sálových počítačích firmy IBM. 134 86 206 10000110 U+0086 SSA F Start of Selected Area Používáno blokově orientovanými terminály jako IBM 3270. 135 87 207 10000111 U+0087 ESA G End of Selected Area 136 88 210 10001000 U+0088 HTS H Character Tabulation Set Způsobí nastavení znakové tabelační pozice na aktuální pozici. 137 89 211 10001001 U+0089 HTJ I Character Tabulation With Justification Podobá se běžnému tabulátoru, ale následujíc znak bude nastaven před následující tabulační pozici. 138 8A 212 10001010 U+008A VTS J Line Tabulation Set Způsobí nastavení řádkové tabelační pozice na aktuální řádek. 139 8B 213 10001011 U+008B PLD K Partial Line Forward (Partial Line Down) Používáno pro tisk dolních a horních indexů podle ISO/IEC 6429. Dolní index je PLD text PLU, horní index PLU text PLD. 140 8C 214 10001100 U+008C PLU L Partial Line Backward (Partial Line Up) 141 8D 215 10001101 U+008D RI M Reverse Line Feed 142 8E 216 10001110 U+008E SS2 N Single-Shift 2 Další tisknutelný znak má být ze sady G2, příp. G3. Na systémech vyhovujících ISO/IEC 4873 (ECMA-43) mohou být tyto kódy použity k tomuto účelu, i když sada C1 je nastavena na jinou než implicitní hodnotu. 143 8F 217 10001111 U+008F SS3 O Single-Shift 3 144 90 220 10010000 U+0090 DCS P Device Control String Následovaný řetězcem tisknutelných znaků (s kódy 0x20-0x7E) a formátovacích efektorů (s kódy 0x08-0x0D) ukončeným znakem ST (s kódem 0x9C). 145 91 221 10010001 U+0091 PU1 Q Private Use 1 Rezervováno pro nestandardizované privátní funkce, jejichž použití podléhá dohodě mezi odesilatelem a příjemcem dat. 146 92 222 10010010 U+0092 PU2 R Private Use 2 147 93 223 10010011 U+0093 STS S Set Transmit State 148 94 224 10010100 U+0094 CCH T Cancel Character Destruktivní backspace. Určeno pro odstranění nejednoznačnosti významu BS. 149 95 225 10010101 U+0095 MW U Message Waiting 150 96 226 10010110 U+0096 SPA V Start of Protected Area Používáno blokově orientovaným terminály jako IBM 3270. 151 97 227 10010111 U+0097 EPA W End of Protected Area 152 98 230 10011000 U+0098 SOS X Start of String Následováno řídicím řetězcem, který může obsahovat libovolný znak kromě SOS a ST, ukončeným znakem ST (s kódem 0x9C). Chybí v 1. vydání ISO/IEC 6429. 153 99 231 10011001 U+0099 SGCI Y Single Graphic Character Introducer Není součástí ISO/IEC 6429. V prvních pracovních verzích ISO 10646 se používalo pro zakódování jednoho ne-ASCII znaku, v pozdějších verzích byla tato funkcionalita odstraněna. 154 9A 232 10011010 U+009A SCI Z Single Character Introducer Má být následován jedním tisknutelným znakem (s kódem 0x20-0x7E) nebo formátovacím efektorem (s kódem 0x08-0x0D). Určeno pro přenos řídicí funkce nebo tisknutelného znaku, který bude dostupný bez ohledu na zvolenou grafickou nebo řídicí sadu. Žádná mezinárodní norma nedefinuje význam následujícího znaku. Chybí v 1. vydání ISO/IEC 6429. 155 9B 233 10011011 U+009B CSI [ Control Sequence Introducer Používaný jako úvodní znak řídicích sekvencí s parametry. 156 9C 234 10011100 U+009C ST \ String Terminator 157 9D 235 10011101 U+009D OSC ] Operating System Command Následovaný řetězcem tisknutelných znaků (s kódy 0x20-0x7E) a formátovacích efektorů (s kódy 0x08-0x0D) ukončeným znakem ST (s kódem 0x9C). Tyto 3 řídicí kódy byly určeny pro přenos protokolové informace v přenosovém kanálu, ale k tomuto účelu se používají zřídka. 158 9E 236 10011110 U+009E PM ^ Privacy Message 159 9F 237 10011111 U+009F APC _ Application Program Command
Řídicí znaky v EBCDIC
Znaková sada EBCDIC obsahuje 65 řídicích kódů zahrnujících všechny řídicí znaky ASCII a přídavné kódy, které z větší části slouží pro řízení periferních zařízení vyrobených firmou IBM.
Řídicí znaky v Unicode
V Unicode jsou znaky s kódy U+0000 – U+001F (řídicí sada C0), U+007F (znak DEL) a U+0080 – U+009F (řídicí sada C1) „řídicí znaky“ () s vlastností „Cc“. Od nich se liší formátovací kódy, které patří do kategorie "Cf". Řídicí znaky Cc nemají v Unicode jméno. Neformálně bývají označovány jako "<control-001A>"[Obecné kategorie v Unicode 5.2, kapitola 4].
Řídicí znaky a klávesnice
Alfanumerické klávesnice obvykle obsahují klávesu označenou "Control", „Ctrl“ nebo (zřídka) „Cntl“, která se používá podobně jako klávesa Shift, tj. je nutné ji držet stisknutou při stisknutí jiné klávesy. Výsledkem by mělo být načtení řídicího znaku z klávesnice.