![]() | ||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Переопределение клавишЗадачаИногда возникает желание переместить или отключить какие-то кнопки клавиатуры. Мысль, сделать это физически, не всегда плодотворна, хотя я встречал советы, выломать Caps Lock или Ins. Функциональность компьютерной клавиатуры в определенных пределах можно подогнать и софтверным путем. Начиная с Windows 2000 (включая XP, Vista и 7), существует возможность переопределения или отключения клавиш, для чего необходимо внести специальную запись в системный реестр Windows.
Плюс данного способа заключается в том, что изменения действуют для всех приложений, для самой Windows, в том числе в окне командной строки («консоль»). По понятным причинам функциональность клавиш при работе с BIOS не может быть изменена таким образом. Для сравнения, другие механизмы имеют более ограниченный «радиус действия»: макросы работают лишь внутри отдельно взятых прикладных программ; утилита ЮNIK преследует другую цель, а именно присвоение символьным клавишам произвольных символьных значений, со служебными клавишами она не работает Важная оговорка: В то время как «ядро» механизма (стандартные клавиши, настройка всего компьютера целиком) работает единообразно, дополнительные функции требуют учета особенностей конкретной версии Windows и/или компьютера. Так описанная ниже перенастройка «валютных» клавиш ноутбуков фирмы Acer работает не во всех моделях. В некоторых версиях Windows возможно присвоение разных схем переопределения отдельным пользователям одного и того же компьютера. Чаще всего необходимость в переопределении клавиш может возникать у пользователей ноутбуков. Особенность ноутбучных клавиатур заключается в том, что служебные клавиши часто располагаются по-разному. По этой причине могут возникать проблемы, например: Как это делается
Необходимые изменения в реестр можно вносить разными способами. В частности, в Интернете находится (расположено & можно найти) некоторое количество программ, которые могут сделать это автоматически. Мы рассмотрим здесь правку реестра вручную, справиться с чем может, в принципе, почти любой мало-мальски знакомый с компьютером пользователь. Для этого запускаем программу regedit (Пуск/Start – Выполнить/Run – regedit). В реестре ищем позицию:
Создаем здесь новую двоичную запись («двоичный параметр») под названием Scancode Map. Плавающее меню «Создать» и диалог для обработки двоичного параметра, показанные на картинках ниже, вызываются кликом правой кнопки мыши, соответственно внутри пустого пространства редактора реестра либо по имени параметра, который нужно изменить. Эти команды можно вызвать и через позицию «Правка» меню окна regedit. ![]() Данная запись может быть отредактирована средствами regedit. ![]() Она имеет строго предписанную структуру, описание которой может быть найдено на этой странице сайта Microsoft. Cтруктуру данной строки можно пояснить на примере ниже, все числа – в шестнадцатеричной форме (hexadecimal):
Группировки по две шестнадцатеричные цифры – 00, E0, 3A и т.д. – означают отдельные байты, знание чего пригодится нам чуть ниже. Промежутки введены исключительно для удобства восприятия человеком, ту же самую строчку можно записать следующим образом:
Поле число записей содержит число полей по 4 байта (= 8 шестнадцатиричных цифр; = 32 бита), расположенных после этого этого поля, и равно числу замен + 1. Если строка Scancode Map создана, но ни одна клавиша не переназначена, то это поле должно содержать значение 1. В более развернутом виде, число записей образуется путем суммирования следующих позиций: Ключевую роль играют поля замена, содержащие т.н. скан-коды клавиш, которые генерируются клавиатурой. Скан-коды, как правило, состоят из одного или двух байт, хотя известны и более длинные комбинации. В реестре всегда должны быть указаны два байта (= 4 цифры), поэтому, если скан-код состоит из одного байта (= две цифры), то две недостающие цифры просто заменяются нулями. Сразу нужно указать на то, что порядок записи байтов в реестр обратный (т.н. little endian). Проиллюстрировать это лучше всего на примерах:
Каждое из полей первая и вторая замена содержат скан-коды двух клавиш. Вначале идут четыре цифры, означающие скан-код той клавиши, функцию которой данная физическая клавиша должна начать выполнять после переопределения. Последние четыре цифры означают первоначальный скан-код самой физической клавиши, что соответствует символу, который на нее нанесен. Еще раз обратим внимание: порядок пар цифр (= байтов), вводимых в реестр, должен быть обратным по сравнению со скан-кодом. Структура отдельной замены выглядит следующим образом:
Каждая замена присваивает новую функцию лишь одной клавише, по причине чего, для обмена функциями между двумя клавишами необходимы две замены. В таком случае вторая замена содержит те же коды, но записанные наоборот. В принципе, можно присваивать новые функции не попарно, а произвольно. Главное, не запутаться потом самому. В случае, если клавиша просто отключается (третья замена), то вместо скан-кода новой функции ставятся четыре нуля. Например, запись для отмены (запрета, деактивации) клавиши Caps Lock будет выглядеть следующим образом: 0000 3A00. Список скан-кодов, а также общую информацию об этом механизме применительно к операционным системам Windows можно получить из файла scancode.doc, который скачивается с сайта компании Microsoft. Так как этот файл содержит много другой информации и слегка устарел (он датирован 2000 годом), я сделал собственную таблицу скан-кодов для клавиатуры QWERTY. Бóльшую часть кодов я мог экспериментально наблюдать хотя бы у одного их моих компьютеров.
Можно воспользоваться и простой утилитой KeyCode.exe. Для вставки в реестр используется шестнадцатеричное значение из левого поля в сегменте Scan Code initially. В сегменте Scan Code reaching your Application показывается значение скан-кода после переопределения. Если такового нет, то соответствующие – шестнадцатеричные (слева) и десятичные (справа) – значения обоих сегментов должны совпадать. Утилита работает описанным образом для подавляющего большинства стандартных клавиш. Дополнительные технические детали относительно работы KeyCode.exe и скан-кодов приведены на этой странице. После изменения реестра компьютер необходимо перезагрузить либо выйти/войти с завершением сеанса текущего пользователя. Если эксперименты оказались неудачными и путеводная звезда потеряна, то позицию Scancode Map можно просто-напросто стереть. Ниже приведены два примера из практики, когда переопределение клавиш оказалось полезным. «The Application key can be located wherever it appropriately fits.»
|
Разное ► Я и 30 тыс. других пользователей моего компьютера ► Печать времени, или веб-дизайн ушедших эпох |
В ноутбучных и малогабаритных клавиатурах используется клавиша Fn. Как правило, она находится справа от левого Ctrl. У ноутбуков Lenovo – наоборот. В некоторых ноутбуках, например, lenovo x100e в BIOS’е есть настройка, позволяющая поменять левый Ctrl и Fn местами. Техническая реализация клавиши Fn отличается от других и привязана к «железу», а не к операционной системе, а это означает, что механизм переопределения с помощью записи в реестр Windows здесь не поможет. Поэтому, хотя эта клавиша и может генерировать скан-код – неодинаковый у разных моделей ноутбуков –, ее полноценное переопределение с помощью записи в реестр, как подтвердили эксперименты, невозможно. Даже если клавише Fn присвоить какое-то другое значение скан-кода, и она будет выполнять соответствующую ему новую функцию, свою прежнюю функциональность она при этом не потеряет. Аналогично, если присвоить скан-код клавиши Fn какой-то другой, это не приведет к тому, что эта другая клавиша начнет выполнять функции Fn.
Вместе с тем, я допускаю, что в каких-то моделях ноутбуков (которые можно назвать «100 проц. Win-book») или клавиатур такое переназначение все-таки возможно, поэтому стоит, как минимум, попробовать. Скан-код клавиши Fn может быть определен с помощью представленной выше утилиты KeyCode. Последующее ничем не отличается от переназначения других клавиш.
* * *
Внимание: Манипуляции с системным реестром могут привести к сбоям в работе с компьютером! Автор данной страницы не несет ответственности за вызванные тем самым проблемы.