Shift Out and Shift In characters

From Wikipedia, the free encyclopedia
(Redirected from Shift Out)
Shift In and Shift Out used in a Linux terminal to access a variant DEC Special Graphics set

Shift Out (SO) and Shift In (SI) are ASCII control characters 14 and 15, respectively (0x0E and 0x0F).[1] These are sometimes also called "Control-N" and "Control-O".

The original meaning of those characters provided a way to shift a coloured ribbon, split longitudinally usually with red and black, up and down to the other colour in an electro-mechanical typewriter or teleprinter, such as the Teletype Model 38, to automate the same function of manual typewriters. Black was the conventional ambient default colour and so was shifted "in" or "out" with the other colour on the ribbon.

Later advancements in technology instigated use of this function for switching to a different font or character set and back. This was used, for instance, in the Russian character set known as KOI7-switched, where SO starts printing Russian letters, and SI starts printing Latin letters again. Similarly, they are used for switching between Katakana and Roman letters in the 7-bit version of the Japanese JIS X 0201.[2][3]

SO/SI control characters also are used to display VT100 pseudographics. Shift In is also used in the 2G variant[4] of SoftBank Mobile's encoding for emoji.

The ISO/IEC 2022 standard (ECMA-35, JIS X 0202) standardises the generalized usage of SO and SI for switching between pre-designated character sets invoked over the 0x20–0x7F byte range. It refers to them respectively as Locking Shift One (LS1) and Locking Shift Zero (LS0) in an 8-bit environment, or as SO and SI in a 7-bit environment.[5] In ISO-2022-compliant code sets where the 0x0E and 0x0F characters are used for the purpose of emphasis (such as an italic or red font) rather than a change of character set, they are referred to respectively as Upper Rail (UR) and Lower Rail (LR), rather than SO and SI.[6]

See also[edit]


  1. ^ "The Linux Programmer's Manual". Retrieved 2012-11-16.
  2. ^ Japanese Industrial Standards Committee (1975-12-01). The Japanese Katakana graphic set of characters (PDF). ITSCJ/IPSJ. ISO-IR-13. Archived from the original (PDF) on 2022-03-10.
  3. ^ Japanese Industrial Standards Committee (1975-12-01). The Japanese Roman graphic set of characters (PDF). ITSCJ/IPSJ. ISO-IR-14. Archived from the original (PDF) on 2022-03-10.
  4. ^ Kawasaki, Yusuke (2010). Emoji encodings and cross-mapping tables in pure Perl.
  5. ^ ECMA (1994). "7.3: Invocation of character-set code elements". Character Code Structure and Extension Techniques (PDF) (ECMA Standard) (6th ed.). p. 14. ECMA-35.
  6. ^ Sveriges Standardiseringskommission (1975-12-01). NATS Control set for newspaper text transmission (PDF). ITSCJ/IPSJ. ISO-IR-7. Archived from the original (PDF) on 2022-03-10.