C0 controls
The C0 controls are the control characters (code positions 0-31 decimal) which are part of the ASCII standard (as adopted in 1967; the earlier 1963 version had somewhat different control character assignments). They are also part of a number of other character sets derived from ASCII, and are in the Unicode set at the same code positions they have in ASCII. The official definition gives particular meanings for each of the characters, though they have also been used in a number of other ways, and some of them are rarely used these days. Some character sets (including Unicode) have a second set of controls called the C1 controls in the equivalent positions with the 8th bit set (128-159 decimal), but those are rarely used in their control meanings (the Windows character sets have printable characters there).
Various platform-specific character sets also assign graphical renditions to these characters, and it is sometimes necessary to "poke" them directly into screen memory to use them in their graphical meanings, as opposed to "printing" them using standard output methods, which causes them to be interpreted as control characters and activate non-graphical functionality.
In addition to this contiguous block of control characters, there is also the DEL character at position 127 decimal (7F hex), and the 1963 ASCII standard also used position 126 for ESC and 124 for ACK.
Hex | Dec | Codes | Abbreviation | Name | Description and uses |
---|---|---|---|---|---|
00 | 0 | ^@, \0 | NUL | Null character | Marks unused space or padding (e.g., to intentionally slow down terminals or to leave space for added data in memory or storage media). Used in C-based programming languages to mark end of string. |
01 | 1 | ^A | SOH | Start of Heading | Marks the beginning of a header in a message or data structure. The SOL-20 computer mapped this onto the left arrow key. In FidoNet messages, when it occurred at the beginning of a line, it marked the line as a control header line. (Was SOM, Start of Message, in 1963 version of ASCII.) |
02 | 2 | ^B | STX | Start of Text | Marks the beginning of the body text of a message, and/or the end of the header. (Was EOA, End of Address, in 1963 version of ASCII.) |
03 | 3 | ^C | ETX | End of Text | Marks the end of the body text. Also used as "break character" (Control-C) to terminate a program or process. In most Windows programs, Ctrl-C copies text to a buffer for later pasting. (Was EOM, End of Message, in 1963 version of ASCII.) |
04 | 4 | ^D | EOT | End of Transmission | In Unix-style operating systems, signals end-of-file and is used to log out of a terminal. On Apple II, this character signalled that what followed was a DOS command when it was "printed" to standard output. |
05 | 5 | ^E | ENQ | Enquiry | Used in transmission protocols to request acknowledgement from the other end to make sure connection is still active. In DEC TOPS-20 mainframes, usually resulted in currently-active application outputing status information to terminal. On Commodore computers, changes text color to white. (Was WRU, Who Are You, in 1963 version of ASCII.) |
06 | 6 | ^F | ACK | Acknowledge | Sent as response to ENQ message, or used to positively acknowledge receipt of data or messages (as opposed to NAK). (Was RU, "Are you...", in 1963 version of ASCII.) |
07 | 7 | ^G, \a | BEL | Bell | On some systems, this causes a bell, buzzer, or beep to sound, or flashes inverse video to alert a system operator. The Apple II had "BELL" on the "G" key to remind users that Ctrl-G caused this sound effect. Try putting Ctrl-G in an ECHO command from the command line window in Windows even now; it still works. Every time this character is sent to a terminal, an angel gets its wings! (Was spelled BELL in 1963 version of ASCII.) |
08 | 8 | ^H, \b | BS | Backspace | Moves back one space. Usually deletes last character (e.g., from input string), but on some old terminals it just moved backward without deleting and allowed "overstrike" effects overlaying multiple characters. On Apple II, represented left arrow. On Commodore computers, disables character set switching. (Was FE0, Format Effector, in 1963 version of ASCII.) |
09 | 9 | ^I, \t | HT | Horizontal Tab | The typewriter "tab key", usually moving to the next tab stop as defined in the particular software being used. (But some think Tabs Are Evil!) On Commodore computers, enables character set switching. (Was HT / SK in 1963 version of ASCII, representing punchcard skip as well as tab.) |
0A | 10 | ^J, \n | LF | Line Feed | Move down one line. In Unix-style operating systems, it also moves to the beginning of the next line so that it can be used as a line break (newline) character, while in some other systems and terminals it just moves down without moving to the left, requiring the "CR LF" sequence to break a line. On Apple II, represented down arrow (on later machines that had a down arrow key). |
0B | 11 | ^K, \v | VT | Vertical Tab | Moves to vertical tab stops; not used nearly as often as the more-common horizontal tab. (Was written VTAB in 1963 version of ASCII.) On Apple II, represented up arrow (on later machines that had an up arrow key). |
0C | 12 | ^L, \f | FF | Form Feed | Causes page to eject in printers, and may clear the screen in some terminal emulators. Sometimes used as a logical division of sections of a document. |
0D | 13 | ^M, \r | CR | Carriage Return | Moves to the beginning of the line. In some systems (e.g., Apple II, Commodore 64, and TRS-80, and early Macintosh systems before its OS switched to a Unix-based system), also moves to the next line so that it can be used as a line break character, while in other systems it stays on the same line so that it must be accompanied by a LF character to break a line (but on some printing terminals CR with no LF was used for overstrike effects including underlining by printing underscores). Thus the three different line-break conventions (LF, CR, and CR+LF) arose, which bedevil users of text files to this day. As an input character, CR is generally mapped onto the Enter key, signaling the completion of input. |
0E | 14 | ^N | SO | Shift Out | Switch to alternate character set (reversed by SI). Used in various systems and terminals to set different characters (e.g., APL or Cyrillic), or change the color or font. |
0F | 15 | ^O | SI | Shift In | Return to normal character set (reverses operation of SO). |
10 | 16 | ^P | DLE | Data Link Escape | Signals the start of a sequence of raw data as opposed to normal printable or control characters. (Was DC0, Device Control 0, in 1963 version of ASCII.) |
11 | 17 | ^Q | DC1 | Device Control 1 | One of four device-control codes intended to be system-specific. This one (CTRL-Q, also known as XON) is often used to resume operations of a process, device, or output stream that has been paused with CTRL-S (XOFF). On Commodore computers, used for Cursor Down. |
12 | 18 | ^R | DC2 | Device Control 2 | Another device-control code; not used as much as DC1 and DC3. On Commodore computers, Reverse Video On. |
13 | 19 | ^S | DC3 | Device Control 3 | The third of the device-control codes; this one (CTRL-S, also known as XOFF) is often used to pause processes, devices, or output streams, with CTRL-Q (XON) resuming them (though in some cases, any keypress causes output to resume). The SOL-20 computer mapped this onto the right arrow key. Commodore computers used it for the Home key. |
14 | 20 | ^T | DC4 | Device Control 4 | The fourth device-control code; not used as much as DC1 or DC3. In DEC TOPS-20 mainframes, usually resulted in output of system status to terminal. Commodore computers used it for the Delete key. (Was called both DC4 and STOP in 1963 version of ASCII.) |
15 | 21 | ^U | NAK | Negative Acknowledge | In transmission protocols, indicates a failure requiring a re-send, or a negative response to a query of whether the process is ready to proceed. On Apple II, represented right arrow. (Was ERR, Error, in 1963 version of ASCII.) |
16 | 22 | ^V | SYN | Synchronous Idle | Signals that a correction may now be received in synchronous transmission protocols. In most Windows programs, Ctrl-V pastes text from the cut/copy buffer. (Was spelled SYNC in 1963 version of ASCII.) |
17 | 23 | ^W | ETB | End of Transmission Block | Marks the end of a block of data divided into blocks for transmission. The SOL-20 computer mapped this onto the up arrow key. (Was LEM, Logical End of Media, in 1963 version of ASCII.) |
18 | 24 | ^X | CAN | Cancel | Cancels an operation and signals that previously-sent data can be disregarded. The SOL-20 computer mapped this onto the down arrow key. In most Windows programs, Ctrl-X cuts text into a buffer for later pasting. (Was S0, Separator 0, in 1963 version of ASCII.) |
19 | 25 | ^Y | EM | End of Medium | Marks the end of a physical medium such as a data-storage tape. In most Windows programs, Ctrl-Y redoes a command after Ctrl-Z undid it. (Was S1, Separator 1, in 1963 version of ASCII.) |
1A | 26 | ^Z | SUB | Substitute Character | Used to mark the spot where garbled, missing, or incomplete characters were received due to transmission errors, or various other uses involving place-holder characters. This character (Ctrl-Z) is also used by MS/PC-DOS to mark the end of a file or input stream, calling it EOF (although CTRL-D, EOT, would have been more standards-compliant and is used by Unix-style OSs for this purpose; however, some DEC operating systems used the CTRL-Z convention and this is what was followed by PC-DOS). In most Windows programs, Ctrl-Z undoes the last command. (Was S2, Separator 2, in 1963 version of ASCII.) |
1B | 27 | ^[ | ESC | Escape | Mapped onto the ESC key on keyboards, this usually signals a user attempting to exit a menu or mode. It is also commonly used in printer and terminal control protocols to signal the beginning of a special "escape sequence" where immediately-following characters are interpreted as commands. (Was S3, Separator 3, in 1963 version of ASCII.) |
1C | 28 | ^\ | FS | File Separator | One of four separator characters intended to delimit structured data. FS is the highest-level separator, intended to separate structures which are in turn internally delimited with GS, RS, and US (in descending order). Also used as a "quit and dump core" signal in Unix shells. On Commodore computers, it set the text color to red. (Was S4, Separator 4, in 1963 version of ASCII.) |
1D | 29 | ^] | GS | Group Separator | The second of four separator characters, subordinate to FS, but higher-level than RS and US. On Commodore computers, it was used for Cursor Right. (Was S5, Separator 5, in 1963 version of ASCII.) |
1E | 30 | ^^ | RS | Record Separator | The third of four separator characters, subordinate to FS and GS, but higher-level than US. On Commodore computers, it set the text color to green. (Was S6, Separator 6, in 1963 version of ASCII.) |
1F | 31 | ^_ | US | Unit Separator | The lowest-level of the separator characters, used to divide strings of ASCII characters which are the base elements of a data structure. A sequence of such US-delimited strings can in turn be used as a higher-level data element separated by other such elements by the RS character, and this structure in turn can be delimited from other such elements by GS, and finally if a fourth level is needed the FS character separates those elements. On Commodore computers, it set the text color to blue. (Was S7, Separator 7, in 1963 version of ASCII.) |