Клавіші, перевизначення і відключення

  1. перевизначення клавіш завдання
  2. Як це робиться
  3. «The Application key can be located wherever it appropriately fits.» Microsoft
  4. Навіщо нам валюта?
  5. Підступна Fn-кціональность

перевизначення клавіш

завдання

Іноді виникає бажання перемістити або відключити якісь кнопки клавіатури. Думка, зробити це фізично, не завжди плідна, хоча я зустрічав поради, виламати Caps Lock або Ins. Функціональність комп'ютерної клавіатури в певних межах можна підігнати і софтверним шляхом. Починаючи з Windows 2000 (включаючи XP, Vista і 7), існує можливість перевизначення або відключення клавіш, для чого необхідно внести спеціальний запис до реєстру Windows.

Плюс даного способу полягає в тому, що зміни діють для всіх додатків, для самої Windows, в тому числі у вікні командного рядка ( «консоль»). Зі зрозумілих причин функціональність клавіш при роботі з BIOS не може бути змінена таким чином. Для порівняння, інші механізми мають більш обмежений «радіус дії»: макроси працюють лише всередині окремо взятих прикладних програм; утиліта ЮNIK переслідує іншу мету, а саме привласнення символьним клавішам довільних символьних значень, зі службовими клавішами вона не працює

Важливе застереження: У той час як «ядро» механізму (стандартні клавіші, настройка всього комп'ютера цілком) працює однаково, додаткові функції вимагають врахування особливостей конкретної версії Windows і / або комп'ютера. Так описана нижче перенастроювання «валютних» клавіш ноутбуків фірми Acer працює не у всіх моделях. У деяких версіях Windows можливе присвоєння різних схем перевизначення окремим користувачам одного і того ж комп'ютера.

Найчастіше необхідність в перевизначенні клавіш може виникати у користувачів ноутбуків. Особливість ноутбучних клавіатур полягає в тому, що службові клавіші часто розташовуються по-різному. З цієї причини можуть виникати проблеми, наприклад:
(1) При переході з одного ноутбука на інший доводиться переучуватися.
(2) Необхідно поперемінно працювати з декількома комп'ютерами з різним розташуванням окремих клавіш, наприклад, на стандартній клавіатурі десктопа і нестандартної ноутбука.
(3) Від придбання непоганого ноутбука доводиться відмовитися через невдале розташування всього лише кількох, але важливих клавіш.

Як це робиться

типова помилка
В цьому тред на «Чарівному форумі» використовується невірний шлях для розміщення записи Scancode Map.

Необхідні зміни в реєстр можна вносити різними способами. Зокрема, в Інтернеті знаходиться (розташоване & можна знайти) деяку кількість програм, які можуть зробити це автоматично. Ми розглянемо тут правку реєстру вручну, впоратися з чим може, в принципі, майже кожен більш-менш знайомий з комп'ютером користувач. Для цього запускаємо програму regedit (Пуск / Start - Виконати / Run - regedit). У реєстрі шукаємо позицію:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Keyboard Layout

Створюємо тут нову двійкову запис ( «двійковий параметр») під назвою Scancode Map. Плаваюче меню «Створити» і діалог для обробки двійкового параметра, показані на картинках нижче, викликаються кліком правої кнопки миші, відповідно всередині порожнього простору редактора реєстру або по імені параметра, який потрібно змінити. Ці команди можна викликати і через позицію «Правка» меню вікна regedit.

Даний запис може бути відредаговано засобами regedit.

Даний запис може бути відредаговано засобами regedit

Вона має строго визначену структуру, опис якої може бути знайдено в наступному документі компанії Microsoft: http://www.microsoft.com/whdc/archive/w2kscan-map.mspx

Cтруктура цього рядка можна пояснити на прикладі нижче, все числа - в шістнадцятковій формі (hexadecimal):

00 00 00 00 00 00 00 00 04 00 00 00 53 E0 52 E0 52 E0 53 E0 00 00 3A 00 00 00 00 00 завжди нулі число записів перша заміна друга заміна третя заміна завжди нулі Міняємо місцями Ins і Del Відключаємо Caps Lock

Угруповання по дві шістнадцяткові цифри - 00, E0, 3A і т.д. - означають окремі байти, знання чого знадобиться нам трохи нижче. Проміжки введені виключно для зручності сприйняття людиною, ту ж саму рядок можна записати в такий спосіб:

00000000000000000400000053E052E052E053E000003A0000000000

Поле число записів містить число полів по 4 байта (= 8 шістнадцяткових цифр; = 32 біта), розташованих після цього цього поля, і дорівнює числу замін + 1. Якщо рядок Scancode Map створена, але жодна клавіша не відповідає перепризначена, то це поле повинно містити значення 1.

У більш розгорнутому вигляді, число записів утворюється шляхом підсумовування наступних позицій:
(1: факультативно) число пар клавіш, які обмінюються своїми функціями, * 2 +
(2: факультативно) число клавіш, які отримують нові функції, але не віддають свої +
(3: факультативно) число відключаються клавіш +
(4: завжди) один (остання ланцюжок нулів).
Наприклад, якщо ми міняємо місцями Del і Ins, що вимагає два записи, а Caps Lock відключаємо зовсім, для чого потрібна одна запис, то тут потрібно поставити число 04000000 (1 * 2 + 0 + 1 + 1).

Ключову роль відіграють поля заміна, що містять т.зв. скан-коди клавіш, які генеруються клавіатурою. Скан-коди, як правило, складаються з одного або двох байт, хоча відомі і довші комбінації. У реєстрі завжди повинні бути вказані два байта (= 4 цифри), тому, якщо скан-код складається з одного байта (= дві цифри), то дві бракуючі цифри просто замінюються нулями. Відразу потрібно вказати на те, що порядок запису байтів в реєстр зворотний (т.зв. little endian ). Проілюструвати це найкраще на прикладах:

  • скан-код клавіші Enter - 1C; для отримання двобайтового комбінації це число потрібно випередити двома нулями, разом отримуємо - 00 1С; при вставці в реєстр потрібно поміняти порядок байт на протилежний - 1С 00
  • скан-код клавіші PgUp спочатку містить два байта - E0 49; отже, нам потрібно лише поміняти їх місцями при запису до реєстру - 49 E0

Кожне з полів перша і друга заміна містять скан-коди двох клавіш. Спочатку йдуть чотири цифри, що означають скан-код тієї клавіші, функцію якої дана фізична клавіша повинна почати виконувати після перевизначення. Останні чотири цифри означають початковий скан-код самої фізичної клавіші, що відповідає символу, який на неї нанесений. Ще раз звернемо увагу: порядок пар цифр (= байтів), що вводяться в реєстр, повинен бути зворотним в порівнянні зі скан-кодом. Структура окремої заміни виглядає наступним чином:

0E 00 38 E0 0E 00 38 E0 Нова функція перепризначуваних клавіші - «Backspace» (скан-код: 0E або 00 0E) Початкова функція перепризначуваних клавіші - «Правий Alt» (скан-код: E0 38)

Кожна заміна привласнює нову функцію лише однієї клавіші, у зв'язку з чим, для обміну функціями між двома клавішами необхідні дві заміни. В такому випадку друга заміна містить ті ж коди, але записані навпаки. В принципі, можна привласнювати нові функції не попарно, а довільно. Головне, не заплутатися потім самому.

У разі, якщо клавіша просто відключається (третя заміна), то замість скан-коду нової функції ставляться чотири нулі. Наприклад, запис для скасування (заборони, деактивації) клавіші Caps Lock буде виглядати наступним чином 0000 3A00.

Скан-коди можуть бути отримані з різних джерел в Інтернеті, наприклад: http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/scancode.doc (Колонка «scan 1 make»)

Можна скористатися і простий утилітою KeyCode.exe . Для вставки в реєстр використовується шістнадцяткове значення з лівого поля в сегменті Scan Code initially. У сегменті Scan Code reaching your Application показується значення скан-коду після перевизначення. Якщо такого немає, то відповідні - шістнадцяткові (зліва) і десяткові (праворуч) - значення обох сегментів повинні збігатися. Утиліта працює описаним чином для переважної більшості стандартних клавіш. Виняток становлять Pause, Num Lock і PrtScr.

Pause і PrtScr є типовими прикладами «складних» клавіш. Вищенаведений джерело містить додаткову інформацію з цього приводу. Скан-код клавіші PrtScr - E0 2A E0 37; клавіші Pause - E1 1D 45 E1 9D C5. Однак, як показують експерименти, для PrtScr можна обмежитися використанням останніх двох байт, або, точніше, перших (і тут грає роль зворотний порядок запису). Іншими словами, чотиризначна комбінація, яка повинна бути внесена до реєстру, для цієї клавіші буде виглядати як 37 E0. Додаткові технічні деталі щодо роботи KeyCode.exe і скан-кодів наведені на цій сторінці .

Після зміни реєстру комп'ютер необхідно перезавантажити або вийти / увійти з завершенням сеансу поточного користувача. Якщо експерименти виявилися невдалими і дороговказ втрачена, то позицію Scancode Map можна просто-напросто стерти. Нижче наведено два приклади з практики, коли перевизначення клавіш виявилося корисним.

«The Application key can be located wherever it appropriately fits.»
Microsoft

У якийсь момент розвитку комп'ютеробудування стандартна клавіатура здалася нудною і компанія Microsoft вирішила збагатити її двома (або трьома, як рахувати) новими клавішами. Однією з них стала клавіша Application, призначення якої полягало у виклику контекстного (= плаваючого) меню. Однак, так як користувачі звикли викликати це меню правою кнопкою миші, популярність нової клавіші виявилася скромною. Відмовитися від неї зовсім було не можна, інакше така клавіатура не пройшла б тест на Windows-сумісність і не змогла б носити гордий предикат Designed for Windows YX, а ось відправити куди-небудь на периферію, можна було цілком, тим більше що на це було дано явне дозвіл самим Майкрософтом. Для порівняння, подібна вільність щодо іншої нової кнопки (або кнопок) з логотипом Windows не вітали, її слід було розташовувати поблизу від допоміжних, але важливих клавіш Ctrl, Alt і Shift.

Більшість виробників не скористалися великодушністю постачальника Осовий і сліпо вліпили кнопку Application туди, де її намалювали програмісти з Редмонда, тобто  між правими Alt і Ctrl Більшість виробників не скористалися великодушністю постачальника Осовий і сліпо вліпили кнопку Application туди, де її намалювали програмісти з Редмонда, тобто між правими Alt і Ctrl. Іншим був підхід компанії Toshiba, яка відправила Application в крайній правий кут, а цінне місце зайняла кнопками |, Ins і Del. Щодо правильності рішення щодо перших двох не впевнений, а от розташування Del в районі між клавішею Space (Пропуск) і блоком стрілочних клавіш мені сподобалося. В результаті чого на своєму новому ноутбуці, який прийшов на зміну Тошиба, я присвоїв кнопці Application функцію Delete. Заодно, клавіші Ins і Del виявилися рознесеними, що теж є позитивним ефектом.

Скан-код клавіші Application - E0 5D; Del - E0 53. Отже, рядок для обміну функціями буде виглядати наступним чином:

00000000 00000000 03000000 5DE053E0 53E05DE0 00000000

Навіщо нам валюта?

При розробці своїх ноутбуків фірма Acer проявила чудеса інновативності (або все ж інноваційності?) І ввела в блоці «стрілочних» клавіш дві окремі кнопки для валютних одиниць: € і $. Особисто мені обидва цих знака потрібні нечасто. При розробці своїх ноутбуків фірма Acer проявила чудеса інновативності (або все ж інноваційності А ось проти того, щоб поруч з чотирма стрілочними клавішами перебувала пара інших для управління курсором, наприклад, Home і End, я нічого не маю. До речі, саме таке конструктивне рішення в деяких ноут і нетбуках, наприклад, LG X110. Цікаво відзначити, що хоча цей нетбук і проводиться на основі MSI Wind, але його клавіатура являє собою спеціальну розробку: Це стосується не тільки розумного розташування клавіш, а й прекрасних механічних характеристик; на мій погляд клавіатура LG X110 / 130 на поточний момент є однією з кращих в класі нетбуків.

Скан-код клавіші «євро» - E0 33; «Долар» - E0 34. Отже, рядок для присвоєння обох клавішах значень Home і End, відповідно, буде виглядати наступним чином:

00000000 00000000 03000000 47E033E0 4FE034E0 00000000

Зауваження: Для отримання потрібного ефекту при перепризначення «валютних» клавіш в ноутбуках фірми Acer, що завантажується за замовчуванням утиліта Launch Manager повинна бути вивантажено. Якщо з якихось причин ви не можете піти на цей радикальний крок, то у файлі mmkeybd.cfg (розташованому в директорії програми, швидше за все, C: \ Program Files \ Launch Manager) потрібно закомментировать відповідні рядки (номери клавіш на початку рядків можуть бути іншими, орієнтуватися при пошуку слід на скан-коди і коментарі; клавіша Dollar Symbol може називатися Money Symbol):

; Key 23 = 1, E0,33, E0, B3, F508, Euro Symbol
; Key 24 = 1, E0,34, E0, B4, F509, Dollar Symbol

Як ми бачимо, в цей файл містяться скан-коди спеціальних, додаткових клавіш, таких як згадані євро і долар, а також запуск браузера, поштової програми і т.д. Цю інформацію також можна використовувати для зміни конфігурації комп'ютера.

У ноутбуках фірми Toshiba Launch Manager називається Easy Button, а відповідний конфігураційний файл знаходиться в директорії цієї програми C: \ Program Files \ EzButton і може називатися ezbutton.cfg або cpldbl10.cfg.

Підступна Fn-кціональность

У ноутбучних і малогабаритних клавіатурах використовується клавіша Fn. Як правило, вона знаходиться праворуч від лівого Ctrl. У ноутбуків Lenovo - навпаки. У деяких ноутбуках, наприклад, lenovo x100e в BIOS'е є настройка, що дозволяє поміняти лівий Ctrl і Fn місцями. Технічна реалізація клавіші Fn відрізняється від інших і прив'язана до «заліза», а не до операційної системи, а це означає, що механізм перевизначення за допомогою запису в реєстр Windows тут не допоможе. Тому, хоча ця клавіша і може генерувати скан-код - неоднаковий у різних моделей ноутбуків -, її повноцінне перевизначення за допомогою запису в реєстр, як підтвердили експерименти, неможливо. Навіть якщо клавіші Fn привласнити якусь іншу значення скан-коду, і вона буде виконувати відповідну йому нову функцію, свою колишню функціональність вона при цьому не втратить. Аналогічно, якщо привласнити скан-код клавіші Fn якийсь інший, це не призведе до того, що ця інша клавіша почне виконувати функції Fn.

Разом з тим, я допускаю, що в якихось моделях ноутбуків (які можна назвати «100 проц. Win-book») або клавіатур таке перепризначення все-таки можливо, тому варто, як мінімум, спробувати. Скан-код клавіші Fn може бути визначений за допомогою представленої вище утиліти KeyCode. Подальше нічим не відрізняється від перепризначення інших клавіш.

* * *

Увага: Маніпуляції з системним реєстром можуть привести до збоїв в роботі з комп'ютером! Автор даної сторінки не несе відповідальності за викликані тим самим проблеми.

Або все ж інноваційності?