Как переназначить клавиши клавиатуры Right-Win и Right-Alt

1380
Gerold Broser

... особенно на клавиатуре Unicomp Ultra Classic Buckling Spring .

Я недавно купил одно из этих возрождений IBM Model M. Отличная клавиатура с одним небольшим недостатком: здесь нет клавиш Power, Sleep, Wake и довольно большой недостаток: они решили поменять местами клавиши Right-Win и Right-Alt, чтобы они выглядели так:

  Space    Alt  Ctrl

Конечно, с многолетним использованием другого макета это неудобно.

Я попробовал Microsoft Keyboard Layout Creator (MSKLC) 1.4, но он отказывается работать должным образом на моей 64-битной Windows 7 Professional: он не отображает макет после ФайлЗагрузить существующую клавиатуру ... :

Empty MSKLC

См. Также Любые идеи, почему Microsoft Keyboard Layout Creator 1.4 отказывается работать должным образом на моей 64-разрядной версии Windows 7 Professional? ,

1
просто для вашей информации: используя RemapKey-Tool из Windows Server 2003 Resource Kit Tools, вы можете переназначить ключи без изменения реестра вручную. Я на самом деле собираюсь сделать это, когда прибудет мой второй Ultra Classic (этот новый макет настолько глуп ...) MFH 7 лет назад 0
@MFH Спасибо за информацию. Хотя я это знал. Реальная проблема заключается в том, что мне приходится устанавливать / сбрасывать настройки реестра и перезагружаться каждый раз, когда я хочу переключиться на внутреннюю клавиатуру моего ноутбука и наоборот. С MSKLC я мог переключать «язык» и назначенную ему раскладку клавиатуры на лету. Gerold Broser 7 лет назад 0
Хорошо, это, очевидно, проблема - но как MSKLC это исправить? В прошлый раз, когда я попробовал это, он не позволил переназначить WinKeys ... MFH 7 лет назад 0
@MFH Да, это именно то, что я прочитал в комментариях / ответах на вопросы, касающиеся этого, и я хотел попробовать, верно ли это до сих пор. Gerold Broser 7 лет назад 0

1 ответ на вопрос

1
Gerold Broser

Поскольку Microsoft Keyboard Layout Creator (MSKLC) 1.4 не работает должным образом, вы можете использовать следующее низкоуровневое решение, основанное на информации о немецком языке WinFAQ .

Создайте следующие два .regфайла в любом текстовом редакторе и поочередно выполните их, чтобы загрузить данные ключи / значения в реестр Windows:

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 

Обратите внимание на обратный порядок LSB (младший значащий байт) и MSB (старший значащий байт) в пределах 2 байтов скан-кода, то есть little-endian . Обратите внимание также на символ обратной косой черты ( \) для продолжения строки.

Вы должны перезагрузить Windows / перезагрузить компьютер, чтобы изменения вступили в силу.

Техническая информация

Scancode Map запись:

┌──────────┬──────┬─────────────┬───────────────────────────────────────────────────┐
│ 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 | 0m 00 00 00 │ Header: mappings count[c] + 1 [for the trailer] │
│ 12 … s │ c×4 | LN¹HN²LO HO │Н ew /Оld scancodes in little-endian byte order │
│ t … t+3 │ 4 | 00 00 00 00 │ Trailer (t = s + 1 = 12 + c × 4) │
└──────────┴──────┴─────────────┴───────────────────────────────────────────────────┘

¹ L ... младший байт, младший байт (LSB)
² H ... старший байт, младший байт (MSB)

См. Следующие страницы / документы для сканирования кодов:

@ barlop Я не уверен, приветствуется ли здесь на англоязычном SE немецкий источник, от которого я это получил. Что именно вы подразумеваете под "как вы это произвели"? С простым текстовым редактором? Запятые являются разделителями в серии слов. За свою 38-летнюю жизнь в качестве разработчика я никогда не видел ни одного языка программирования - и я видел немало - с передачей параметров, содержащей расширение файла `.reg`. Если они вам не нравятся, смело меняйте их в соответствии с вашими предпочтениями при сохранении файлов. Gerold Broser 7 лет назад 1
Суть в том, откуда вы взяли, что существует последовательность из приблизительно 8 пар нулей, за которыми следует код 38 e0 5c ..., за которым следует определенное число 00. Как вы узнали, сколько 00 перед кодом и сколько после ... как вы узнали, какой код между ними. Вы ничего не говорите об этом. barlop 7 лет назад 0
И что касается вторичного пункта. Когда вы читаете это громоздкое имя файла, вы даже можете увидеть, что это имя файла. До этого похоже, что он может передавать параметры программе частично, потому что редко можно ставить запятые в имени файла. barlop 7 лет назад 0
@barlop [есть источник] (http://www.winfaq.de/faq_html/Content/tip1500/onlinefaq.php?h=tip1575.htm). SE это совместный сайт. Не стесняйтесь редактировать все, что вы хотите. До свидания! Gerold Broser 7 лет назад 0