Title: Unicode and Keyboards on Windows
1Unicode and Keyboards on Windows
- Michael KaplanCathy Wissink
Globalization Infrastructure and Font
Technology Windows International Microsoft
2Who 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
3Keyboards are simple, right?
- Fonts
- Rendering engines
- 135 different locales on Windows
- Custom keyboard layouts
- Turns out they are not so simple!
4Keyboard Layout, defined
- A collection of data for each keystroke and shift
state combination with a particular keyboard
driver (DLL) - In other words, it is not the keyboard hardware
but the software that connects the hardware to
the system
5Anatomy 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, the DLL maps the VK/shift state to
characters (if they are assigned)
6(No Transcript)
7Language features
- single character keystrokes
- ligatures
- dead keys
- shift states
- SGCap
- Caps lock key
8Ligatures
- For keyboard layouts, not the same as the
typographic/linguistic term - A combination of 2 to 4 UTF-16 code points
inserted by a single keystroke
9Examples of ligatures on keyboard
Tamil keyboard in the shifted state, showing
linguistic characters Sri, Ksa, and others as
ligatures
10Dead 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
11Dead key exampleDiaeresis on the Finnish
keyboard
- Input keys
- Type (deadkey)
- Type a
- Type A
- Type o
- Type O
- ...
- Type ltspacegt
- Result
- Nothing
- ä
- Ä
- ö
- Ö
- ...
- (spacing diaeresis)
12Shift states
- Only 47-48 physical keys to work with on the
keyboard - Shift states expand that number by many times
- For languages with casing, usually they are cased
variants of each other - More shift states available (AltGr, Ctrl)
13The Greek Keyboard, shifted and unshifted
14Caps lock
- Usually intended to be a persistent Shift
keypress (in other words, 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, or be
used for other purposes
15SGCap
- Advanced usage of the Caps Lock key
- Used by Swiss German, Czech, and Hebrew keyboards
- Adds two additional shift states
- Only intuitive to people who understand the
mechanism
16APIs
- keybd_event
- MapVirtualKeyEx
- OemKeyScan
- SendInput
- ToAsciiEx
- ToUnicodeEx
- VkKeyScanEx
- The APIs allow developers to do the same mappings
the OS does when moving between scan codes, VKs,
and characters.
17Factors 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, etc.?
18Where do IMEs fit in?
- For most languages, they dont!
- For CJK languages, 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.microsoft.com/platformsdk)
19FAQs about keyboards
- Does Microsoft make these layouts up?
- How do I add every glyph for my language?
- Dont 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?
20MSKLCMicrosoft Keyboard Layout Creator
- Create new keyboard layouts
- Brand new layouts
- Modified from existing keyboards
- Deploy the created keyboard layout to NT4,
Win2000, WinXP, or Win Server 2003 machines - Save the definition of the keyboard for later
development
21MSKLC demos
22Other References
- This tutorial's corresponding paper
- Windows Keyboard Layoutshttp//www.microsoft.com/
globaldev/reference/keyboards.aspx - Nadine Kano, Developing International Software
(out of print, but still available on the
web)http//microsoft.com/globaldev/dis_v1/disv1.a
sp - New! Developing International Software , 2nd
editionhttp//microsoft.com/globaldev/dis_v2/disv
2.asp - Internationalization with Visual
Basichttp//i18nWithVB.com/ - Get on the MSKLC Beta!
23Questions?
24Don't forget to fill out your evaluations!
- Unicode and Keyboards on Windows