Залипание клавиш на PS/2 клавиатуре

Тема в разделе "WASM.NT.KERNEL", создана пользователем Llirik, 26 дек 2011.

  1. Llirik

    Llirik Member

    Публикаций:
    0
    Регистрация:
    18 июл 2008
    Сообщения:
    471
    Вот конкретный мини-пример моей проблемы
    Код (Text):
    1. KKbFilter_ServiceCallback proc pDeviceObject:PDEVICE_OBJECT, InputDataStart:PKEYBOARD_INPUT_DATA, InputDataEnd:PKEYBOARD_INPUT_DATA, InputDataConsumed:PULONG
    2. mov eax, InputDataStart
    3. assume eax:ptr KEYBOARD_INPUT_DATA
    4. .if [eax].MakeCode == 36h
    5. .if [eax].Flags == 1
    6. .if zl1 == 0
    7. inc zl1
    8. ret
    9. .else
    10. dec zl1
    11. .endif
    12. .endif
    13. .endif
    14.     push    InputDataConsumed
    15.     mov eax, pDeviceObject
    16.     push    InputDataEnd
    17. assume eax:ptr DEVICE_OBJECT
    18. mov ecx, [eax].DeviceExtension
    19. assume eax:nothing
    20. assume ecx:ptr FiDO_DEVICE_EXTENSION
    21.     push    InputDataStart
    22.     push    [ecx].UPPER_CONNECT_DATA.ClassDeviceObject
    23.     call    [ecx].UPPER_CONNECT_DATA.ClassService
    24. assume ecx:nothing
    25. ret
    26. KKbFilter_ServiceCallback endp
    Почему с USB-клавой этот код залипания правого Shift`а действует, а с PS/2 нет?
     
  2. BelowZero

    BelowZero New Member

    Публикаций:
    0
    Регистрация:
    24 дек 2011
    Сообщения:
    38
    интересный код... а при каком событии наступает залипание шифта?
     
  3. Llirik

    Llirik Member

    Публикаций:
    0
    Регистрация:
    18 июл 2008
    Сообщения:
    471
    Как при каком?? при отпускании шифта, а при следующем отпускании оно пропадает. по-моему из приведённого мною кода это можно было понять. тут я его упростил до нельзя)
     
  4. BelowZero

    BelowZero New Member

    Публикаций:
    0
    Регистрация:
    24 дек 2011
    Сообщения:
    38
    пожалуста, приведите разъяснение к строкам. просто я занялся драйверами только для того, чтобы создать проект наподобие вашего) заодно смогу поискать, почему действует только с USB-клавой
     
  5. Llirik

    Llirik Member

    Публикаций:
    0
    Регистрация:
    18 июл 2008
    Сообщения:
    471
    тут всё очень просто) когда шифт отпускается в первый раз, zl1 становится равным 1 и Callback не отправляется. получается залипание. когда шифт во второй раз zl1 обнуляется, а callback, как и все остальные, идёт дальше, соответственно шифт отпускается и всё начинается заново. Но на PS/2 это почему-то не работает
     
  6. Llirik

    Llirik Member

    Публикаций:
    0
    Регистрация:
    18 июл 2008
    Сообщения:
    471
    Неужели на этом форуме вообще никто ничего не знает про PS/2 клавиатуру?(