Drivers Evoluent Input Devices



Input Output Audio Driver Controller is an application designed to help you view the input and output drivers of the sound cards you have installed on your computer. Since you can check both types. The reason, according to Evoluent, is that with a standard keyboard, the location of the numeric keypad makes right-handed users reach too far to the right to. For more information about the Windows 10 driver samples available for a specific technology area, see the following topics: Audio driver samples. AVStream driver samples. Battery driver samples. Biometrics driver samples. Bluetooth driver samples. File system driver samples. General driver samples. General-purpose input/output (GPIO) driver.

Method Two: Update Unplugged Device Drivers with Driver Booster 6 beta. Since manually updating a device driver can be time-wasting and you need to consider the compatibility, you can also use Driver Booster 6 beta to update the device drivers. It can easily scan and check the diver status and provide common driver update.

  1. Before connecting the VerticalMouse, go to Control Panel, Mouse:
    • On the Buttons tab, uncheck the box for Switch Primary and Secondary Buttons.
    • On the Pointer Options tab, uncheck the box for Enhance Pointer Precision and set the pointer speed slider to the middle position.
  2. Insert the plug or receiver in a USB port.
    • For wireless models, select a port away from other USB plugs or devices to avoid signal interference.
    • If pointer movement is unreliable, use an extension cable to position the receiver farther away from other USB plugs or devices.
    • Avoid using KVM switches since the VerticalMouse may not work with them.
  3. On wireless models, insert the battery and slide the On/Off switch to the green position.
  4. Adjust the pointer speed as desired with the pointer speed button behind the wheel.
  5. Evoluent Mouse Manager (driver) may optionally be installed to customize the buttons with a variety of functions, such as Copy, Paste, Enter, Double Click, etc. Download the driver here.
  1. Before connecting Evoluent VerticalMouse, go to the Applications folder to find and remove any existing Evoluent Mouse Manager and any other mouse software, except touchpad drivers, to avoid software conflict.
  2. USB wired or wireless receiver models:
    • Insert the plug or receiver in a USB port.
    • For wireless models, select a port away from other USB plugs or devices to avoid signal interference.
    • If pointer movement is unreliable, use an extension cable to position the receiver farther away from other USB plugs or devices.
    • Avoid using KVM switches since the VerticalMouse may not work with them.
  3. Mac/Bluetooth models without a receiver:
    • Go to System Preferences, Bluetooth and click Setup New Device or the + sign to add the mouse.
    • Insert the battery and slide the On/Off switch on the VerticalMouse to the green position or cycle it off and on to begin pairing.
  4. Adjust the pointer speed as desired with the pointer speed button behind the wheel.
  5. Evoluent Mouse Manager (driver) may optionally be installed to customize the buttons with a variety of functions, such as Copy, Paste, Enter, etc. Download the driver here. You may have to temporarily allow installing programs downloaded from anywhere in System Preferences, Security and Privacy.

Note regarding High Sierra (10.13) or newer Mac OS

  • The Evoluent Mac driver (known as “extension”) may be blocked in Mac OS 10.13 High Sierra or newer OS by a new system security feature known as Secure Kernel Extension Loading. Refer to this article on the Apple web site: https://developer.apple.com/library/archive/technotes/tn2459/_index.html.
  • If the mouse buttons do not perform your selected functions in the driver, or if the system shows “no VerticalMouse device attached”, go to System Preferences, Security to see if there is an option to allow the Evoluent extension. The option is only there for 20 minutes after installing the driver or restarting. If it is not there, restart the computer to reload it.
  • The extension will be listed as software from Jack Lo (the creator). If after allowing the extension it is still not working, restart the computer again. If restarting does not work, uninstall and reinstall the Evoluent software and restart the computer.
  • To determine if Secure Kernel Extension Loading is blocking the Evoluent extension, open a Terminal window to enter this command:

    kextstat | grep evoluent

  • If the Evoluent extension is allowed, the command will return a line of info. If it is blocked, the line will be blank. When it is blank, reinstall the driver and restart the computer.
  • Hold the VerticalMouse with your fingertips.
  • Put the edge of your hand on your desk.
  • Move the mouse mostly by moving your fingers, not your entire arm.
  • Tilt up the left side of a right-handed mouse to disable tracking, or tilt up the right side of a left-handed mouse.
  • Slide the mouse without moving the pointer.
  • It is very important to have your forearm in a horizontal position. The optimal arm angle may be achieved by raising your chair or using an underdesk keyboard tray to lower the mouse.
  • Position the mouse close to you to avoid extending your arm outwards.
  • Relax your shoulder.

VerticalMouse D, VerticalMouse 4

Top button – left click

Wheel button – forward

Middle button – wheel/middle click

Bottom button – right click

Upper thumb button – back

Bottom thumb button – requires driver to function

VerticalMouse C

Top button – left click

Wheel button – there is no wheel click on VMC

Middle button – wheel/middle click

Bottom button – right click

Upper thumb button – back

Bottom thumb button – requires driver to function

  • On the VerticalMouse, there are three flat buttons on the side. Evoluent makes the middle button perform the middle click, also known as wheel click, because pressing a flat button is more comfortable than pressing a wheel as is common with other mice.
  • Early computer mice had three buttons but no wheel. When the wheel was introduced, it doubled as the middle button since horizontal mice are not wide enough for three buttons and a wheel.
  • Evoluent VerticalMouse has enough height to provide three proper buttons again. If you prefer the wheel for wheel click, please download the driver to program the wheel button as wheel click.
  • When the driver is installed, some button functions are different from system default. Open Mouse Manager to check the functions.
  • The program or app you are using might be customized with different button functions than the global settings on the Buttons tab. In Mouse Manager, open Customize Buttons for Different Programs to check whether your programs has been customized.

When the driver is installed, and the Eye Comfort function is enabled with Dim Pop-Ups selected, the right click menu does not appear in some Microsoft Office programs when nothing in the document is selected. This issue may be avoided by changing the dimming method to Undim Pop-Ups.

Your system might be configured for a horizontal left-handed mouse. Go to Control Panel, Mouse, Buttons tab to uncheck Switch Primary and Secondary Buttons.

If you often unintentionally press a button, you may disable the button. Please install the driver and select the Disabled function for the button.

The desk surface may be too reflective. Test the mouse on a piece of white printer paper. If it tracks correctly on the paper, the mouse is working properly. Use a mouse pad to improve tracking.

  • Go to Control Panel, Mouse, Pointer Options to uncheck the box for Enhance Pointer Precision (this system feature actually makes the pointer jumpy).
  • Adjust the pointer speed with the pointer speed slider in Mouse, Pointer Options.
  • Press the pointer speed button behind the wheel to select a slower speed for more precise control.

Earlier models have an illuminated logo that cannot be turned off. Later models may be turned off this way:

  1. Unplug the VerticalMouse 4 when the computer is on.
  2. Press and hold the – end of the pointer speed button and plug in the USB connector. If your mouse is a later production unit, the logo will turn off. To turn on the logo again, press and hold the + end of the pointer speed button when you plug in the USB connector.
  • Slide the power switch on the bottom of the mouse to the green position.
  • Install a fresh battery with the + terminal facing out.
  • Remove the receiver and reinsert it to see if Windows makes the disconnect and reconnect sounds. Ensure that computer speakers are connected and the volume is turned on.
  • The receiver might not be paired with the VerticalMouse. Pair the receiver with the mouse according to the instructions below
  • The battery may be running low. Replace the battery if the pointer speed lights are blinking rapidly whenever the mouse is moved.
  • The mousing surface may be too reflective for the sensor. Try a non-reflective mouse pad.
  • The receiver may be suffering from signal interference due to proximity to other USB devices or cables. Use another USB port farther away from other USB devices or plugs, or use an USB extension to position the receiver even farther away.

VerticalMouse 4 Right Mac and Bluetooth models do not have receivers. They connect to Mac computers via the computers’ built-in Bluetooth function.

The lights blink rapidly when the battery is low. Replace the battery.

On VM4, VMC and VMD models:

  1. Press and hold the top thumb button.
  2. Turn on the power switch. The lights will flash on, off, and on again.
  3. Quickly insert the receiver into a USB port. The lights will flash twice when pairing is successful.
  4. Release the thumb button.

VM4 with a small pairing hole on the bottom above the signature:

  1. Slide the power switch under the mouse to the On or green position.
  2. Insert the receiver in a USB port.
  3. Download the receiver pairing utility here (for Windows only). Click Run. When it finishes downloading, click Run again to start the utility and follow its instructions.
  • Windows enables the mouse to wake the computer from sleep by moving it. The setting is in Control Panel, Device Manager, Mice and other pointing devices, Evoluent VerticalMouse, Power Management.
  • Slight vibrations to the desk may result in the mouse moving enough to unintentionally wake the computer. This issue may be prevented by disabling the wake feature in Power Management.
  • Windows always enables this feature again whenever the mouse is plugged in, when the driver is first installed, or when the driver is reinstalled. To prevent the mouse from inadvertently waking the computer, disable the feature again after plugging in the mouse or installing driver updates.
  • This task may be made more convenient by creating and running a simple file that disables the wake setting.
    1. On the desktop, right click and select New, Text Document.
    2. Double click on the file to open it. Copy and paste the following one line of text into it:

      powercfg /devicedisablewake “Evoluent VerticalMouse”

    3. Save and close the file.
    4. Rename the file extension from .txt to .bat (to see the file extension, you may have to uncheck “Hide extensions for know file types” in system folder options)
    5. To run the file, right click the file and click Run as Administrator.
    6. After it is run, VerticalMouse will not wake the computer when it is moved, until the next time it is plugged in again or the driver is updated.

The shortcut on the top row are supported by Windows. They may not work in other operating systems.

Mouse Friendly Right Handed Keyboard (R3K)

Undo – undo the last action or Ctrl Z.
Cut – cut item to clipboard or Ctrl X.
Copy – copy item to clipboard or Ctrl C.
Paste – paste item to clipboard or Ctrl V.
Web – open the default web browser.
E-Mail – open the default email program.
Comp – open my computer to see all the drives.
Prev – go back one track in the media player if there is a previous track.
Play – play or pause the media player.
Next – go back one track in the media player if there is a next track.
Volume- – reduce the sound volume.
Volume+ – increase the sound volume.
Mute – mute the sound output.
Sleep – put the computer on sleep mode.
ShutDn – shut down the computer.
Note: eject key for Mac is F12.

Essentials Compact eject key for Mac is F12Keyboard (EKB)

Undo – undo the last action or Ctrl Z.
Cut – cut item to clipboard or Ctrl X.
Copy – copy item to clipboard or Ctrl C.
Paste – paste item to clipboard or Ctrl V.
Web – open the default web browser.
E-Mail – open the default email program.
Comp – open my computer to see all the drives.
Mute – mute the sound output.
Volume- – reduce the sound volume.
Volume+ – increase the sound volume.
Sleep – put the computer on sleep mode.
Turn Off – shut down the computer.
Note: eject key for Mac is F12.

If you have any other issues or questions, please contact us. We will be happy to help you!

Email:
Phone: 650 871 1365

Drivers evoluent input devices device -->

Note

This topic is for developers who are creating drivers for keyboard and mouse HID clients. If you are looking to fix a mouse or keyboard, see:

This topic discusses keyboard and mouse HID client drivers. Keyboards and mice represent the first set of HID clients that were standardized in the HID Usage tables and implemented in Windows operating systems.

Keyboard and mouse HID client drivers are implemented in the form of HID Mapper Drivers. A HID mapper driver is a kernel-mode WDM filter driver that provides a bidirectional interface for I/O requests between a non-HID Class driver and the HID class driver. The mapper driver maps the I/O requests and data protocols of one to the other.

Windows provides system-supplied HID mapper drivers for HID keyboard, and HID mice devices.

Architecture and overview

The following figure illustrates the system-supplied driver stacks for USB keyboard and mouse/touchpad devices.

The figure above includes the following components:

  • KBDHID.sys – HID client mapper driver for keyboards. Converts HID usages into scancodes to interface with the existing keyboard class driver.
  • MOUHID.sys – HID client mapper driver for mice/touchpads. Converts HID usages into mouse commands (X/Y, buttons, wheel) to interface with the existing keyboard class driver.
  • KBDCLASS.sys – The keyboard class driver maintains functionality for all keyboards and keypads on the system in a secure manner.
  • MOUCLASS.sys – The mouse class driver maintains functionality for all mice / touchpads on the system. The driver does support both absolute and relative pointing devices. This is not the driver for touchscreens as that is managed by a different driver in Windows.
  • HIDCLASS.sys - The HID class driver. The HID Class driver is the glue between KBDHID.sys and MOUHID.sys HID clients and various transports (USB, Bluetooth, etc).

The system builds the driver stack as follows:

  • The transport stack creates a physical device object (PDO) for each HID device attached and loads the appropriate HID transport driver which in turn loads the HID Class Driver.
  • The HID class driver creates a PDO for each keyboard or mouse TLC. Complex HID devices (more than 1 TLC) are exposed as multiple PDOs created by HID class driver. For example, a keyboard with an integrated mouse might have one collection for the standard keyboard controls and a different collection for the mouse.
  • The keyboard or mouse hid client mapper drivers are loaded on the appropriate FDO.
  • The HID mapper drivers create FDOs for keyboard and mouse, and load the class drivers.

Important notes:

  • Vendor drivers are not required for keyboards and mice that are compliant with the supported HID Usages and top level collections.
  • Vendors may optionally provide filter drivers in the HID stack to alter/enhance the functionality of these specific TLC.
  • Vendors should create separate TLCs, that are vendor specific, to exchange vendor proprietary data between their hid client and the device. Avoid using filter drivers unless critical.
  • The system opens all keyboard and mouse collections for its exclusive use.
  • The system prevents disable/enabling a keyboard.
  • The system provides support for horizontal/vertical wheels with smooth scrolling capabilities.

Driver Guidance

Microsoft provides the following guidance for IHVs writing drivers:

  1. Driver developers are allowed to add additional drivers in the form of a filter driver or a new HID Client driver. The criteria are described below:

    1. Filters Drivers: Driver developers should ensure that their value-add driver is a filter driver and does not replace (or be used in place of) existing Windows HID drivers in the input stack.

      • Filter drivers are allowed in the following scenarios:
        • As an upper filter to kbdhid/mouhid
        • As an upper filter to kbdclass/mouclass
      • Filter drivers are not recommended as a filter between HIDCLASS and HID Transport minidriver
    2. Function Drivers: Alternatively vendors can create a function driver (instead of a filter driver) but only for vendor specific HID PDOs (with a user mode service if necessary).

      Function drivers are allowed in the following scenarios:

      • Only load on the specific vendor’s hardware
    3. Transport Drivers: Windows team does not recommend creating additional HID Transport minidriver as they are complex drivers to write/maintain. If a partner is creating a new HID Transport minidriver, especially on SoC systems, we recommend a detailed architectural review to understand the reasoning and ensure that the driver is developed correctly.

  2. Driver developers should leverage driver Frameworks (KMDF or UMDF) and not rely on WDM for their filter drivers.

  3. Driver developers should reduce the number of kernel-user transitions between their service and the driver stack.

  4. Driver developers should ensure ability to wake the system via both keyboard and touchpad functionality (adjustable by the end user (device manager) or the PC manufacturer). In addition on SoC systems, these devices must be able to wake themselves from a lower powered state while the system is in a working S0 state.

  5. Driver developers should ensure that their hardware is power managed efficiently.

    • Device can go into its lowest power state when the device is idle.
    • Device is in the lowest power state when the system is in a low power state (for example, standby (S3) or connected standby).

Keyboard layout

A keyboard layout fully describes a keyboard's input characteristics for Microsoft Windows 2000 and later versions. For example, a keyboard layout specifies the language, keyboard type and version, modifiers, scan codes, and so on.

See the following for information about keyboard layouts:

  • Keyboard header file, kdb.h, in the Windows Driver Development Kit (DDK), which documents general information about keyboard layouts.

  • Sample keyboard layouts.

To visualize the layout of a specific keyboard, see Windows Keyboard Layouts.

For additional details around the keyboard layout, visit Control PanelClock, Language, and RegionLanguage.

Supported buttons and wheels on mice

The following table identifies the features supported across different client versions of the Windows operating system.

FeatureWindows XPWindows VistaWindows 7Windows 8 and later
Buttons 1-5Supported (P/2 & HID)Supported (PS/2 & HID)Supported (PS/2 & HID)Supported (PS/2 & HID)
Vertical Scroll WheelSupported (PS/2 & HID)Supported (PS/2 & HID)Supported (PS/2 & HID)Supported (PS/2 & HID)
Horizontal Scroll WheelNot SupportedSupported(HID only)Supported(HID only)Supported(HID only)
Smooth Scroll Wheel Support (Horizontal and Vertical)Not SupportedPartly SupportedSupported (HID only)Supported (HID only)

Activating buttons 4-5 and wheel on PS/2 mice

The method used by Windows to activate the new 4&5-button + wheel mode is an extension of the method used to activate the third button and the wheel in IntelliMouse-compatible mice:

  • First, the mouse is set to the 3-button wheel mode, which is accomplished by setting the report rate consecutively to 200 reports/second, then to 100 reports/second, then to 80 reports/second, and then reading the ID from the mouse. The mouse should report an ID of 3 when this sequence is completed.
  • Next, the mouse is set to the 5-button wheel mode, which is accomplished by setting the report rate consecutively to 200 reports/second, then to 200 reports/second again, then to 80 reports/second, and then reading the ID from the mouse. Once this sequence is completed, a 5-button wheel mouse should report an ID of 4 (whereas an IntelliMouse-compatible 3-button wheel mouse would still report an ID of 3).

Note that this is applicable to PS/2 mice only and is not applicable to HID mice (HID mice must report accurate usages in their report descriptor).

Standard PS/2-compatible mouse data packet format (2 Buttons)

ByteD7D6D5D4D3D2D1D0Comment
1YoverXoverYsignXsignTagMRLX/Y overvlows and signs, buttons
2X7X6X5X4X3X2X1X0X data byte
3Y7Y6Y5Y4Y3Y2Y1Y0Y data bytes

Note

Windows mouse drivers do not check the overflow bits. In case of overflow, the mouse should simply send the maximal signed displacement value.

Standard PS/2-compatible mouse data packet format (3 Buttons + VerticalWheel)

ByteD7D6D5D4D3D2D1D0Comment
100YsignXsign1MRLX/Y signs and R/L/M buttons
2X7X6X5X4X3X2X1X0X data byte
3Y7Y6Y5Y4Y3Y2Y1Y0Y data bytes
4Z7Z6Z5Z4Z3Z2Z1Z0Z/wheel data byte

Standard PS/2-compatible mouse data packet format (5 Buttons + VerticalWheel)

ByteD7D6D5D4D3D2D1D0Comment
100YsignXsign1MRLX/Y signs and R/L/M buttons
2X7X6X5X4X3X2X1X0X data byte
3Y7Y6Y5Y4Y3Y2Y1Y0Y data bytes
400B5B4Z3Z2Z1Z0Z/wheel data and buttons 4 and 5

Important

Notice that the Z/wheel data for a 5-button wheel mouse has been reduced to four bits instead of the 8 bits used in the IntelliMouse-compatible 3-button wheel mode. This reduction is made possible by the fact that the wheel typically cannot generate values beyond the range +7/-8 during any given interrupt period. Windows mouse drivers will sign extend the four Z/wheel data bits when the mouse is in the 5-button wheel mode, and the full Z/wheel data byte when the mouse operates in the 3-button wheel mode.

Buttons 4 & 5 on are mapped to WM_APPCOMMAND messages and correspond to App_Back and App_Forward.

Devices not requiring vendor drivers

Vendor drivers are not required for the following devices:

  • Devices that comply with the HID Standard.
  • Keyboard, mouse, or game port devices operated by the system-supplied non-HIDClass drivers.

Kbfiltr sample

Kbfiltr is designed to be used with Kbdclass, the system class driver for keyboard devices and I8042prt, the function driver for a PS/2-style keyboard. Kbfiltr demonstrates how to filter I/O requests and how to add callback routines that modify the operation of Kbdclass and I8042prt.

For more information about Kbfiltr operation, see the following:

  • The ntddkbd.h WDK header file.

  • The sample Kbfiltr source code.

Kbfiltr IOCTLs

IOCTL_INTERNAL_I8042_HOOK_KEYBOARD

The IOCTL_INTERNAL_I8042_HOOK_KEYBOARD request does the following:

  • Adds an initialization callback routine to the I8042prt keyboard initialization routine.
  • Adds an ISR callback routine to the I8042prt keyboard ISR.

The initialization and ISR callbacks are optional and are provided by an upper-level filter driver for a PS/2-style keyboard device.

Drivers Evoluent Input Devices

After I8042prt receives an IOCTL_INTERNAL_KEYBOARD_CONNECT 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:

  • Saves the upper-level information passed to Kbfiltr, which includes the context of an upper-level device object, a pointer to an initialization callback, and a pointer to an ISR callback.
  • Replaces the upper-level information with its own.
  • Saves the context of I8042prt and pointers to callbacks that the Kbfiltr ISR callback can use.

IOCTL_INTERNAL_KEYBOARD_CONNECT

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:

  • Saves a copy of Kbdclass's CONNECT_DATA (Kbdclass) structure that is passed to the filter driver by Kbdclass.
  • Substitutes its own connect information for the class driver connect information.
  • Sends the IOCTL_INTERNAL_KEYBOARD_CONNECT request down the device stack.

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 KeyboardClassServiceCallback, 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.

IOCTL_INTERNAL_KEYBOARD_DISCONNECT

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.

For all other device control requests, Kbfiltr skips the current IRP stack and sends the request down the device stack without further processing.

Callback routines implemented by Kbfiltr

KbFilter_InitializationRoutine

See PI8042_KEYBOARD_INITIALIZATION_ROUTINE

The KbFilter_InitializationRoutine is not needed if the I8042prt default initialization of a keyboard is sufficient.

I8042prt calls KbFilter_InitializationRoutine when it initializes the keyboard. Default keyboard initialization includes the following operations:

  • reset the keyboard
  • set the typematic rate and delay
  • set the light-emitting diodes (LED)

KbFilter_IsrHook

See PI8042_KEYBOARD_ISR. This callback is not needed if the default operation of I8042prt is sufficient.

The I8042prt keyboard ISR calls KbFilter_IsrHook after it validates the interrupt and reads the scan code.

KbFilter_IsrHook runs in kernel mode at the IRQL of the I8042prt keyboard.

KbFilter_ServiceCallback

See PSERVICE_CALLBACK_ROUTINE.

Vertical Mouse 4 Evoluent Driver

The ISR dispatch completion routine of the function driver calls KbFilter_ServiceCallback, which then calls the keyboard class driver's implementation of PSERVICE_CALLBACK_ROUTINE. A vendor can implement a filter service callback to modify the input data that is transferred from the device's input buffer to the class data queue. For example, the callback can delete, transform, or insert data.

Moufiltr sample

Moufiltr is designed to be used with Mouclass, the system class driver for mouse devices used with Windows 2000 and later versions, and I8042prt, the function driver for a PS/2-style mouse used with Windows 2000 and later. Moufiltr demonstrates how to filter I/O requests and add callback routines that modify the operation of Mouclass and I8042prt.

For more information about Moufiltr operation, see the following:

  • The ntddmou.h WDK header file.

  • The sample Moufiltr source code.

Moufiltr control codes

IOCTL_INTERNAL_I8042_HOOK_MOUSE

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 IOCTL_INTERNAL_MOUSE_CONNECT 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:

  • Saves the upper-level information passed to Moufiltr, which includes the context of an upper-level device object and a pointer to an ISR callback.
  • Replaces the upper-level information with its own.
  • Saves the context of I8042prt and pointers to callbacks that the Moufiltr ISR callbacks can use.

Moufiltr Callback Routines

IOCTL_INTERNAL_MOUSE_CONNECT

Evoluent

The IOCTL_INTERNAL_MOUSE_CONNECT request connects Mouclass service to a mouse device.

IOCTL_INTERNAL_MOUSE_DISCONNECT

The IOCTL_INTERNAL_MOUSE_DISCONNECT request is completed by Moufiltr with an error status of STATUS_NOT_IMPLEMENTED.

For all other requests, Moufiltr skips the current IRP stack and sends the request down the device stack without further processing.

Callback routines

MouFilter_IsrHook

See PI8042_MOUSE_ISR.

A MouFilter_IsrHook callback is not needed if the default operation of I8042prt is sufficient.

Drivers Evoluent Input Devices Usb

The I8042prt mouse ISR calls MouFilter_IsrHook after it validates the interrupt.

To reset a mouse, I8042prt goes through a sequence of operational substates, each one of which is identified by an MOUSE_RESET_SUBSTATE enumeration value. For more information about how I8042prt resets a mouse and the corresponding mouse reset substates, see the documentation of MOUSE_RESET_SUBSTATE in ntdd8042.h.

MouFilter_IsrHook runs in kernel mode at the IRQL of the I8042prt mouse ISR.

MouFilter_ServiceCallback

See PSERVICE_CALLBACK_ROUTINE

Evoluent Mouse Driver For Windows 10

The ISR DPC of I8042prt calls MouFilter_ServiceCallback, which then calls MouseClassServiceCallback. A filter service callback can be configured to modify the input data that is transferred from the device's input buffer to the class data queue. For example, the callback can delete, transform, or insert data.