Переназначение клавиш на клавиатуре (22.03.2021). Печать
2021 - Март
22.03.2021 19:10
Save & Share
Клавиатура и мышь - достаточно интимные вещи, в контексте привыкания. За заменой клавиатуры следует неделя адаптации к новым размерам клавиатуры, формы кнопок и т.д. Но можно отсрочить замену клавиатуры несколькими способами. Один из них, помимо промывания клавиатуры дистиллятом без разборки, - переназначение клавиш в случае их поломки.

Пусть умерла кнопка; например, TAB. Не дублируется на клавиатуре - по факту, ее нужно выбрасывать. Но есть способ переназначения клавиш на клавиатуре - и можно клавишей Ё нажимать TAB, не заморачиваясь с выбором и приобретением новой клавиатуры.

Так был затроллен один из заказчиков, чтобы его тупые операторы не могли нажимать Ctrl+Alt+Delete: клавиши Alt были выведены из обращения, т.к. на них был назначен Right Shift.

Делается через реестр:
- HKEY_LOCAL_MACHINE;
- SYSTEM\ControlSet001\Control\Keyboard Layout;
- бинарный параметр Scancode Map.

Алгоритм заполнения:
    for (int i=0; i<8; i++) byteRemap[i] = 0x00; //Вступительные нулевые 8 байтов.
    byteRemap[8] = 0x03; //Число изменений клавиш (пар) + 1. По факту - ни на что не влияет, можно и 0 написать.
    for (int i=9; i<12; i++) byteRemap[i] = 0x00; //Промежуточные нулевые 3 байта.
    byteRemap[12] = 0x36; byteRemap[13] = 0x00; //На что заменить (правый Shift).
    byteRemap[14] = 0x38; byteRemap[15] = 0x00; //Что заменить (левый Alt).
    byteRemap[16] = 0x36; byteRemap[17] = 0x00; //На что заменить (правый Shift).
    byteRemap[18] = 0x38; byteRemap[19] = 0xE0; //Что заменить (правый Alt).
    for (int i=20; i<24; i++) byteRemap[i] = 0x00; //Заключительные нулевые 4 байта.