by Michael S. Kaplan, published on 2005/12/29 21:01 -05:00, original URI: http://blogs.msdn.com/b/michkap/archive/2005/12/29/508124.aspx
When MSKLC was first developed, it had no validation step, and no warnings. But then as Simon Earnshaw, Cathy Wissink, and I were getting more involved with the process of creating this tool that was going to make it so much easier to create new layouts, we reached a realization.
While it may be a bit too draconian to simply block people from doing things that do not fall in the category of our "best practices" (especially when scenarios may alter those practices!), at least adding in warnings would allow a little bit of social engineering to take place. People would be gently encouraged to avoid creating layouts that could cause problems out in the wild.
Here are the warnings that exist in MSKLC today (this is from the MSKLC help file, in the topic entitled 'Validation Reference'):
Warnings
Warnings will not block the building of the keyboard but indicate potential problems that should be reviewed and corrected as appropriate. Warnings include:
Defined character(s)
- Character defined exclusively on a key that may not be present on all keyboards.
- An unpaired surrogate code point was defined.
Caps Lock/AltGr+CapsLock
- Marked to be the same as SHIFT, but the characters do not appear to be cased versions of each other
- Marked to be different than SHIFT, but the characters appear to be cased versions of each other
Caps Lock/SCGAPS
- SGCaps and CapsLock are both specified on the same Virtual Key
Layout table
- Character is not contained in the Windows code page of the specified language
- Character is defined more than once in the layout
Ligatures
- Not all characters in ligature are contained in the Windows code page of the specified language
Dead Keys
- Dead key table is empty
- Dead key defined on a ligature
- Dead key without defined name
- Dead key's base character does not exist in the keyboard layout
- Combining character is not contained in the Windows code page of the specified language
- Last entry in a dead key table should use a space as its base character
CTRL/SHIFT + CTRL shift states
- Unicode control characters defined in CTRL shift states
Looking at things today, MSKLC has revolutionized keyboard layouts internally as well!
These days when subsidiary contacts have new keyboards that they want to be added to Windows based on new standards they have to also provide the .KLC file with the layout. And as we have been picking up keyboards for the Vista release, we have been getting even more ideas for validation warnings -- because when mistakes are easy to make, people will make them and that can hardly be considered their fault.
All of thses issues apply to customers outside of Microsoft just as much as they do to these internal contacts, so they do make sense to add.
Future posts in this series will talk about some of these new issues that have come up, and which may well be added to the validation process in upcoming releases of MSKLC....
This post brought to you by "ଊ" (U+0b0a, a.k.a. ORIYA LETTER UU)
# Centaur on 29 Dec 2005 11:48 PM:
# Michael S. Kaplan on 30 Dec 2005 12:29 AM:
# Crissov on 31 Dec 2005 7:23 AM:
# Michael S. Kaplan on 31 Dec 2005 10:09 AM: