Читаем 1001 совет по обустройству компьютера полностью

Что такое скан-коды и где их взять

Скан-код – это то число, которое выдает клавиатура при нажатии определенной клавиши. Скан-коды не следует путать с виртуальными кодами клавиш – последние формируются уже на уровне BIOS и Windows и в дальнейшем определяют коды символов, те самые, что, например, образуют содержимое текстовых документов. В большинстве случаев они никак между собой не связаны. Например, виртуальный код клавиши «пробел» – 32 (совпадает с кодом символа «пробел» в однобайтных кодировках), а скан-код ее – 57 (в HEX-форме это будет 20 и 39 соответственно). Заметьте, что виртуальные коды не эквивалентны символьным – чтобы превратить виртуальный код в код символа, надо еще учесть языковую раскладку, состояние клавиш , и, между прочим, используемую систему кодировок – однобайтную или Unicode. Все это проделывает системный драйвер клавиатуры еще до того, как событие нажатия попадает в очередь Windows-сообщений. Некоторые клавиши ( или ) вообще ни с какими символами не связаны и в указанную очередь не попадают. Поэтому для полной подмены функциональности некоей клавиши подменить виртуальные коды (что вообще-то может сделать любой, владеющий навыками программирования в Delphi или Visual C++) недостаточно – надо действовать на более глубоком уровне, манипулируя именно скан-кодами. Это и позволяет осуществить параметр Scancode Map в реестре Windows.

Для наших целей скан-коды, как вы можете догадаться по приведенной таблице, должны быть представлены в шестнадцатеричной (HEX), а не десятичной форме. Таблицы виртуальных кодов и кодов символов обычно прилагается к любому пособию по Windows-программированию, а вот полную таблицу скан-кодов разыскать непросто. Одна из таких таблиц находится на сайте «Электронная библиотека» по ссылке http://ntlib.chat.ru/ware/tables/scan.htm. Она немного неудачно составлена – так называемые расширенные клавиши (это те, у которых второй байт в нашей таблице равен E0) там показаны добавлением лишнего разряда, равного 1. То есть выбрав из колонки HEX скан-код, например, 11С (клавиша на цифровой клавиатуре), его надо для наших целей переписать как 1С E0. Официальный полный набор скан-кодов, включая и клавиши управления питанием (но исключая дополнительные медиаклавиши), можно скачать с сайта Microsoft. Ссылка на документ очень длинная, потому просто наберите в поиске на microsoft.com слова Keyboard Scan Code Specification», и получите искомое – правда, по-английски. При изучении этого документа учтите, что нас интересует только один набор кодов: Scan Code Set 1.

Перейти на страницу:

Похожие книги

97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
3ds Max 2008
3ds Max 2008

Одни уверены, что нет лучшего способа обучения 3ds Мах, чем прочитать хорошую книгу. Другие склоняются к тому, что эффективнее учиться у преподавателя, который показывает, что и как нужно делать. Данное издание объединяет оба подхода. Его цель – сделать освоение 3ds Мах 2008 максимально быстрым и результативным. Часто после изучения книги у читателя возникают вопросы, почему не получился тот или иной пример. Видеокурс – это гарантия, что такие вопросы не возникнут: ведь автор не только рассказывает, но и показывает, как нужно работать в 3ds Мах.В отличие от большинства интерактивных курсов, где работа в 3ds Мах иллюстрируется на кубиках-шариках, данный видеокурс полностью практический. Все приемы работы с инструментами 3ds Мах 2008 показаны на конкретных примерах, благодаря чему после просмотра курса читатель сможет самостоятельно выполнять даже сложные проекты.

Владимир Антонович Верстак , Владимир Верстак

Программирование, программы, базы данных / Программное обеспечение / Книги по IT
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ

Эта книга представляет собой перевод третьего издания американского бестселлера Effective C++ и является руководством по грамотному использованию языка C++. Она поможет сделать ваши программы более понятными, простыми в сопровождении и эффективными. Помимо материала, описывающего общую стратегию проектирования, книга включает в себя главы по программированию с применением шаблонов и по управлению ресурсами, а также множество советов, которые позволят усовершенствовать ваши программы и сделать работу более интересной и творческой. Книга также включает новый материал по принципам обработки исключений, паттернам проектирования и библиотечным средствам.Издание ориентировано на программистов, знакомых с основами C++ и имеющих навыки его практического применения.

Скотт Майерс , Скотт Мейерс

Программирование, программы, базы данных / Программирование / Книги по IT