MSKLC Suggestions

by Michael S. Kaplan, published on 2005/09/15 10:01 -07:00, original URI:

Christoph Päper posted the following to the Suggestion Box (my comments interspersed, which include some thoughts on why things are as they are today, which is not to say they may not be different in the future!):

I know, MSKLC, which is a program I had long been waiting for, is an unsupported piece of software, but maybe you are interested in my remarks anyhow.

Always! Feedback is always appreciated.

For what it is worth, large parts of the functionality of MSKLC is a wrapper around the core functionality in Windows related to keyboarding and thus there is very little about what it does that can be called unsupported....

IMHO MSKLC needs improvement in one crucial area: documentation of the generated keyboard layouts.

The first issue is that it only generates JPEGs instead of artefact-less PNGs or GIFs (eight colours are enough anyway). For some users they also do not look similar enough to a real keyboard. It would also be nice if KLC could make pictures of all shift states at once, or even combine them in a MNG or animated GIF. OTOH you may not want pictures at all, but for example an HTML table resembling the keyboard—I always wanted to write a .klc parser for this task myself, but somehow haven’t gotten far with that yet. In both cases, bitmap and HTML, I’d like a combined view where each key has four cells: normal in the lower left, shifted in the upper left, AltGr in the lower right and shifted AltGr in the upper right; with different colours for dead keys. Yes, that leaves out SGCaps, but is the style current (hardware) keyboards are using, at least in ‘Latin Europe’. You would probably also need a feature to get an overview of dead key combinations, but I’m not sure how that should look like.

More sophisticated methods of documentation are definitely a possible item to consider for the future, but I am not sure it would necessarily take the route you suggest here -- considering each key can take up to four WCHARs per shift state, a keyboard that can fit sixteen characters and sufficient space between them is a tall order, and the dead key situation is also not a trivial one.

Dynamic HTML like that used by the Windows Keyboard Layouts site is a possibility, but the magic behind such sites is a huge image cache of letters, which would presumably have to ship with the keyboard?

One of the things that kept there from being a more comprehensive story around documentation is the fact that there are no easy answers, and there were many people who were wanting the solution to be available without delay. There are compelling features being considered for the next version and I won't claim that this is not one of those features under consideration, but there is some stiff competition!

Furthermore I miss the possibility to assign the actual glyphs that are printed on the ‘÷’, ‘×’ (or ‘·’) and ‘−’ keys to their shift or AltGr states; likewise ‘A’–‘F’ to ‘0’–‘5’. (Nobody seems to want to produce keyboards with hexadecimal numpads.) Only ‘.’ on ‘,’ works right now.

Definitely worthy of consideration. This sort of limitation is probably more of a side effect of the mission of the tool being priomarily focused on language support and the ability to design keyboards for languages we have not yet gotten to -- thus "getting out of the way". The other factor that makes it a tough feature to work on is the amount of screen real estate that it would take up, and the resolution that would be required to support such a keyboard....

Why can’t I click on the symbolic Shift, Caps/Shift Lock, Ctrl, Alt and AltGr keys to see that state? They don’t even change colours when they’re the active view. I can understand that hitting them on the real keyboard doesn’t work, because they might be needed for accelerators etc.

It is something of a self-referential tool -- a keyboard layout creator that looks something like a keyboard. We actually tried many different designs, including ones along the lines you are suggesting here and ones that would allow a layout to be tested directly as if it were a soft keyboard, and many of these attempts produced a tool that was simply too difficult to use. I will forward the suggestions on though (as well as your other suggestions) as they may spark other ideas that could overcome those issues.

Unlike some other customisations (‘skins’ etc.) there seems to be no ‘central’ place to promote and distribute one’s keyboard layouts on the Web. If we wanted to change default keyboard layouts to something better such a place would be much needed, IMHO, and it should provide the aforementioned documentation for each .klc. Therefore it’s better if it’s compiled uniformly by KLC itself and not by some homebrew or third-party program.

The community aspect of this suggestion does indeed have a lot of appeal. There are of course many complex technical and legal issues to work through before such a thing could happen, but it is a worthy goal and the potential of such a site is fascinating to contemplate. Another great idea....

Finally, what does anyone need Caps Lock for nowadays? Text in uppercase or small-caps is (or should be) handled on an application or font level.

I am not sure what this last part is to do with MSKLC though -- changing the fundamental nature of applications to require them to handle the CAPS LOCK is not something that MSKLC can drive, or even ponder -- and also there are many times that CAPS LOCK is not used for case distinctions (plus there are things like SGCAPS that are an even more complex usage). I do not know of any case where the need for different shift states to hold case distinctions is not a fundamental requirement of a keybioard for scripts that have such distinctions, or how MSKLC (a mere wrapper around the functionality in Windows) could change that architecture.

But there are some great suggestions in this post, definitely worthy of consideration. Thank you very much for the feedback!

# Jonas Grumby on Thursday, September 15, 2005 2:48 PM:

Your Windows Keyboard Layouts link 404's. It looks like it moved to I don't even know what an mspx file is.

# Michael S. Kaplan on Thursday, September 15, 2005 2:53 PM:

Thanks Jonas -- updated the link in the article and the one on the link list.

# Shai on Tuesday, September 20, 2005 2:05 PM:

There is no reason why the Caps-Lock can't be mapped within the layout. A 3rd party tool, Keyboard Layout Manager 2000 Demo, can do exactly that.

The only IME I know that uses Caps-Lock is the Hebrew layout for the diacritics (nobody uses it anyway).

See also:

# Michael S. Kaplan on Tuesday, September 20, 2005 2:23 PM:

Hi Shai -- Actually, you are quite mistaken about both the use of the CAPS LOCK key and of the SGCAPS feature, which is used in several different keyboard layouts on Windows.

But in any case, then notion that a fundamental change in MSKLC is what would somehow solve the problem is ludicrous. This is a core OS issue that would break all existing applications.

# Shai on Tuesday, September 20, 2005 3:53 PM:

Michael, Can you give me examples where the Caps-Lock key would be critical for input, and holding Shift or Shift-AltGr wouldn't work?
I've typed in over 40 languages (albeit mostly languages with the Latin alphabet) and not one required the Caps-Lock key.

It's not a core OS issue. I've been remapping Caps-Lock for 2 years now, and every single application works. Repeating my comment above, it can be done with 3rd party layout editor by changing the layout DLL file without making any changes to other system files. There's no technical reason why MSKLC shouldn't be able to do it.

Why Caps-Lock key is evil:
(you can Google for more)

# Michael S. Kaplan on Tuesday, September 20, 2005 4:15 PM:

I would recommend downloading MSKLC and loading the Swiss German, Hebrew, Czech, or any other layout that uses SGCAPS. Telling people that the way they type is wrong, if it is what they are used to, is irreponsible. I have no problem withy developers who don't like something, but they must show respect for their customers' preferences here, and many people LIKE the caps lock key.

# Michael S. Kaplan on Tuesday, September 20, 2005 4:44 PM:

Also, I will blog about this point further tonight or tomorrow....

# Shai on Tuesday, September 20, 2005 5:03 PM:

Michael, "Customers' preferences" is the keyword here. While SOME people like the Caps-Lock key, MANY don't. A ridiculously high percentage of password/login related problems is caused by the Caps-Lock key. If there's no technical limitation (and as I stated before, there isn't), there's no reason to force that preference on everybody.

According to my research if you use the Dvorak keyboard layout and you have a have 4% typing error rate (estimated average), then the Backspace key alone accounts for a whopping 25% of all finger movement distance. By remapping Caps-Lock to Backspace you can reduce finger movement distance (and therefore RSI) by about 20% (about 12% on QWERTY).

MSKLC is a tool used by power users. Many power users would like to have the ability to remap the Caps-Lock key and there's no good reason to prevent them doing so.

In Swiss German and Czech, everything can be typed using Shift-AltGr, so the Caps-Lock isn't necessary. In Hebrew almost no-one uses the diacritics uses anyway. Hebrew's my mother tongue, and I had Caps-Lock remapped for two years, and I didn't miss the diacritics feature. In fact, I'd estimate that less than 1% of the users know it's possible to type them.

# Michael S. Kaplan on Tuesday, September 20, 2005 5:07 PM:

It is still not something for MSKLC to solve! If you need to change the world, then there must be a more appropriate place to change the way it works.

In any case, you do not fully understand the language issues if you do not understand why there are times that an entirly new PAIR of shift states is desired. It is not just the Hebrew points that are at issue here.

# Shai on Tuesday, September 20, 2005 8:29 PM:

Michael, I don't want to change the world, I want to change a single key, and I think it's ridiculous to have to pay 50 euros for a 3rd party tool to do it (okay, I do want to change the world, but that's not the point here).
You're missing the whole point. It doesn't matter at all if "there might be times that an entirely new PAIR of shift states is desired" (although you still didn't come up with one good example). For at least 95% of the languages it isn't. And it's not the end of the world if those shift states become inaccesible in certain layouts. If you really needed them, you'd switch to another layout with the Caps-Lock enabled.

The limitation of not being able to remap the Caps-Lock in MSKLC is an arbitrary limitation and not a technical limitation of Windows or the keyboard DLL files. If you really think the Caps-Lock key is essential, you could add a warning dialog, e.g. "WARNING: YOU'RE CHANGING CAPS LOCK KEY. YOU WON'T BE ABLE TO TYPE LIKE THIS ANYMORE!" and let the user decide. Again, MSKLC is used by power users, and not by Joe Blow.

I must add that Windows is the only operating system that uses executable binaries for keyboard layouts, so it needs a tool like MSKLC. All other modern OS have plain text file for keyboard layouts, and they don't place any arbitrary limits.

# Michael S. Kaplan on Wednesday, September 21, 2005 12:26 AM:

Shai, since the whole world has keyboards with a CAPS LOCK key, and since I hsve given examples already, I think I will bow out of this particular hijacking of the purposes of the post.

The reason behing MSKLC is *language* support, not a cure for people with CAPSLOCK-itis. but if you want the capslock to hsve no impact you can do it in MSKLC.

So, since the tool I wrote will solve the problem, can we move on now?

# Philip Thomas on Sunday, September 25, 2005 5:49 PM:

MSKLC is a flexible and easily useable tool for setting up a keyboard for special uses with more esoteric languages or scripts. It avoids having to rely on dubious workarounds. (And it works even for, and indeed especially for, CAPSLOCK haters!) But I would love to be able to assign characters to all of the keys in the numeric keypad and not just the decimal separator.

# Michael S. Kaplan on Sunday, September 25, 2005 8:13 PM:

Of course that would probably kill the whole 800x600 support thing. :-)

# victor on Tuesday, October 04, 2005 1:33 AM:

hi i want to know whether we can do transliteration though this tool for other language.... if there is any other tool for windows is available then pls tell me

# Michael S. Kaplan on Tuesday, October 04, 2005 1:44 AM:

Hi Victor,

MSKLC is not really a transliteration tool, no. I do not know of any specific tool that does that, myself....

# Philip Thomas on Wednesday, October 05, 2005 3:27 PM:


Thanks for replying to my comment. Your reply rocketed past me, but then my technical expertise is minimal. My guess was that you were saying something about the amount of space on the screen, but maybe I've got that wrong. I suppose I thought that a new or popup screen with the numeric keypad keys on it would do the trick, if there's not enough space, but there's probably something deeper behind your reply that escaped me -- my apologies if that's the case.

The reason for my comment was just that I don't need any numbers at all for the keyboard I want to set up, and all those spare keys are very tempting.

Anyway, the third party software workarounds do a sort of decent job, so I guess I'll persevere with one of them even though it bothers me having to run an extraneous program in the background all the time when MSKLC would do away with that stuff.

Cheers, Philip

# Michael S. Kaplan on Wednesday, October 05, 2005 3:44 PM:

Hi Phillip -- you had it right, I was talking about screen resolution. Personally I would be happy to go up in resolution here, it would certainly make such support easier.

So perhaps you can look forward to a future version.... :-)

Please consider a donation to keep this archive running, maintained and free of advertising.
Donate €20 or more to receive an offline copy of the whole archive including all images.

referenced by

2006/01/26 MSKLC and 64-bit

2005/09/21 Some people hate the CAPS LOCK key

go to newer or older post, or back to index or month or day