Microsoft Keyboard Layout Creator

m_grant's picture

I'm not sure if this is the best forum for this but a number of folks here seem to have experience with the Microsoft Keyboard Layout Creator tool.

I'm trying to create a keyboard layout which includes some of the more useful unicode characters. Mostly I am doing this for myself but if anyone wants it, I'll be happy to send them the layout. It's based originally on a US keyboard layout.

I would like to use the caps-lock key as another shift key. I see there is a way to use it as SGCAPS mode in the keyboard creator. But the key still functions as a locking toggle. As in, you press the caps-lock key and you're in caps-lock mode, then you press it again and you are out of the mode. Is there any way to create a keyboard layout where this key is not a toggle?

Michael Grant

frankrolf's picture

I have completed a fairly large project on pi fonts, which involved creating many of keyboard layouts for these fonts.
To facilitate my work, I have written a Python script that will convert a Mac-XML keyboard layout to Windows KLC format – thus I am fairly familiar with its peculiarities.

At ATypI 2011, I had the chance to talk about the project, and also promised that this conversion script will one day be part of the Adobe FDK. While this is still true, I have no idea how quickly this will happen.

I am still planning to do a write-up about all that work on Typblography and plan on including my presentation PDF.
Please get in touch with me if you would like to have the PDF earlier, the script, or both.


hrant's picture

Frank, this all sounds great! I hope it clicks soon.
Could you send me the materials also? hpapazian at gmail dot com


frankrolf's picture

To answer your original question – you might consider using a key other than Caps Lock – for instance the right option key, or option-shift. Both those shift states are empty in the standard US layout.

Hrant, I would like to send out this document in an ‘official’ manner; I am not yet decided on how to do it – please watch this space and/or Typblography. I will keep you updated.

m_grant's picture

I've already used the alt-gr keys as a sort of compose key in my keyboard layout. Here's what I've been working on:

The goal of my layout was to extend the US keyboard. All the original keys sequences are unchanged (including ctrl-keys). Everything that was added was with the addition of the alt-gr key.

It's not yet complete in my opinion but it's quite usable (though one could question *what* exactly you would need all these characters for!) However, I must admit in my day to day life, I do find myself using several of these characters (like € and £ and ≠), especially as they are easily accessible from my keyboard in more or less logical places.

However, there are a few other characters I'd like to add to this mapping and I'm starting to lack a logical place to put them.

It would be useful if I had another shift state. Is there a way to get it to work like holding down a shift/ctrl/alt-gr key? Or is it always a toggle?

It would also be useful if I could create "dead-dead" keys so I could, for example, create a key sequence like alt-gr . . . to produce an ellipsis '…'.

If I can't do these things with the Microsoft Layout Creator, is there some way I could create the required DLL from c# myself?

I also have seen the Japanese keyboard which does a pretty cool thing of allowing the user to choose a character by composing it from the phonetics. Perhaps I could use this method, but is there a tool to create those sort of mappings like the Layout Creator?

Michael Grant

hrant's picture

Frank: sounds good.


frankrolf's picture

MSKLC is/has been a spare-time project by Michael Kaplan et al. at Microsoft (AFAIK); therefore it does not get a lot of maintenance. I think it is not possible to create a ‘smart’ keyboard like the Japanese one with the tool’s capabilities.
There is another editor called ‘KBDedit’, which definitely can do some more things; but I am not sure if you can go as far even with that one.

In fact, the idea a keyboard with a lot of alternative characters idea is quite widespread; multiple shift states come with every Mac keyboard layout (for accessing lower-use characters like † … £ ¢ etc.).
Those keyboards usually use four shift states:

– unshifted
– shift
– alt
– alt+shift

The state you are still missing in your project (and that would give you room to accommodate a whole buch of characters) is alt-shift.

m_grant's picture

Thanks for the tip! I bought a full copy of KBDedit to play with it. It's fairly complete, it has some nice features in that it looks like one can modify the keymap in real time. It's also easy to add in several other modifier shift keys. Like I could turn the useless Menu key into a Kana key and have a few more shift states (kana, kana-ctrl, kana-shift, kana-shift-ctrl).

I did not see how to use KBDedit to add dead-dead keys, but it almost looks like it should be possible.

Yes, you're right, I could just add more shifted states. I may have to do that. However, I'm trying hard to keep things where I'll remember them. It's logical to remember to do something like alt-~, =, / to produce ≇. alt-~, = produces this on my kb: ≅. Yah, I guess I could do alt-~, kana-=, but it's not terribly memorable.

Are there tools that let one build japanese style keyboards like KBDedit and MSKLC?

frankrolf's picture

The promised material (my ATypI presentation and conversion script) is now online on Adobe Typblography.
I hope for it to be useful.

m_grant's picture

KbdEdit can do chained dead keys, so this solves my problem perfectly.

Jens Kutilek's picture

Thanks! Also I didn’t know that your tools to read/store TrueType hints externally were available.

ilyaz's picture

I've already used the alt-gr keys as a sort of compose key in my keyboard layout. Here's what I've been working on:

The goal of my layout was to extend the US keyboard. All the original keys sequences are unchanged (including ctrl-keys). Everything that was added was with the addition of the alt-gr key.

I (finally!) added Compose key to my keyboard layout(s). Now on Windows they have everything I wanted to have when I started this project 2 years ago. — But, of course, during these 2 years my goals have changed, and now, again, just a small fraction of what I want is implemented. (But most of the infrastructure is there, so additions should be much easier now — I hope!)

The code to count the number of available characters is broken by the updates of the recent months; I think that about 3⎖500 characters are accessible without Compose, and maybe a thousand more with. The current state is summarized in the progress report section of the docs.

Now the major goals is to bring the docs up to an appropriate level, and fix all Windows applications with broken keyboard input handling (yes, ALL the applications I checked do it wrong; and, yes, I think I know the right way — which, of course, is not documented anywhere — or at least further than my Google-fu goes…).

mridul_ks's picture

Hi Frank!

I have designed and developed a keyboard for Mac OS X for Assamese language which is my mothertongue. I have designed it after researching on a sample of 34lacs characters. Here, I have used option key as a one of the shift states. It is working fine and many people are using it.

Now, many people are asking a version of it for Windows. I have designed one using MSKLC. It works fine while typing in internet browsers but problem arises while typing in MS word/ Writer etc because I used the ctrl key as one shift state. As MSKLC does not allow to use the alt key. But using the alt key is very essential for the layout that I have designed.

While searching in the net, I found the conversion script that you have written and tried it. But unfortunately it is showing certain errors. I do not know php. One my friends helped me by rectifying few indentation errors. But the problem is still there and am unable to generate the .klc file. This script would be a great help to me as I am planning to develop keyboards for all the major Indian languages. For me developing the keyboard with the help of Ukelele is easy and if I could export them into .klc through your script it would be of great help to us. Its worthy to mention that I am doing it for free for the people.

I would be grateful to you if you could help me in this matter. I can send the mac keyboard layout file to you for testing. Or the keyboard layout can be found here -->

Thanks in advance.

Mridul Kumar Sharmah

Syndicate content Syndicate content