Прошел месяц, и вопрос встал ребром: надо. Полез в интернет, сделал звонок другу. Интернет сказал что проблема не у одного меня, сыпанул всяческими комбинациями клавиш, якобы заменяющих Ctrl + Break, и выдал кучу ссылок на софт, позволяющий переназначить как отдельные кнопки, так и их комбинации. Друг написал скрипт, переназначающий Ctrl + PrintScreen на Ctrl + Break. И все вроде бы стало хорошо минут на 15…
Через 15 минут я понял что ни куча софта ни скрипт не работают в терминальной сессии. Для того чтобы это там работало, нужно это устанавливать на самом сервере терминалов. А заказчиков, с которыми я работаю через терминал, изрядное количество, и не везде политика безопасности позволяет мне самому там что-то устанавливать, да и хлопотно это.
И тогда на глаза попалась пара статей про то, что можно отловить сканкоды клавиш и переназначить их прямо через реестр, не применяя никакого софта. Собственно софт для переназначения кнопок через реестр есть, но все что мне попалось, кнопку Pause/Break переназначить было неспособно, так как сканкоды обычных клавиш имеют 2 байта, а она -3 байта.
Беглый взгляд на клавиатуру довольно быстро уперся в правый Alt, которым я практически не пользуюсь. И понеслось…
Сканкоды клавиш можно определить с помощью утилиты http://www.law.net.ru/technologies/k_remap/KeyCode.exe.
Так, сканкод Break – E0 46, правый Alt – E0 38. Выше я упомянул, что клавиша Break имеет сканкод в 3 байта, но замена двухбайтного кода работает.
Открываем Regedit.
На всякий случай делаем архивную копию реестра. В принципе модификация реестра заключается в добавлении одного параметра, но - береженого Бог бережет.
Заходим в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
Добавляем двоичный параметр ScanCode Map
Формат записи Scancode Map
00 00 00 00 |
00 00 00 00 |
02 00 00 00 |
46 E0 38 E0 |
00 00 00 00 |
00 00 00 00 |
00 00 00 00 |
всегда нули |
всегда нули |
Число замен +1 |
первая замена |
вторая замена |
третья замена |
всегда нули |
"Число замен +1" - если одна замена, 1+1 = 2, заменить можно до 3х клавиш. Если замен меньше 3х, свободное место забиваем нулями.
Замены клавиш записываются в формате "два байта нового кода кнопки в обратном порядке" "два байта старого кода кнопки в обратном порядке".
В моем случае в поле «Первая замена» заносим: 46 E0 (два байта Break в обратном порядке) 38 E0 (два байта правый Alt в обратном порядке), поля «Вторая замена» и «Третья замена» заполняем нулями.
Закрываем реестр с сохранением изменений.
Перезагружаемся.
Теперь правый Alt работает как кнопка Break, прерывать выполнение отчетов и обработок можно комбинацией клавиш Ctrl + правый Alt.
Использованы следующие источники:
http://www.law.net.ru/technologies/k_remap/index.htm
P.S. Спасибо Kom-off за написание скрипта переопределения клавиш.