Keyboard filter driver - obtaining keyboard indicator status

Discussion in 'Windows Vista Drivers' started by Kyzer, Nov 21, 2005.

  1. Kyzer

    Kyzer Guest

    In my filter driver I do have a separate control device object that I
    can obtain a handle to in my user-mode application and send IOCTLs to
    it. But I can't see how I can send data to the keyboard and receive
    data from the keyboard by sending IOCTLs to this control device object.

    pass the request down the keyboard stack, or create another request to
    pass to it. This scenario is initially what I was trying to do (using
    IRP_MJ_WRITE) but the keyboard stack does not support this request, and
    I'm not sure if there would be any other requests that may be useful
    for my requirements.

    I may not have made myself clear earlier, but it is the keyboard device
    itself that I need to send the data to and receive the data from. If I
    send an IOCTL to the second control device object, it isn't able to
    immediately return the response (ie. the firmware in the keyboard needs
    to receive the data to then send back the appropriate data).

    As mentioned in the previous post, if the firmware in the keyboard
    receives the bytes 0xED followed by 0x07, it will set the LED indicator
    lights on. Alternatively, sending a different stream of bytes may then
    force the firmware in the keyboard to send a stream of bytes back.

    I hope that clears the issue up and people have further ideas or
    suggestions.

    Thanks
     
    Kyzer, Dec 6, 2005
    #21
    1. Advertisements

  2. you cannot send bytes directly to the keyboard. since your keyboard is
    connected via USB, your keyboard is exposed as a HID device to the OS. You
    might be able to send set feature requests to the keyboard from your filter
    driver, but b/c your actual hardware is not HID aware, this probably won't
    work. I don't think you have a solution to your problem unless you can
    program your keyboard by setting the LED themselves. If you want to do
    that, there is IOCTL_KEYBOARD_SET_INDICATORS in ntddkbd.h that will set
    them. see the ddk for the format of the buffers for this IOCTL.

    d
     
    Doron Holan [MS], Dec 6, 2005
    #22
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.