Unicode and Keyboards on WindowsMichael Kaplan Cathy Wissink Globalization Infrastructure and Font Technology Windows International Microsoft Who is this talk geared towards? This is a high-level introduction to keyboards on Windows, assuming no prior knowledge. Audience: – Developers new to concept – People who need to understand keyboards enough to understand how applications can work with them – Not completely intended to be a “nuts and bolts” talk 25 March 2003 Prague, Czech Republic (IUC23) 2 Czech Republic (IUC23) 3 .Keyboards are simple. right? Fonts Rendering engines 135 different locales on Windows Custom keyboard layouts Turns out they are not so simple! 25 March 2003 Prague. Czech Republic (IUC23) 4 .Keyboard Layout. it is not the keyboard hardware but the software that connects the hardware to the system 25 March 2003 Prague. defined A collection of data for each keystroke and shift state combination with a particular keyboard driver (DLL) In other words. Anatomy of a keystroke User presses a key Key contains a scan code Keyboard layout DLL maps the scan code to a virtual key (VK) OS sends the VK to the application If asked. Czech Republic (IUC23) 5 . the DLL maps the VK/shift state to characters (if they are assigned) 25 March 2003 Prague. Czech Republic (IUC23) 6 .25 March 2003 Prague. Language features single character keystrokes ligatures dead keys shift states SGCap Caps lock key 25 March 2003 Prague. Czech Republic (IUC23) 7 . Ligatures For keyboard layouts. Czech Republic (IUC23) 8 . not the same as the typographic/linguistic term A combination of 2 to 4 UTF-16 code points inserted by a single keystroke 25 March 2003 Prague. showing linguistic characters Sri. Czech Republic (IUC23) 9 . and others as ligatures 25 March 2003 Prague.Examples of ligatures on keyboard Tamil keyboard in the shifted state. Ksa. Dead keys A combination of two keystrokes to insert a single character Used often in European languages for diacritics Called “dead” since the first keystroke does not appear to do anything Not intuitive to people who are not used to them 25 March 2003 Prague. Czech Republic (IUC23) 10 . . Czech Republic (IUC23) 11 ..Dead key example: Diaeresis on the Finnish keyboard Input keys Type ¨ (deadkey) Type ¨ + a Type ¨ + A Type ¨ + o Type ¨ + O . ¨ (spacing diaeresis) Prague... Type ¨ + <space> 25 March 2003 Result Nothing ä Ä ö Ö . usually they are cased variants of each other More shift states available (AltGr.Shift states Only 47-48 physical keys to work with on the keyboard Shift states expand that number by many times For languages with casing. Ctrl) 25 March 2003 Prague. Czech Republic (IUC23) 12 . Czech Republic (IUC23) 13 .The Greek Keyboard. shifted and unshifted 25 March 2003 Prague. or be used for other purposes 25 March 2003 Prague. Czech Republic (IUC23) 14 . it acts like a typewriter caps lock) Generally used to get at shift state without having to press two keys concurrently Often used with cased languages May do nothing in languages without case.Caps lock Usually intended to be a persistent Shift keypress (in other words. and Hebrew keyboards Adds two additional shift states Only intuitive to people who understand the mechanism 25 March 2003 Prague. Czech Republic (IUC23) 15 . Czech.SGCap Advanced usage of the Caps Lock key Used by Swiss German. APIs keybd_event MapVirtualKey[Ex] OemKeyScan SendInput ToAscii[Ex] ToUnicode[Ex] VkKeyScan[Ex] The APIs allow developers to do the same mappings the OS does when moving between scan codes. Czech Republic (IUC23) 16 . and characters. 25 March 2003 Prague. VKs. ? 25 March 2003 Prague. etc. Czech Republic (IUC23) 17 .Factors in keyboard layout creation National/regional standard? What languages need to be supported? Is the set of characters needed for the language complete? Focus on code points and not glyphs? Do all required characters exist in Unicode? Consistent use of features such as dead keys. ligatures. they don’t! For CJK languages.com/platformsdk) 25 March 2003 Prague. Czech Republic (IUC23) 18 . even 47 keys X 8 shift states is not enough Different mechanisms and APIs are used for IME interaction More information can be found in the Platform SDK (http://msdn.Where do IMEs fit in? For most languages.microsoft. Czech Republic (IUC23) 19 .FAQs about keyboards Does Microsoft make these layouts up? How do I add every glyph for my language? Don’t I need an IME? How do I replace the layout for my language if I do not like the one provided? How do I add my own keyboard layout? 25 March 2003 Prague. or Win Server 2003 machines Save the definition of the keyboard for later development 25 March 2003 Prague. Czech Republic (IUC23) 20 .MSKLC Microsoft Keyboard Layout Creator Create new keyboard layouts: – Brand new layouts – Modified from existing keyboards Deploy the created keyboard layout to NT4. WinXP. Win2000. MSKLC demos 25 March 2003 Prague. Czech Republic (IUC23) 21 . com/globaldev/dis_v2/disv2.asp New! Developing International Software .Other References This tutorial's corresponding paper Windows Keyboard Layouts http://www.com/globaldev/dis_v1/disv1.com/globaldev/reference/keyboards.com/ Get on the MSKLC Beta! 25 March 2003 Prague. but still available on the web) http://microsoft.aspx Nadine Kano. Czech Republic (IUC23) 22 .microsoft. 2nd edition http://microsoft.asp Internationalization with Visual Basic http://i18nWithVB. Developing International Software (out of print. Questions? 25 March 2003 Prague. Czech Republic (IUC23) 23 . Don't forget to fill out your evaluations! Unicode and Keyboards on Windows 25 March 2003 Prague. Czech Republic (IUC23) 24 .