3

... on a Unicomp Ultra Classic Buckling Spring keyboard in particular.

I recently bought one of these IBM Model M revivals. A great keyboard with one slight flaw: there are no Power, Sleep, Wake keys and a rather big flaw: they decided to swap the Right-Win and the Right-Alt keys so that it looks like:

  Space    Alt  Ctrl

With many years of using a different layout this is uncomfortable, of course.

I tried Microsoft Keyboard Layout Creator (MSKLC) 1.4, but it refuses to work properly on my Windows 7 Professional 64-Bit: it doesn't display the layout after FileLoad Existing Keyboard...:

Empty MSKLC

See also Any ideas why Microsoft Keyboard Layout Creator 1.4 refuses to work properly on my Windows 7 Professional 64-Bit?.

Glorfindel
  • 4,089
  • 8
  • 24
  • 37
Gerold Broser
  • 481
  • 6
  • 25
  • just for your information: using the RemapKey-Tool from the Windows Server 2003 Resource Kit Tools, you can remap the keys without manually altering the registry. I'm actually going to do that when my second Ultra Classic arrives (this new layout is so stupid...) – MFH May 03 '17 at 22:21
  • @MFH Thanks for the info. Though, I knew that. The real issue here is that I have to set/reset the Registry settings and reboot every time I want to switch to my laptop's internal keyboard and vice versa. With MSKLC I could switch the "language" and its assigned keyboard layout on the fly. – Gerold Broser May 04 '17 at 10:33

1 Answers1

3

Since Microsoft Keyboard Layout Creator (MSKLC) 1.4 fails to work properly you can use the following low-level solution that is derived from information on (German) WinFAQ.

Create the following two .reg files with a text editor of your choice and execute them alternately to load the given keys/values into your Windows' Registry:

HKLM^SYS^CCS^CTRL^Kbd_Layout^Scancode_Map#Swap_R-Win_R-Alt.reg

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:\
  00,00,00,00,\
  00,00,00,00,\
  03,00,00,00,\
  38,e0,5c,e0,\
  5c,e0,38,e0,\
  00,00,00,00

HKLM^SYS^CCS^CTRL^Kbd_Layout^Scancode_Map#Reset.reg

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:\
  00,00,00,00,\
  00,00,00,00,\
  01,00,00,00,\
  00,00,00,00

Note the reversed order of LSB (least significant byte) and MSB (most significant byte) within the 2 bytes of a scancode, a.k.a. little-endian. Note also the backslash character (\) for line continuation.

You have to restart Windows/reboot your machine for a change of mappings to take effect.

Technical Background Info

Scancode Map entry:

Bytes Size Values Description
0 … 3 4 00 00 00 00 Header: Version info, always all 0
4 … 7 4 00 00 00 00 Header: Flags, always all 0
8 … 11 4 LM¹HM²00 00 Header: Mappings count (c) + 1 (for the trailer)
in little-endian byte order, i.e. at least 01 00 00 00
12 … s c × 4 LN¹HN²LO HO New / Old scancodes
in little-endian byte order (s = 11 + c × 4)
t … t+3 4 00 00 00 00 Trailer (t = s + 1 = 12 + c × 4)

¹ L ... low byte, least significant byte (LSB)
² H ... high byte, most significant byte (MSB)

See the following pages/documents for scancodes:

UPDATE

MSKBLC works with Windows' DPI Settings of 100 % only (see Sam Arutuk's answer to my question Any ideas why Microsoft Keyboard Layout Creator 1.4 refuses to work properly on my Windows 7 Professional 64-Bit?):

MSKBLC...working with 100% DPI

Apparently the keys can't be remapped.

Glorfindel
  • 4,089
  • 8
  • 24
  • 37
Gerold Broser
  • 481
  • 6
  • 25