Re: Keyboard filter driver - obtaining keyboard indicator status

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance



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

--
Please do not send e-mail directly to this alias. this alias is for
newsgroup purposes only.
This posting is provided "AS IS" with no warranties, and confers no rights.


"Kyzer" <kyzer626@xxxxxxxxxxx> wrote in message
news:1133854460.711951.252120@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> 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.
>
>
>>>From what I understand from your suggestion, I would need to either
> 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
>


.



Relevant Pages

  • Re: Keyboard filter driver - obtaining keyboard indicator status
    ... Keyboard is monopolistically opened by USER32, use the USER32 APIs to get ... Maxim Shatskih, Windows DDK MVP ... > regarding creating a control device object in the upper filter driver ...
    (microsoft.public.development.device.drivers)
  • Re: Keyboard filter driver - obtaining keyboard indicator status
    ... In my filter driver I do have a separate control device object that I ... data from the keyboard by sending IOCTLs to this control device object. ... pass the request down the keyboard stack, ...
    (microsoft.public.development.device.drivers)
  • Re: Second HID for exclusive use.
    ... Ray Trent wrote: ... keyboard they it's going to get mingled along with the other keyboards. ... The only way I know of to change that would be to write a filter driver that diverts the reports from that device to an out-of-band API of some kind (probably pended read requests on a control device object). ...
    (microsoft.public.development.device.drivers)
  • Re: Keyboard filter driver - obtaining keyboard indicator status
    ... > with querying and setting the keyboard LED indicators (ie. QUERY - I ... > to the keyboard (by creating a new IRP_MJ_WRITE request from within the ... > filter driver and passing it to the lower driver). ... > drivers in the stack don't support this request, ...
    (microsoft.public.development.device.drivers)
  • Re: Keyboard filter driver - obtaining keyboard indicator status
    ... response. ... with querying and setting the keyboard LED indicators (ie. QUERY - I ... to the keyboard (by creating a new IRP_MJ_WRITE request from within the ... filter driver and passing it to the lower driver). ...
    (microsoft.public.development.device.drivers)