Řídicí znak
Ří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 

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).
 Řidící 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.

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 DEL.

Ří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.

Ří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>".

Ří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.

V jedné z implementací klávesa Control způsobuje, že se vygeneruje kód o 64 menší než je kód velkého písmene, které by klávesa normálně vracela (tj. odečtením 64 od ASCII kódu příslušného velkého písmene). Jiná implementace použije spodních 6 bitů ASCII kódu přiřazeného klávese (aplikací bitového AND s konstantou 31), čímž se vynulují bity 6 a 7. V obou případech stisknutí „Ctrl“ a klávesy "g" nebo "G" (s kódem 103 v osmičkové soustavě nebo 71 v desítkové soustavě, což je 01000111 ve dvojkové soustavě), produkuje kód 7 (Bell, 7 desítkově nebo osmičkově nebo 00000111 dvojkově).

Znak NULL (s kódem 0) je reprezentován Ctrl-@, protože znak "@" je ve znakové sadě ASCII před "A". Mnoho terminálů také přijímá kombinaci Ctrl-mezera jako jiný zápis pro Ctrl-@. V obou případech je výsledkem 32 řídicích kódů ASCII mezi 0 a 31. Tímto přístupem nelze reprezentovat znak DEL s kódem 127, tento znak se však obvykle zapisuje Ctrl-?, protože odečtením 64 od kódu '?' dostaneme −1, což při reprezentaci jako sedmibitové číslo bez znaménka dává 127.

Při držení klávesy Control písmenové klávesy dávají stejné řídicí znaky bez ohledu na držení klávesy shift nebo stav přeřazovače caps lock. Jinak řečeno nezáleží, zda by klávesa dávala velká písmena nebo malá písmena. Interpretace Control s mezerou, grafický znak a číslicové klávesy (s ASCII kódy 32 až 63) jsou na různých systémech různé. Některé produkují stejné znakové kódy, jako kdyby klávesa Control nebyla stisknuta. Jiné systémy převádějí tyto klávesy na řídicí znaky když klávesa Control je držena. Interpretace klávesy Control s neASCII ("foreign") klávesou se také liší systém od systému.

Pro zkrácené vyjádření řídicích kláves se často používá stříškový zápis (), ve kterém se řídicí znak zapisuje jako znak stříška (^) následovaný ASCII znakem s kódem o 64 větším než je kód řídicího znaku. Řídicí znaky generované pomocí písmenové klávesy se zobrazují pomocí velkých písmen. Například ^G reprezentuje kód 7, který je generován stisknutím klávesy G při stisknuté klávese Control.

Klávesnice také obvykle obsahují několik kláves, které produkují kódy řídicích znaků. Například klávesa označená „Backspace“ obvykle produkuje kód 8, klávesa „Tab“ kód 9, klávesa „Enter“ nebo „Return“ kód 13 (na některých klávesnicích kód 10).

Mnoho klávesnic obsahuje další klávesy, které neodpovídají žádnému tisknutelnému ani řídicímu znaku ASCII, například klávesy pro pohyb kurzoru a klávesy používané pro ovládání textových procesorů. Stisky těchto kláves se předávají programu jednou ze čtyř metod:

 využitím jinak nepoužitých řídicích znaků;
 pomocí jiného kódování než ASCII;
 pomocí víceznakových řídicích sekvencí;
 pomocí přídavného mechanismu mimo generování znaků.

„Hloupé“ () počítačové terminály obvykle používají řídicí sekvence. Klávesnice připojené k samostatným osobním počítačům vyrobeným v 80. letech 20. století obvykle používají jednu (nebo obě) z prvních dvou metod. Moderní počítačové klávesnice generují scan kódy, které identifikují stisknutí nebo puštění jednotlivých kláves; programové vybavení počítače pak určuje, jak zpracovávat klávesy, které jsou stisknuty, včetně libovolné ze čtyř metod popsaných výše.

Použití řídicích znaků 

Při návrhu kódu ASCII byla každému řídicímu znaku přiřazena určitá funkce a způsob použití.
Podle navrženého účelu lze řídicí znaky rozdělit do několika skupin: řízení tisku a zobrazování, strukturování dat, řízení přenosu a různé.

Fyzické ovládání zařízení 
 BS: Backspace (návrat o 1 znak zpět)
 HT: Horizontal Tab (tabulátor)
 LF: Line Feed (posun o 1 řádek dolů)
 VT: Vertical Tab (vertikální tabulátor)
 FF: Form Feed (posun na další stránku)
 CR: Carriage Return (návrat tiskové hlavičky na začátek)

Fyzické ovládání zařízení: ostatní 
 BEL: Bell – zvonek
 DC1, DC2, DC3, DC4: Device Controls – DC1 a DC3 se používají jako XON a XOFF v softwarovém řízení toku dat

Logické řízení komunikace 
 SOH: Start of Header – začátek hlavičky
 STX: Start of Text – začátek textu
 ETX: End of Text – konec textu
 EOT: End of Transmission – konec vysílání
 ENQ: Enquiry – dotaz (žádost o komunikaci)
 ACK: Acknowledge – potvrzení (připravenosti ke komunikaci)
 DLE: Data Link Escape – používá se pro kódování speciálních znaků
 NAK: Negative Acknowledge – zamítnutí (žádosti o komunikaci)
 SYN: Synchronous Idle
 ETB: End of Transmission Block – konec přenosového bloku

Fyzické řízení komunikace 
 NUL: Null – „nic“
 DEL: Delete – smazání
 CAN: Cancel – zrušení
 EM: End of Medium – konec média
 SUB: Substitute – substituce

Oddělovače informací 
 FS: File Separator – oddělovač souboru
 GS: Group Separator – oddělovač skupiny
 RS: Record Separator – oddělovač záznamu
 US: Unit Separator – oddělovač jednotek

Rozšiřování kódu 
 SI: Shift In
 SO: Shift Out

 ESC: Escape

Historie 

Řídicí znaky byly součástí dálnopisných abeced; jednalo se o znak návrat vozíku (CR) a nový řádek (LF), znak zvonek (BEL), který způsobil zazvonění zvonku na upozornění operátora, i znak dotaz (kdo tam?, ENQ) pro vyžádání identifikačního kódu od protistanice.

Odkazy

Reference

Související články 

 Escape sekvence
 Signalizace (telekomunikace)
 Bílý znak

Externí odkazy 

 ISO/IEC 6429:1992 (E), Informace Technology - Control funkce pro coded znakové sady
 ISO IR 1 C0 sada ISO/IEC 646 (PDF)

Kódování znaků