Ноутбуки DELL против Обработка Прерывания Пользователя()
Не так давно я заменил старый рабочий десктоп на ноутбук DELL. Клевый, быстрый, удобный, но еще перед покупкой озадачился одним интересным вопросом: а где кнопочка Pause/Break? Прерывание всяческих отчетов и обработок по Ctrl + Break приходится делать достаточно часто…
- Описание
- Подробнее
Описание
Прошел месяц, и вопрос встал ребром: надо. Полез в интернет, сделал звонок другу. Интернет сказал что проблема не у одного меня, сыпанул всяческими комбинациями клавиш, якобы заменяющих 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 за написание скрипта переопределения клавиш.

