Feature | Windows XP | Windows Vista | Windows 7 | Windows 8 and later |
---|---|---|---|---|
Buttons 1-5 | Supported (P/2 & HID) | Supported (PS/2 & HID) | Supported (PS/2 & HID) | Supported (PS/2 & HID) |
Vertical Scroll Wheel | Supported (PS/2 & HID) | Supported (PS/2 & HID) | Supported (PS/2 & HID) | Supported (PS/2 & HID) |
Horizontal Scroll Wheel | Not Supported | Supported(HID only) | Supported(HID only) | Supported(HID only) |
Smooth Scroll Wheel Support (Horizontal and Vertical) | Not Supported | Partly Supported | Supported (HID only) | Supported (HID only) |
Byte | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | Comment |
---|---|---|---|---|---|---|---|---|---|
1 | Yover | Xover | Ysign | Xsign | Tag | M | R | L | X/Y overvlows and signs, buttons |
2 | X7 | X6 | X5 | X4 | X3 | X2 | X1 | X0 | X data byte |
3 | Y7 | Y6 | Y5 | Y4 | Y3 | Y2 | Y1 | Y0 | Y data bytes |
Byte | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | Comment |
---|---|---|---|---|---|---|---|---|---|
1 | 0 | 0 | Ysign | Xsign | 1 | M | R | L | X/Y signs and R/L/M buttons |
2 | X7 | X6 | X5 | X4 | X3 | X2 | X1 | X0 | X data byte |
3 | Y7 | Y6 | Y5 | Y4 | Y3 | Y2 | Y1 | Y0 | Y data bytes |
4 | Z7 | Z6 | Z5 | Z4 | Z3 | Z2 | Z1 | Z0 | Z/wheel data byte |
Byte | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | Comment |
---|---|---|---|---|---|---|---|---|---|
1 | 0 | 0 | Ysign | Xsign | 1 | M | R | L | X/Y signs and R/L/M buttons |
2 | X7 | X6 | X5 | X4 | X3 | X2 | X1 | X0 | X data byte |
3 | Y7 | Y6 | Y5 | Y4 | Y3 | Y2 | Y1 | Y0 | Y data bytes |
4 | 0 | 0 | B5 | B4 | Z3 | Z2 | Z1 | Z0 | Z/wheel data and buttons 4 and 5 |
Control Code | Description |
---|---|
<MSHelp:link tabindex='0' keywords='hid.ioctl_internal_i8042_hook_keyboard'>IOCTL_INTERNAL_I8042_HOOK_KEYBOARD</MSHelp:link> | The IOCTL_INTERNAL_I8042_HOOK_KEYBOARD request does the following:
The initialization and ISR callbacks are optional and are provided by an upper-level filter driver for a PS/2-style keyboard device. After I8042prt receives an <MSHelp:link tabindex='0' keywords='hid.ioctl_internal_keyboard_connect2'>IOCTL_INTERNAL_KEYBOARD_CONNECT</MSHelp:link> request, it sends a synchronous IOCTL_INTERNAL_I8042_HOOK_KEYBOARD request to the top of the keyboard device stack. After Kbfiltr receives the hook keyboard request, Kbfiltr filters the request in the following way:
|
<MSHelp:link tabindex='0' keywords='hid.ioctl_internal_keyboard_connect'>IOCTL_INTERNAL_KEYBOARD_CONNECT</MSHelp:link> | The IOCTL_INTERNAL_KEYBOARD_CONNECT request connects the Kbdclass service to the keyboard device. Kbdclass sends this request down the keyboard device stack before it opens the keyboard device. After Kbfiltr received the keyboard connect request, Kbfiltr filters the connect request in the following way:
If the request is not successful, Kbfiltr completes the request with an appropriate error status. Kbfiltr provides a template for a filter service callback routine that can supplement the operation of <MSHelp:link tabindex='0' keywords='hid.keyboardclassservicecallback'>KeyboardClassServiceCallback</MSHelp:link>, the Kbdclass class service callback routine. The filter service callback can filter the input data that is transferred from the device input buffer to the class data queue. |
<MSHelp:link tabindex='0' keywords='hid.ioctl_internal_keyboard_disconnect'>IOCTL_INTERNAL_KEYBOARD_DISCONNECT</MSHelp:link> | The IOCTL_INTERNAL_KEYBOARD_DISCONNECT request is completed with a status of STATUS_NOT_IMPLEMENTED. Note that a Plug and Play keyboard can be added or removed by the Plug and Play manager. |
Control Code | Description |
---|---|
<MSHelp:link tabindex='0' keywords='hid.ioctl_internal_i8042_hook_mouse'>IOCTL_INTERNAL_I8042_HOOK_MOUSE</MSHelp:link> | The IOCTL_INTERNAL_I8042_HOOK_MOUSE request adds an ISR callback routine to the I8042prt mouse ISR. The ISR callback is optional and is provided by an upper-level mouse filter driver. I8042prt sends this request after it receives an <MSHelp:link tabindex='0' keywords='hid.ioctl_internal_mouse_connect2'>IOCTL_INTERNAL_MOUSE_CONNECT</MSHelp:link> request. I8042prt sends a synchronous IOCTL_INTERNAL_I8042_HOOK_MOUSE request to the top of the mouse device stack. After Moufiltr receives the hook mouse request, it filters the request in the following way:
For more information about this request and the callbacks, see the following topics:
|
<MSHelp:link tabindex='0' keywords='hid.ioctl_internal_mouse_connect'>IOCTL_INTERNAL_MOUSE_CONNECT</MSHelp:link> | The IOCTL_INTERNAL_MOUSE_CONNECT request connects Mouclass service to a mouse device. |
<MSHelp:link tabindex='0' keywords='hid.ioctl_internal_mouse_disconnect'>IOCTL_INTERNAL_MOUSE_DISCONNECT</MSHelp:link> | The IOCTL_INTERNAL_MOUSE_DISCONNECT request is completed by Moufiltr with an error status of STATUS_NOT_IMPLEMENTED. |