Сейчас на форуме: bartolomeo, Adler, johnniewalker, NIKOLA (+6 невидимых) |
eXeL@B —› Софт, инструменты —› Проги для переназначения клавиш |
Посл.ответ | Сообщение |
|
Создано: 09 августа 2007 09:09 · Личное сообщение · #1 |
|
Создано: 09 августа 2007 09:18 · Личное сообщение · #2 |
|
Создано: 09 августа 2007 09:59 · Личное сообщение · #3 |
|
Создано: 09 августа 2007 12:39 · Личное сообщение · #4 Переназначение клавиш с помощью записи в реестре (Win 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,0 0. Чтобы просто заблокировать клавишу, следует переназначить её на "00,00". Трудно сказать, сколько клавиш одновременно можно переназначить таким способом, но возможно, что это число ограничивается размером двоичного параметра реестра в 255 символов. Чтобы изменения вступили в силу, необходимо перезагрузить компьютер. Можно переназначить клавиши и для конкретного пользователя. В этом случае параметр "Scancode Map" следует разместить в ветви HKEY_CURRENT_USER\Keyboard Layout а для вступлений изменений в силу будет достаточно перелогиниться. Не помню источника. Валялось на винте старом лет 100 уже. ----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. |
|
Создано: 09 августа 2007 12:57 · Личное сообщение · #5 |
|
Создано: 09 августа 2007 13:03 · Личное сообщение · #6 |
|
Создано: 09 августа 2007 13:30 · Личное сообщение · #7 |
|
Создано: 11 августа 2007 10:15 · Личное сообщение · #8 В общем те проги по ссылке не то ;) Одна может переназначать, но с ней не работает. Сперва думал что DINPUT юзается. Лог показал, что создается устройство SysMouse и все(короче компонент для делфи) Потом хукал и логил GetAsyncKeyState, GetKeyState, но в виртуальных кодах совсем нет тех кнопок, которые в проге. Остается одно-сообщения окну. (В процедуру какого окна смотреть? главного?) Может я что-то пропустил и есть еще какие-либо методы опроса клавы?? |
|
Создано: 11 августа 2007 12:00 · Личное сообщение · #9 Может кому сгодится: Программа позволяет поменять местами клавиши или совсем отключить любую клавишу. В том числе Win-клавиши, Power и др. Не требует постоянного наличия в памяти! Фактически, программа предоставляет визуальный интерфейс к ключу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout\Scancode Map ВНИМАНИЕ! Программа работает только под Windows 2000/XP и последующих! letitbit.net/download/b066a6101024/KeyRemapper-v1-2.Zip.html ----- Don_t hate the cracker - hate the code. |
|
Создано: 11 августа 2007 13:30 · Личное сообщение · #10 |
|
Создано: 11 августа 2007 13:44 · Личное сообщение · #11 |
|
Создано: 11 августа 2007 14:08 · Личное сообщение · #12 Надо устновить глобальный хук клавиатуры (SetWindowsHookEx), и если процес нужный (найти по GetActiveWindow и раскрутить) то фильтровать сообщения. Думаю что если программа использует GetKeyState, то работать хук не будет. Тогда внедрить Dll и в таблице импорта заменить GetKeyState на функцию из Dll где посылать проге то что надо. Этой длл может быть уже внедренная, где SetWindowsHookEx. Dll должна содержать сецию данных с атрибутом SHARED. Помню в 95-м это работало, а ХР - надо пробовать. |
|
Создано: 11 августа 2007 16:53 · Личное сообщение · #13 |
|
Создано: 11 августа 2007 17:16 · Личное сообщение · #14 |
|
Создано: 11 августа 2007 17:21 · Личное сообщение · #15 |
|
Создано: 11 августа 2007 18:08 · Личное сообщение · #16 |
|
Создано: 11 августа 2007 22:58 · Личное сообщение · #17 |
|
Создано: 12 августа 2007 00:30 · Личное сообщение · #18 |
|
Создано: 12 августа 2007 16:25 · Личное сообщение · #19 |
eXeL@B —› Софт, инструменты —› Проги для переназначения клавиш |