Начальная страница  |  Переопределение клавиш

Переопределение клавиш:  некоторые технические детали

В прежних версиях KeyCode.exe скан-коды в десятичном виде определялись как представление их числовых значений, без учета, являются последние однобайтовыми или двухбайтовыми числами. Например, значение cкан-кода клавиши «правый Ctrl» показывалось как E0 1D в шестнадцатеричной форме и как 57 373 – в десятичной. Формально такой механистический подход был, возможно, верен. Однако, дело в том, что оба байта скан-кода имеют разное назначение. Старший байт (первый по порядку, если читать слева направо), имеющий значение 00, E0 или E1, обозначает принадлежность клавиши к одной из двух категорий: обычные клавиши и клавиши т.н. расширенной клавиатуры. Разница эта возникла исторически при вводе новой на тот момент (1986 год) клавиатуры стандарта MF2, именуемой также extended AT или PS/2. В наше время префикс E0 получают новые клавиши, например, мультимедийные. Младший байт первоначально имел непосредственное отношение к физическому расположению клавиши. Со временем эта связь сильно ослабла, не исчезнув окончательно. Иными словами, эти байты никогда не складываются, а рассматриваются по-отдельности. По этой причине десятичное представление двухбайтовых значений смысла не имеет. В последней версии KeyCode.exe в правых полях сегментов скан-кодов всегда показывается значение только младшего байта в десятичной форме. Постфикс ext добавляется в случае, если значение старшего байта не равно 0.

Несколько слов о скан-кодах. Сигналы, которые вырабатывает конкретная клавиатура, могут быть разными: Это может быть один из трех классических наборов – Set 1, 2 (чаще всего) или 3 – для клавиатур, присоединяемых к специальному, клавиатурному разъему, либо USB, либо – вполне допускаю – еще что-то совершенно другое. В компьютере эти наборы преобразуются в набор Set 1, использовавшийся еще в клавиатурах IBM PC/XT. Это преобразование происходит на очень ранней ступени, поэтому в большинстве случаев можно исходить из того, что операционная система и приложения работают именно с этими скан-кодами. Как минимум, это справедливо для переопределения клавиш с помощью Scancode Map.

Естественно, клавиатура PC/XT не знала в 1981 году такой кнопки как «Запуск Интернет-браузера» или подобное. Поэтому тот набор скан-кодов, который используется современным компьютером, можно назвать «расширенный Set 1», или даже – расширяемый. Ядро этого набора осталось неизменным с начала 1980-х годов. Дополнением к нему служат две другие группы клавиш (и их скан-кодов), которые разграничиваются по признаку стандартизированности: стандартизированные клавиши и такие, которые используются лишь в компьютерах отдельных производителей. Примером последних являются «валютные» клавиши в ноутбуках фирмы Acer.

Стандартизированные клавиши не составляют гомогенной группы. Их также можно поделить на две категории. Во-первых, это клавиши, список которых приведен в упомянутом документе Microsoft (scancode.doc), который, на мой взгляд, обозначает некий «водораздел». Типичная клавиатура, соответствующая этому стандарту – это, по сути, уже упомянутая выше MF2-клавиатура с тремя специфическими клавишами: 2 x Windows и Application, но без каких-либо мультимедийных расширений. Такие клавиатуры до сих пор выпускаются и поставляются для использования в офисах. Во-вторых, это все те клавиши, которые появились после опубликования данного документа, датированного 16 марта 2000 года. Примерами новых стандартизированных клавиш являются «Запуск Интернет-браузера» и «Запуск почтовой программы». Представление о клавишах, поддерживаемых в современных версиях Windows, может быть получено из этого списка: http://msdn.microsoft.com/en-us/library/dd375731(v=VS.85).aspx.

 

Copyright А. Г. Румянцев, 2011 MailBox