Unicode input is the insertion of a specific Unicode character on a computer by a user; it is a common way to input characters not directly supported by a physical keyboard. Unicode characters can be produced either by selecting them from a display or by typing a certain sequence of keys on a physical keyboard. In addition, a character produced by one of these methods in one web page or document can be copied into another. In contrast to ASCII's 96 element character set (which it contains), Unicode encodes hundreds of thousands of graphemes (characters) from almost all of the world's written languages and many other signs and symbols besides.[1]
A Unicode input system must provide for a large repertoire of characters, ideally all valid Unicode code points. This is different from a keyboard layout which defines keys and their combinations only for a limited number of characters appropriate for a certain locale.
Unicode characters are distinguished by code points, which are conventionally represented by "U+" followed by four, five or six hexadecimal digits, for example U+00AE or U+1D310. Characters in the Basic Multilingual Plane (BMP), containing modern scripts – including many Chinese and Japanese characters – and many symbols, have a 4-digit code. Historic scripts, but also many modern symbols and pictographs (such as emoticons, emojis, playing cards and many CJK characters) have 5-digit codes.
If an application does not have access to a glyph, the character will usually be shown as the font's glyph (􏿮) which often appears as an empty box, ☐ (nicknamed "tofu" based on the shape), a box with an X in it, ☒, a diamond with a question mark, �, or a box with a question mark in it, ⍰.
Most operating systems support extended keyboard mapping the facility to increase the repertoire of characters available using techniques such as Alternate graphic ("AltGr") that gives a third and fourth meaning to every key; Compose key (sometimes called multi key), a key on a computer keyboard that indicates that the following (usually 2 or more) keystrokes trigger the insertion of an alternate character, typically a precomposed character or a symbol;[3] dead keys typically used to attach a specific diacritic to a base letter;[4] or indeed combinations of these.
These techniques facilitate entry of character sets beyond the basic set provided as standard with the computer.
Many systems provide a way to select Unicode characters visually. ISO/IEC 14755 refers to this as a screen-selection entry method.[5]
Microsoft Windows has provided a Unicode version of the Character Map program, appearing in the consumer edition since XP. This is limited to characters in the Basic Multilingual Plane (BMP). Characters are searchable by Unicode character name, and the table can be limited to a particular code block.[6] Starting with Windows 10 Microsoft Windows also contains so called "emoji keyboard". It can be started by holding down the Windows key (the one with the Windows symbol on it) and hitting the period or semicolon key. The emoji keyboard allows entering of emojis as well as symbols.[7]
More advanced third-party tools of the same type are also available (a notable freeware example is BabelMap, which supports all Unicode characters). On most Linux desktop environments, equivalent tools – such as gucharmap (GNOME) or kcharselect (KDE) – are available.[8]
Generally these tools let the user "copy" the selected characters into the clipboard, and then paste them into the document, rather than pretending to directly type them.
It is often practical to just find the desired character on the web or in another document, and copy and paste it from there.
Some programs running in Microsoft Windows, including recent versions of Word and Notepad, can produce characters from their Unicode code points expressed in decimal and entered on the numeric keypad with the key held down. For example, the Euro sign has 20AC as its hexadecimal code point, which is 8364 in decimal, so will produce the symbol. Similarly, produces the double-struck (blackboard bold) character .
Decimal code points in the range 160 –255 must be entered with a leading zero (so that the Windows code page is chosen) and furthermore the Windows code page must be set to match Unicode (CP1252 must be used). For example, yields a, corresponding to its code point, but the character produced by depends on the, such as Code page 437, and may yield a . Also through yield the characters assigned in rows 8 and 9 in the CP1252 layout, rather than the C1 control codes that are assigned to those numbers in Unicode.
In programs which were not designed to handle Alt codes over 255, the character retrieved usually corresponds to the remainder when the number is divided by 256.
The text editor Vim allows characters to be specified by two-character mnemonics referred to as digraphs. The installed set can be augmented by custom mnemonics defined for arbitrary code points, specified in decimal. For example, as decimal 9881 is equal to hexadecimal 2699, associates "Gr" with .
See below for use of decimal code points in HTML.
Clause 5.1 of ISO/IEC 14755 describes a Basic method whereby a beginning sequence is followed by the hex number representation of the code point and the ending sequence. Most modern systems have some method to emulate this, sometimes limited to four digits (thus only the Basic Multilingual Plane).
Hexadecimal Unicode input can be enabled by adding a string type (REG_SZ) value called EnableHexNumpad
to the registry key HKEY_CURRENT_USER\Control Panel\Input Method
and assigning the value data 1
to it. Users will need to log off and back in after editing the registry for this input method to start working. (In versions earlier than Windows Vista, users needed to reboot for it to start working.)
Unicode characters can then be entered by holding down, and typing on the numeric keypad, followed by the hexadecimal code, and then releasing . This may not work for 5-digit hexadecimal codes like . Some versions of Windows may require the digits 0-9 to be typed on the numeric keypad or require NumLock to be on.
In some applications (Word, Notepad and LibreOffice programs) will replace the hexadecimal number to the left of the cursor with the matching Unicode character. Unless it is six hexadecimal digits long, the code must not be preceded by any digit or letters a–f as they may be treated as part of the code to be converted. For example, entering af1
followed by (or if using a French version) will produce '૱' (U+0AF1), but entering a0000f1
followed by will produce 'añ' ('a' followed by character U+00F1).
This facility enables Unicode characters to be entered in other applications: one can create a desired character in Notepad, for example, and then cut and paste it wherever desired.
Hex input of Unicode must be enabled. In Mac OS 8.5 and later, one can choose the Unicode Hex Input keyboard layout; in OS X (10.10) Yosemite, this can be added in Keyboard → Input Sources.
Holding down, one types the four-digit hexadecimal Unicode code point and the equivalent character appears; one can then release the key.[9] Characters outside of the BMP (the Basic Multilingual Plane) exceed the four-digit limit of the Unicode hex input mechanism but can be entered by using surrogate pairs: holding down the key while entering the first surrogate, the, the second surrogate, then releasing the Option key.
In many applications one or both of the following methods work to directly input Unicode characters:
This is supported by GTK and Qt applications, and possibly others. In ChromeOS, this is an operating system function.
See main article: Numeric character reference. In HTML and XML, character codes to be rendered as characters are prefixed by ampersand and number sign (&#), and are followed by a semicolon (;). The code point can be either in decimal or in hexadecimal; in the latter case it is preceded by an "x". Leading zeros may be omitted. A number of characters may be represented by a named entity.
Example: In HTML/XML, the copyright sign © (U+00A9
) may be coded as:
©
(decimal code point)©
(hexadecimal code point)©
(entity name)This works in many pieces of software that accept HTML markup, such as Thunderbird and Wikipedia editing.