Управление светодиодами CapsLock etc. на клавиатуре

Тема в разделе "WASM.WIN32", создана пользователем xcode, 17 окт 2009.

  1. xcode

    xcode Member

    Публикаций:
    0
    Регистрация:
    8 апр 2007
    Сообщения:
    105
    Неожиданно возникла такая необходимость - программно зажигать и гасить лампочки на клавиатуре Caps Lock, Num Lock и Scroll Lock. Помнится, под DOS самый низкоуровневый способ заключался в записи байта в какой-то порт. А какой наиболее низкоуровневый способ управления этими лампочками в Виндах?
     
  2. Klayd

    Klayd Степан

    Публикаций:
    0
    Регистрация:
    7 апр 2006
    Сообщения:
    59
    Адрес:
    Киев
    keybd_event( VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0 );
    keybd_event( VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
    ...
     
  3. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Вопрос на засыпку. А еали нужно, чтоб лампочки горели в обратном члучае???
     
  4. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    что вы имеете в виду?
     
  5. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Comer_ Имею ввиду то, что бы лампочки горели при отключённом капс локе итд.
     
  6. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    в KmdKit от Four-F был пример управления состоянием светодидов на клавиатуре.
     
  7. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    Пример в аттаче (сорц и ехе)
     
  8. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    Mikl___
    вы дублируете первый ответ .)

    хотя да - вы соблюли этикет интернетов - начинать читать тред надо с собственного сообщения в нём ¦]

    anyway, теперь задача немного поменялась - надо давать обратный фифект. я помню что это уже было сделано однажды кем-то через дрова, потому надо бы.
     
  9. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    Comer_
    Через дрова, наверное, RamMerLabs написал: в KmdKit от Four-F был пример управления состоянием светодидов на клавиатуре хотя я в KmdKit не нашел, но можно через дебагер от keybd_event дойти до int 2Eh или до sysenter. А вот в возможности "оторвать" лампочку от капс лока сомневаюсь (если клавиатура исправна [​IMG])
     
  10. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    переработанный пример из KmdKit от Four-F по управлению светодиодами на клавиатуре ;) (сорц и ехе под WinXP)
     
  11. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    Внутри keybd_event функция user32.SendInput, которая sysenter с eax=11F6h
     
  12. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    Переработанный пример из #7. Через int 2Eh программно зажигаем и гасим лампочки Caps Lock, Num Lock и Scroll Lock на клавиатуре. Вопрос: является ли этот способ управления лампочками низкоуровневым в Виндах? Сорц и ехе в аттаче (под WinXP)
     
  13. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    Еще один "низкоуровневый" способ зажигать и гасить лампочки на клавиатуре Caps Lock, Num Lock и Scroll Lock, тот самый, о котором
    но работает под WinXP, во вложении сорц, рц и ехе, там же драйвер r0pc1.sys, который потребуется для сборки ехе. Этот драйвер будет спрятан в рессурсах и будет вытащен из ресурсов на диск при запуске приложения, по завершению приложения драйвер будет удалятся