Где достать таблицу для:
хардварных сканкодов клавиш? Единая ли она для винды, или же для разных версий дров, клавиатур и т.д. может отличаться?Код:scanCode Type: DWORD A hardware scan code for the key.
Где достать таблицу для:
хардварных сканкодов клавиш? Единая ли она для винды, или же для разных версий дров, клавиатур и т.д. может отличаться?Код:scanCode Type: DWORD A hardware scan code for the key.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Scan Code values generated by the PC Keyboard
Не зависит от операционки - эти коды генерит контроллер клавиатуры.Единая ли она для винды, или же для разных версий дров, клавиатур и т.д. может отличаться?
Пока что разбираюсь, как эмулировать зажигание лампочек изнутри функции обработки хука.
Предложенный метод не подходит:
Т.к. он по идее сам и вызовет хук?Код:// Simulate a key press keybd_event( VK_CAPITAL, 0, KEYEVENTF_EXTENDEDKEY | 0, 0 );
Попытка внутри хука менять на лету параметр vkCode, scanCode, да и вообще все - на зажигание лампочки НЕ влияет. Влияет если только прервать цепочку хуков по return (1). А мне нужно не прервать, а подменить один код на другой, чтобы заставить принудительно включить или выключить лампочку.
Хук нужен только для того, чтобы пропускать или не пропускать "лампочные" нажатия в Windows. Всё остальное должны делать обычные подпрограммы.
Представим предельно сложную ситуацию, когда клавиша CapsLock и лампочка CapsLock никак друг с другом не связаны - нажатия проходят "мимо лампочки", а лампочка напрямую управляется из программы.
Чтобы хук мог отличить обычные нажатия ( которые он запишет в матрице, но не пропустит в Windows ) и фейк-нажатия (которые в нужный момент генерятся программой специально, чтобы переключить лампочку, и не должны влиять на матрицу нажатых клавиш) - то чтобы хук мог их отличать - нужен всего лишь ещё один флаг для хука, который будет устанавливаться подпрограммой управления лампочкой перед посылкой фейк-нажатия и сбрасываться сразу после этого.
В параметр dwFlags функции keybd_event - там полно места.
---------- Post added 02.01.2013 at 00:03 ---------- Previous post was 01.01.2013 at 23:59 ----------
А можно и прямо в bScan - он там как раз для того, чтобы "общаться" с хуком.
Я уже нашел штатный флаг, который устанавливается при симуляции нажатия - это:
4 Specifies whether the event was injected. The value is 1 if the event was injected; otherwise, it is 0.
Да, в прошлом году я этот флаг тоже нашёл, но за прошедший день упел про него забыть :)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)