Content deleted Content added
→Windows: Try again to remove confusion between keyboard layouts and active code page Tag: Reverted |
In Transit (talk | contribs) m Reverted 1 edit by 37.39.179.168 (talk) to last revision by Spitzak |
||
(23 intermediate revisions by 4 users not shown) | |||
Line 6:
==MS-DOS==
On [[IBM PC compatible]] [[personal computer]]s from the 1980s, the [[BIOS]] allowed the user to hold down the {{keypress|Alt}} key and type a decimal number on the keypad. It would place the corresponding code into the keyboard buffer so that it would look (almost) as if the code had been entered by a single keystroke. Applications reading keystrokes from the BIOS would behave according to what action they associate with that code. Some would interpret the code as a command, but often it would be interpreted as an 8-bit character from the current [[code page]] that was inserted into the text the user was typing.<ref name="AltModulo">If the entered value exceeds 255, only the remainder after dividing by 256 (i.e., the value [[modulo]] 256) was used by the BIOS. For example, 520 is interpreted as 520 mod 256 = 8, so it produces the same character as for value 8.</ref> On the original [[IBM PC]] the code page was [[CP437]].
Some Eastern European, Arabic and Asian computers used other hardware [[code page]]s, and MS-DOS was able to switch between them at runtime with commands like <code>KEYB</code>, <code>[[List of DOS commands#CHCP|CHCP]]</code> or <code>[[List of DOS commands#MODE|MODE]]</code>. This causes the Alt combinations to produce different characters (as well as changing the display of any previously-entered text in the same manner). A common choice in locales using variants of the Latin alphabet was [[CP850]], which provided more Latin character variants. (There were, however, many more code pages{{Crossreference|text=; for a more complete list, see [[code page]]}}).
Line 16:
==Windows==
The Alt codes had become so well known and memorized by users that Microsoft decided to preserve them in [[Microsoft Windows]], even though the OS features a newer and different set of code pages
* The familiar {{key press|Alt}}+{{key press|#}}{{key press|#
* The new {{key press|Alt}}+{{key press|0}}{{key press|#}}{{key press|#}}{{key press|#}} combination (which prefixes a zero to each Alt code), produces characters from the newer "[[Windows code page#ANSI code page|
==Unicode==
Later versions of Windows and applications such as Microsoft Word supported Unicode. As Unicode included all the characters in all the MSDOS code pages, this had the immediate benefit that all the old MSDOS Alt combinations worked, not just the ones that existed in the Windows Code Page. And far more software stopped changing how documents displayed or printed when the selected code page was changed.
In the IBM PC Bios typing an Alt code greater than 255 produced the same as that number [[Modulo operator|modulo]] 256.<ref name="AltModulo"/><ref name="WannaBuildASnowman">{{Cite web |first=Raymond |last=Chen |title=The history of Alt+number sequences, and why Alt+9731 sometimes gives you a heart and sometimes a snowman |work=The Old New Thing |publisher=Microsoft |date=2 July 2024 |url=https://devblogs.microsoft.com/oldnewthing/20240702-00/?p=109951}}</ref> Some applications retained this behavior, while others (in particular applications using the Windows [[RichEdit]] control, such as [[WordPad]] and [[PSPad]]) made numbers from 256 to 65,535 produce the corresponding Unicode character.<ref name="RichEdit">{{Cite web |last=Walker |first=Jim |display-authors=etal |title=About Rich Edit Controls |work=Windows App Development |publisher=Microsoft |via=[[Microsoft Learn]] |url=https://learn.microsoft.com/windows/win32/controls/about-rich-edit-controls |date=27 April 2022}}</ref> For instance, {{key press|Alt}}+{{key press|9}}{{key press|7}}{{key press|3}}{{key press|1}} in WordPad produces the {{unichar|2603}}. If the Windows Code Page was set to CP1252 then all Unicode BMP characters except [[C0 and C1 control codes|control characters]] could be typed this way.
===
Because most Unicode documentation and character tables show the code points in [[base 16|hex]], not decimal, a variation of Alt codes was developed to allow the typing of numbers in hex (using the main keyboard for {{keypress|A}}–{{keypress|F}}). To enable it, a user must set or create a string type ({{code|REG_SZ}}) value called <code>EnableHexNumpad</code> in the [[Windows Registry|registry]] key <code>HKEY_CURRENT_USER\Control Panel\Input Method</code>, assign the value data <code>1</code> to it, and then reboot or log out/in. A leading {{keypress|+}} then indicates hex input, for example {{key press|Alt|+}}{{key press|1|1|B|chain=}} will produce {{char|ě}} (e with [[caron]]).
|