1

Тема: OFF: переназначение клавиш с помощью записи в реестре (2000/XP/2003)

Существующая раскладка клавиатуры может по разным причинам не удовлетворять пользователей. В комплекте с мультимедийными клавиатурами идут специальные утилиты, позволяющие переназначать клавиши или привязывать к клавишам различные действия. Но если такой утилиты нет под рукой или у вас не мультимедийная клавиатура, можно воспользоваться описанной здесь методикой.

В ветви реестра
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
создайте двоичный параметр с именем "Scancode Map". Для начала необходимо знать, какое количество клавиш вы хотите переназначить. В параметр "Scancode Map" записываем следующие значения: 00,00,00,00,00,00,00,00,02. Последний (девятый) байт в этой записи обозначает количество клавиш и равен количеству клавиш +1, т.е. если стоит 02, то переназначена одна клавиша, если 03, то переназначены две клавиши и т.д. Далее дописываем еще три нулевых значения. Теперь параметр "Scancode Map" выглядит так: 00,00,00,00,00,00,00,00,02,00,00,00. Далее необходимо определить шестнадцатеричные скан-коды клавиш, которые вы хотите переназначить. Допустим, вы хотите изменить функцию клавиши Right Ctrl на Caps Lock. Находим код Right Ctrl - 1D E0 и код Caps Lock - 3A 00. Теперь дописываем в параметр "Scancode Map" сначала значение Caps Lock, а затем значение Right Ctrl. Затем осталось дописать в конец параметра еще четыре нулевых байта. Теперь параметр должен выглядеть так: 00,00,00,00,00,00,00,00,02,00,00,00,3A,00,1D,E0,00,00,00,00.

Чтобы переназначить более чем одну клавишу, необходимо таким же образом просто добавлять в конец параметра пары кодов клавиш (вначале клавишу "на которую", затем клавишу "с которой"). Например, чтобы переназначить Caps Lock на Left Shift и Left Alt на Backspace одновременно, параметр должен выглядеть так: 00,00,00,00,00,00,00,00,03,00,00,00,2A,00,3A,00,0E,00,38,00,00,00,00,00.

Чтобы просто заблокировать клавишу, следует переназначить её на "00,00". Трудно сказать, сколько клавиш одновременно можно переназначить таким способом, но возможно, что это число ограничивается размером двоичного параметра реестра в 255 символов.

Чтобы изменения вступили в силу, необходимо перезагрузить компьютер. Можно переназначить клавиши и для конкретного пользователя. В этом случае параметр "Scancode Map" следует разместить в ветви
HKEY_CURRENT_USER\Keyboard Layout
а для вступлений изменений в силу будет достаточно перелогиниться.

Перечень шестнадцатеричных скан-кодов приведён тут. Если вы используете AutoHotkey, можете воспользоваться методикой поиска скан-кодов, приведённой в конце этой статьи.

Источники:
http://www.softboard.ru/lofiversion/ind … 31615.html
http://www.usnetizen.com/fix_capslock.html
Информацию опубликовал DedMazai.

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

2 (изменено: DedMazai, 2007-02-14 18:34:22)

Re: OFF: переназначение клавиш с помощью записи в реестре (2000/XP/2003)

http://img261.imageshack.us/img261/600/remappingexamplerwintornb2.gif

Статья написана мудрёно, поэтому для простоты восприятия выкладываю картинку.

Кроме самой картинки, в аттаче вы можете найти готовый ключ реестра, который можно спокойно отредактировать в Блокноте согласно вашим нуждам и уже затем импортировать его куда надо, что имхо гораздо удобнее, чем копаться непосредственно в regedit.

Post's attachments

Remapping-RWin-to-RAlt.zip 6.49 kb, 953 downloads since 2007-02-14 

You don't have the permssions to download the attachments of this post.