Gunze Input Devices Driver



  1. Product Name TPDD GZTP PACK TPDD for Linux; Version: 2.00: 3.000: 2.600: 4.00: Touch Panel Controller: AHL-7X AHL-120NX: AHL-120NX: AHL-7X AHL-120NX: Operation Mode.
  2. Driver Description Download drivers for GUNZE USB Touch Panel input devices (Windows 7 x86), or install DriverPack Solution software for automatic driver download and update Are you tired of looking for the drivers for your devices?
  3. Download GUNZE Serial Touch Panel input device drivers or install DriverPack Solution software for driver update. Download Download DriverPack Online. GUNZE input devices / GUNZE Serial Touch Panel; Operating System Versions: Windows XP, 7, 8, 8.1, 10 (x64, x86).

This driver is fully compatible with the following versions of windows, gunze usb now has a special edition for these windows versions, only download this driver. Ps2 port, computer & window accessories. Gunze corporation gunze usb how to download and install the driver gunze usb is a mouse device. Click on, shades of customer requirements. GUNZE USB Touch Panel input device drivers. Electronic Components Supplies. Install from the operation confirmation 1. Gunze touch panel driver you can, the betrayal nerakhoon torrent, viewsonic vxwm driver. Contribute to spotify/linux development by creating an account on github.

-->

This section describes the sequence of events that occur when the system configures a PnP device that a user has added to a running machine. This discussion highlights the roles of the PnP manager, bus drivers, and function and filter drivers in enumerating and configuring a new device.

Most of this discussion is also relevant to configuring a PnP device that is present when the machine is booted. Specifically, devices whose drivers are marked SERVICE_DEMAND_START in an INF file are configured in essentially the same way whether the device is added dynamically or is present at boot time.

Devices

The following figure shows the first steps in configuring the device, starting from when the user plugs the hardware into the machine.

The following notes correspond to the circled numbers in the previous figure:

  1. A user plugs a PnP device into a free slot on a PnP bus.

    In this example, the user plugs a PnP USB joystick into the hub on a USB host controller. The USB hub is a PnP bus device because child devices can be attached to it.

  2. The function driver for the bus device determines that a new device is on its bus.

    How the driver determines this depends on the bus architecture. For some buses, the bus function driver receives hot-plug notification of new devices. If the bus does not support hot-plug notification, the user must take appropriate action in Control Panel to cause the bus to be enumerated.

    In this example, the USB bus supports hot-plug notification so the function driver for the USB bus is notified that its children have changed.

  3. The function driver for the bus device notifies the PnP manager that its set of child devices has changed.

    The function driver notifies the PnP manager by calling IoInvalidateDeviceRelations with a Type of BusRelations.

  4. The PnP manager queries the bus's drivers for the current list of devices on the bus.

    The PnP manager sends an IRP_MN_QUERY_DEVICE_RELATIONS request to the device stack for the bus. The Parameters.QueryDeviceRelations.Type value is BusRelations, indicating that the PnP manager is asking for the current list of devices present on the bus (bus relations).

    The PnP manager sends the IRP to the top driver in the device stack for the bus. According to the rules for PnP IRPs, each driver in the stack handles the IRP, if appropriate, and passes the IRP down to the next driver.

  5. The function driver for the bus device handles the IRP.

    See the reference page for IRP_MN_QUERY_DEVICE_RELATIONS for detailed information about handling this IRP.

    In this example, the USB hub driver handles this IRP for the hub FDO. The hub driver creates a PDO for the joystick device and includes a referenced pointer to the joystick PDO in its list of child devices returned with the IRP.

    When the USB hub's parent bus driver (the USB host controller class/miniclass driver pair) completes the IRP, the IRP travels back up the device stack by means of any IoCompletion routines registered by the hub drivers.

Note that the bus function driver reports a change in its list of children by requesting that the PnP manager query for its list of child devices. The resulting IRP_MN_QUERY_DEVICE_RELATIONS request is seen by all the drivers for the bus device. Typically, the bus function driver is the only driver to handle the IRP and report children. In some device stacks, a bus filter driver is present and participates in constructing the list of bus relations. One example is ACPI, which attaches as a bus filter driver for ACPI devices. In some device stacks, nonbus filter drivers handle the IRP_MN_QUERY_DEVICE_RELATIONS request, but this is not typical.

At this point, the PnP manager has the current list of devices on the bus. The PnP manager then determines whether any devices are newly arrived or have been removed. In this example, there is one new device. The following figure shows the PnP manager creating a devnode for the new device and beginning to configure the device.

The following notes correspond to the circled numbers in the previous figure:

  1. The PnP manager creates devnodes for any new child devices on the bus.

    The PnP manager compares the list of bus relations returned in the IRP_MN_QUERY_DEVICE_RELATIONS IRP to the list of children for the bus currently recorded in the PnP device tree. The PnP manager creates a devnode for each new device and initiates removal processing for any devices that have been removed.

    In this example, there is one new device (a joystick), so the PnP manager creates a devnode for the joystick. At this point, the only driver that is configured for the joystick is the parent USB hub bus driver, which created the joystick's PDO. Any optional bus filter drivers would also be present in the device stack, but the example omits bus filter drivers for simplicity.

    The wide arrow between the two devnodes in the previous figure indicates that the joystick devnode is a child of the USB hub devnode.

  2. The PnP manager gathers information about the new device and begins configuring the device.

    The PnP manager sends a sequence of IRPs to the device stack to gather information about the device. At this point, the device stack consists of only the PDO created by the device's parent bus driver and filter DOs for any optional bus filter drivers. Therefore, the bus driver and bus filter drivers are the only drivers that respond to these IRPs. In this example, the only driver in the joystick device stack is the parent bus driver, the USB hub driver.

    The PnP manager gathers information about a new device by sending IRPs to the device stack. These IRPs include the following:

    • IRP_MN_QUERY_ID, a separate IRP for each of the following types of hardware IDs:

      BusQueryDeviceID

      BusQueryInstanceID

      BusQueryHardwareIDs

      BusQueryCompatibleIDs

      BusQueryContainerID

    • IRP_MN_QUERY_DEVICE_TEXT, a separate IRP for each of the following items:

      DeviceTextDescription

      DeviceTextLocationInformation

    The PnP manager sends the IRPs listed above at this stage of processing a new PnP device, but not necessarily in the order listed, so you should not make assumptions about the order in which the IRPs are sent. Also, you should not assume that the PnP manager sends only the IRPs listed above.

    The PnP manager checks the registry to determine whether the device has been installed on this machine previously. The PnP manager checks for an <enumerator><deviceID> subkey for the device under the Enum branch. In this example, the device is new and must be configured 'from scratch.'

  3. The PnP manager stores information about the device in the registry.

    The registry's Enum branch is reserved for use by operating system components and its layout is subject to change. Driver writers must use system routines to extract information related to drivers. Do not access the Enum branch directly from a driver. The following Enum information is listed for debugging purposes only.

    • The PnP manager creates a subkey for the device under the key for the device's enumerator.

      The PnP manager creates a subkey named HKLMSystemCurrentControlSetEnum<enumerator><deviceID>. It creates the <enumerator> subkey if it does not already exist.

      An enumerator is a component that discovers PnP devices based on a PnP hardware standard. The tasks of an enumerator are carried out by a PnP bus driver in partnership with the PnP manager. A device is typically enumerated by its parent bus driver, such as PCI or PCMCIA. Some devices are enumerated by a bus filter driver, such as ACPI.

    • The PnP manager creates a subkey for this instance of the device.

      If Capabilities.UniqueID is returned as TRUE for IRP_MN_QUERY_CAPABILITIES, the device's unique ID is unique across the system. If not, the PnP manager modifies the ID so that it is unique system-wide.

      The PnP manager creates a subkey named HKLMSystemCurrentControlSetEnum<enumerator><deviceID><instanceID>.

    • The PnP manager writes information about the device to the subkey for the device instance.

      The PnP manager stores information, including the following, if it was supplied for the device:

      DeviceDesc — from IRP_MN_QUERY_DEVICE_TEXT

      Location — from IRP_MN_QUERY_DEVICE_TEXT

      Capabilities — the flags from IRP_MN_QUERY_CAPABILITIES

      UINumber — from IRP_MN_QUERY_CAPABILITIES

      HardwareID — from IRP_MN_QUERY_ID

      CompatibleIDs — from IRP_MN_QUERY_ID

      ContainerID — from IRP_MN_QUERY_ID

      LogConfBootConfig — from IRP_MN_QUERY_RESOURCES

      LogConfBasicConfigVector — from IRP_MN_QUERY_RESOURCE_REQUIREMENTS

At this point, the PnP manager is ready to locate the function driver and filter drivers for the device, if any. (See the following figure.)

The following notes correspond to the numbered circles in the previous figure:

  1. The kernel-mode PnP manager coordinates with the user-mode PnP manager and user-mode Setup components to find the function and filter drivers for the device, if there are any.

    The kernel-mode PnP manager queues an event to the user-mode PnP manager, identifying a device that needs to be installed. Once a privileged user logs in, the user-mode components proceed with finding drivers. See the device installation overview For information about Setup components and their role in installing a device.

  2. The user-mode Setup components direct the kernel-mode PnP manager to load the function and filter drivers.

    The user-mode components call back to kernel mode to get the drivers loaded, causing their AddDevice routines to be called.

The following figure shows the PnP manager loading the drivers (if appropriate), calling their AddDevice routines, and directing the drivers to start the device.

The following notes correspond to the numbered circles in the previous figure:

  1. Lower-filter drivers

    Before the function driver attaches to the device stack, the PnP manager processes any lower-filter drivers. For each lower-filter driver, the PnP manager calls the driver's DriverEntry routine if the driver is not yet loaded. Then the PnP manager calls the driver's AddDevice routine. In its AddDevice routine, the filter driver creates a filter device object (filter DO) and attaches it to the device stack (IoAttachDeviceToDeviceStack). Once it attaches its device object to the device stack, the driver is engaged as a driver for the device.

    In the USB joystick example, there is one lower-filter driver for the device.

  2. Function driver

    After any lower filters are attached, the PnP manager processes the function driver. The PnP manager calls the function driver's DriverEntry routine if the driver is not yet loaded and calls the function driver's AddDevice routine. The function driver creates a function device object (FDO) and attaches it to the device stack.

    In this example, the function driver for the USB joystick is actually a pair of drivers: the HID class driver and the HID miniclass driver. The two drivers work together to serve as the function driver. The driver pair creates only one FDO and attaches it to the device stack.

  3. Upper-filter drivers

    After the function driver is attached, the PnP manager processes any upper-filter drivers.

    In this example, there is one upper-filter driver for the device.

  4. Assigning resources and starting the device

    The PnP manager assigns resources to the device, if needed, and issues an IRP to start the device.

    • Assigning resources

      Earlier in the configuration process, the PnP manager gathered the hardware resource requirements for the device from the device's parent bus driver. After the full set of drivers is loaded for the device, the PnP manager sends an IRP_MN_FILTER_RESOURCE_REQUIREMENTS request to the device stack. All drivers in the stack have the opportunity to handle this IRP and modify the device's resource requirements list, if necessary.

      The PnP manager assigns resources to the device, if the device requires any, based on the device's requirements and the resources currently available.

      The PnP manager might need to rearrange the resource assignments of existing devices to satisfy the needs of the new device. This reassignment of resources is called 'rebalancing.' The drivers for the existing devices receive a sequence of stop and start IRPs during a rebalance, but the rebalance must be transparent to users.

      In the example of the USB joystick, USB devices do not require hardware resources so the PnP manager sets the resource list to NULL.

    • Starting the device (IRP_MN_START_DEVICE)

      Once the PnP manager assigns resources to the device, it sends an IRP_MN_START_DEVICE IRP to the device stack to direct the drivers to start the device.

    After the device is started, the PnP manager sends three more IRPs to the drivers for the device:

    • After the start IRP completes successfully, the PnP manager sends another IRP_MN_QUERY_CAPABILITIES IRP to the device stack. All the drivers for the device have the option of handling the IRP. The PnP manager sends this IRP at this time, after all drivers are attached and the device is started, because the function or filter drivers might need to access the device to collect capability information.

    • This IRP gives a driver the opportunity to, for example, report that the device should not be displayed in user interfaces such as Device Manager and the Hotplug program. This is useful for devices that are present on a system but are not usable in the current configuration, such as a game port on a laptop that is not usable when the laptop is undocked.

    • IRP_MN_QUERY_DEVICE_RELATIONS for bus relations

      The PnP manager sends this IRP to determine whether the device has any child devices. If so, the PnP manager configures each child device.

Using GUID_PNP_LOCATION_INTERFACE

The GUID_PNP_LOCATION_INTERFACE interface supplies the SPDRP_LOCATION_PATHS Plug and Play (PnP) device property for a device.

To implement this interface in your driver, handle the IRP_MN_QUERY_INTERFACE IRP with InterfaceType = GUID_PNP_LOCATION_INTERFACE. Your driver supplies a pointer to a PNP_LOCATION_INTERFACE structure that contains pointers to the individual routines of the interface. The PnpGetLocationString routine provides the device-specific part of the device's SPDRP_LOCATION_PATHS property.

-->

Non-HID keyboards and mice can connect over multiple legacy buses but still use the same class driver. This section contains details on the class drivers themselves. The following sections goes into details on the controllers.

This topic describes the typical physical configuration of keyboard and mouse devices in Microsoft Windows 2000 and later.

The following figures show two common configurations that employ a single keyboard and a single mouse.

The figure on the left shows a keyboard and a mouse connected to a system bus through independent controllers. A typical configuration consists of a PS/2-style keyboard operated through an i8042 controller, and a serial-style mouse operated through a serial port controller.

The following additional information is important for keyboard and mice manufactures:

  • Keyboards are opened in exclusive mode by the operating system stack for security reasons
  • Windows supports the simultaneous connection of more than one keyboard and mouse device.
  • Windows does not support independent access by a client to each device.

Class driver features

This topic describes the features of the following Microsoft Windows 2000 and later system class drivers:

  • Kbdclass, the class driver for devices of GUID_CLASS_KEYBOARD device class

  • Mouclass, the class driver for devices of GUID_CLASS_MOUSE device class

Kbdclass implements the Kbdclass service and its executable image is kbdclass.sys.

Mouclass implements the Mouclass service and its executable image is mouclass.sys.

Kbdclass and Mouclass each feature:

  • Generic and hardware-independent operation of the device class.

  • Plug and Play, power management, and Windows Management Instrumentation (WMI).

  • Operation of legacy devices.

  • Simultaneous operation of more than one device.

  • Connection of a class service callback routine that a function driver uses to transfer data from the input data buffer of the device to the data buffer of the class driver.

Configuration of device objects

The following figure shows the configuration of device objects for a Plug and Play PS/2-style keyboard and mouse device. Each class driver creates an upper-level class filter device object (filter DO) that is attached to a function device object (FDO) through an optional upper-level device filter DO. An upper-level device filter driver creates the upper-level device filter DO. I8042prt creates the function DO and attaches it to a physical device object (PDO) created by the root bus driver.

PS/2 Keyboard

The keyboard driver stack consists of the following.

  • Kbdclass, the upper-level keyboard class filter driver
  • One or more optional upper-level keyboard filter driver
  • I8042prt, the function driver

PS/2 Mouse

The mouse driver stack consists of the following.

  • Mouclass, the upper-level mouse class filter driver
  • One or more optional upper-level mouse filter driver
  • I8042prt, the function driver

Kbdclass and Mouclass can support more than one device in two different modes. In the one-to-one mode, each device has an independent device stack. The class driver creates and attaches an independent class DO to each device stack. Each device stack has its own control state and input buffer. The Microsoft Win32 subsystem accesses input from each device through a unique file object.

In the grandmaster mode, the class driver operates all the devices in the following way:

  • The class driver creates both a grandmaster class DO that represents all of the devices and a subordinate class DO for each device.

    The class driver attaches a subordinate class DO to each device stack. Below the subordinate class DO, the device stack is same as that created in the one-to-one mode.

  • The grandmaster class DO controls the operation of all the subordinate DOs.

  • The Win32 subsystem accesses all device input through the file object that represents the grandmaster class device.

  • All device input is buffered in the grandmaster's data queue.

  • The grandmaster maintains a single global device state.

Gunze Input Devices Driver Updater

Input

Kbdclass and Mouclass operate in the one-to-one mode if their registry entry value ConnectMultiplePorts is set to 0x00 (under the key HKLMServicesCurrentControlSet<class service>Parameters, where class service is Kbdclass or Mouclass). Otherwise Kbdclass and Mouclass operate in grandmaster mode.

Open and close via the class driver

The Microsoft Win32 subsystem opens all keyboard and mouse devices for its exclusive use. For each device class, the Win32 subsystem treats input from all the devices as if the input came from a single input device. An application cannot request to receive input from only one particular device.

The Win32 subsystem dynamically opens Plug and Play input devices after it receives notification from the Plug and Play manager that a GUID_CLASS_KEYBOARD or GUID_CLASS_MOUSE device interface is enabled. The Win32 subsystem closes Plug and Play devices after it receives notification that an opened interface is disabled. The Win32 subsystem also opens legacy devices by name (for example, 'DeviceKeyboardLegacyClass0'). Note that once the Win32 subsystem successfully opens a legacy device, it cannot determine if the device is later physically removed.

Gunze Input Devices Driver Vga

After Kbdclass and Mouclass receive a create request they do the following for Plug and Play and legacy operation:

  • Plug and Play Operation

    If the device is in the Plug and Play started state, the class driver sends the IRP_MJ_CREATE request down the driver stack. Otherwise the class driver completes the request without sending the request down the driver stack. The class driver sets the trusted file that has read access to the device. If there is a grandmaster device, the class driver sends a create request to all the ports that are associated with the subordinate class devices.

  • Legacy Operation

    The class driver sends an internal device control request to the port driver to enable the device.

Connect a service callback to a device

The class drivers must connect their class service to a device before the device can be opened. The class drivers connect their class service after they attach a class DO to a device stack. The function driver uses the class service callback to transfer input data from a device to the class data queue for the device. The function driver's ISR dispatch completion routine for a device calls the class service callback. Kbdclass provides the class service callback KeyboardClassServiceCallback, and Mouclass provides the class service callback MouseClassServiceCallback.

A vendor can modify the operation of a class service callback by installing an upper-level filter driver for a device. The sample keyboard filter driver Kbfiltr defines the KbFilter_ServiceCallback callback, and the sample mouse filter driver Moufiltr defines the MouFilter_ServiceCallback callback. The sample filter service callbacks can be configured to modify the input data that is transferred from the port input buffer for a device to the class data queue. For example, the filter service callback can delete, transform, or insert data.

The class and filter service callbacks are connected in the following way:

  • The class driver sends an internal device connect request down the device stack (IOCTL_INTERNAL_KEYBOARD_CONNECT or IOCTL_INTERNAL_MOUSE_CONNECT). The class connect data is specified by a CONNECT_DATA structure that includes a pointer to the class device object, and a pointer to the class service callback.

  • After the filter driver receives the connect request, it saves a copy of the class connect data, and replaces the request's connect data with filter connect data. The filter connect data specifies a pointer to the filter device object and a pointer to the filter driver service callback. The filter driver then sends the filtered connect request to the function driver.

The class and filter service callbacks are called in the following way:

  • The function driver uses the filter connect data to make the initial callback to the filter service callback.

  • After filtering the input data, the filter service callback uses the class connect data that it saved to make a callback to the class service callback.

Query and set a keyboard device

I8042prt supports the following internal device control requests to query information about a keyboard device, and to set parameters on a keyboard device:

For more information about all keyboard device control requests, see Human Interface Devices Reference.

Gunze input devices driver vga

Scan code mapper for keyboards

In Microsoft Windows operating systems, PS/2-compatible scan codes provided by an input device are converted into virtual keys, which are propagated through the system in the form of Windows messages. If a device produces an incorrect scan code for a certain key, the wrong virtual key message will be sent. This can be fixed by writing a filter driver that analyzes the scan codes generated by firmware and modifies the incorrect scan code to one understood by the system. However, this is a tedious process and can sometimes lead to severe problems, if errors exist in the kernel-level filter driver.

Windows 2000 and Windows XP include a new Scan Code Mapper, which provides a method that allows for mapping of scan codes. The scan code mappings for Windows are stored in the following registry key:

Note There is also a Keyboard Layouts key (notice the plural form) under the Control key, but that key should not be modified.

Gunze Input Devices Driver Win 7

In the Keyboard Layout key, the Scancode Map value must be added. This value is of type REG_BINARY (little Endian format) and has the data format specified in the following table.

Start offset (in bytes)Size (in bytes)Data
04Header: Version Information
44Header: Flags
84Header: Number of Mappings
124Individual Mapping
.........
Last 4 bytes4Null Terminator (0x00000000)

The first and second DWORDS store header information and should be set to all zeroes for the current version of the Scan Code Mapper. The third DWORD entry holds a count of the total number of mappings that follow, including the null terminating mapping. The minimum count would therefore be 1 (no mappings specified). The individual mappings follow the header. Each mapping is one DWORD in length and is divided into two WORD length fields. Each WORD field stores the scan code for a key to be mapped.

Once the map is stored in the registry, the system must be rebooted for the mappings to take effect. Note that if the mapping of a scan code is necessary on a keypress, the step is performed in user mode just before the scan code is converted to a virtual key. Doing this conversion in user mode can present certain limitations, such as mapping not working correctly when running under Terminal Services.

To remove these mappings, remove the Scancode Map registry value and reboot.

Example 1

The following presents an example. To swap the left CTRL key with the CAPS LOCK key, use a registry editor (preferably Regedt32.exe) to modify the Scancode Map key with the following value:

The following table contains these entries broken into DWORD fields and the bytes swapped.

Value: Interpretation

0x00000000: Header: Version. Set to all zeroes.

Gunze Input Devices driver

0x00000000: Header: Flags. Set to all zeroes.

0x00000003: Three entries in the map (including null entry).

0x001D003A: Left CTRL key --> CAPS LOCK (0x1D --> 0x3A).

0x003A001D: CAPS LOCK --> Left CTRL key (0x3A --> 0x1D).

0x00000000: Null terminator.

Example 2

It is also possible to add a key not generally available on a keyboard or to remove a key that is never used. The following example shows the value stored in Scancode Map to remove the right CTRL key and change the functionality of the right ALT key to work as a mute key:

The following table contains these entries broken into DWORD fields and the bytes swapped.

Value: Interpretation

0x00000000: Header: Version. Set to all zeroes.

0x00000000: Header: Flags. Set to all zeroes.

0x00000003: Three entries in the map (including null entry).

0xE01D0000: Remove the right CTRL key (0xE01D --> 0x00).

0xE038E020: Right ALT key --> Mute key (0xE038 --> 0xE020).

0x00000000: Null terminator.

After the necessary data is generated, it can be inserted into the registry in several ways.

  • A .reg file can be generated that can be easily incorporated into the system registry using a registry editor.
  • An .inf file can also be created with an [AddReg] section that contains the registry information to be added.
  • Regedt32.exe can be used to manually add the information to the registry.

The Scan Code Mapper has several advantages and disadvantages.

The advantages include:

  • The Mapper can be used as an easy fix to correct firmware errors.
  • Frequently used keys can be added to the keyboard by modifying the map in registry. Keys that aren't often used (for example, right CTRL key) can be mapped to null (removed) or exchanged for other keys.
  • Key locations can be altered easily. Users can easily customize the location of frequently used keys for their benefit.

The following disadvantages are recognized:

  • Once the map is stored in the registry, a system reboot is required to activate it.
  • The mappings stored in the registry work at system level and apply to all users. These mappings cannot be set to work differently depending on the current user.
  • The current implementation restricts the functionality of the map such that mappings always apply to all keyboards connected to the system. It is not currently possible to create a map on a per-keyboard basis.

Query a mouse device

I8042prt supports the following internal device control request to query information about a mouse device:

For more information about all mouse device control requests, see Human Interface Devices Reference.

Registry settings associated with mouse class driver

The following is a list of registry keys associated with the mouse class driver.

[Key: HKLMSYSTEMCurrentControlSetServicesMouclassParameters]

  • MaximumPortsServiced – Not used on Windows XP and later. Only for Windows NT4.
  • PointerDeviceBaseName – Specifies the base name for the device objects created by the mouse class device driver
  • ConnectMultiplePorts – Determines whether there is one or more than one port device object for each class device object. This entry is used primarily by device drivers.
  • MouseDataQueueSize - Specifies the number of mouse events buffered by the mouse driver. It also is used in calculating the size of the mouse driver's internal buffer in the nonpaged memory pool.

Absolute pointing devices

Gunze Input Devices Drivers

For devices of type GUID_CLASS_MOUSE, a device's function driver:

  • Handles device-specific input.

  • Creates the MOUSE_INPUT_DATA structures required by MouseClassServiceCallback.

  • Transfers MOUSE_INPUT_DATA structures to the Mouclass data queue by calling MouseClassServiceCallback in its ISR dispatch completion routine.

Gunze Input Devices Driver

For an absolute pointing device, the device's function driver must set the LastX, LastY, and Flags members of the MOUSE_INPUT_DATA structures in the following way:

  • In addition to dividing the device input value by the maximum capability of the device, the driver scales the device input value by 0xFFFF:

  • The driver sets the MOUSE_MOVE_ABSOLUTE flag in Flags.

  • If the input should be mapped by Window Manager to an entire virtual desktop, the driver sets the MOUSE_VIRTUAL_DESKTOP flag in Flags. If the MOUSE_VIRTUAL_DESKTOP flag is not set, Window Manager maps the input to only the primary monitor.

The following specifies, by type of device, how these special requirements for an absolute pointing device are implemented:

  • HID devices:

    Mouhid, the Windows function driver for HID mouse devices, implements these special requirements automatically.

  • PS/2-style devices:

    An upper-level filter driver is required. The filter driver supplies an IsrHook callback and a class service callback. I8042prt calls the IsrHook to handle raw device input, and calls the filter class service callback to filter the input. The filter class service callback, in turn, calls MouseClassServiceCallback. The combination of the IsrHook callback and the class service callback handles device-specific input, creates the required MOUSE_INPUT_DATA structures, scales the device input data, and sets the MOUSE_MOVE_ABSOLUTE flag.

  • Plug and Play COM port devices that are enumerated by Serenum:

    A Plug and Play function driver is required. The function driver creates the required MOUSE_INPUT_DATA structures, scales the device input data, and sets the MOUSE_MOVE_ABSOLUTE flag before it calls MouseClassServiceCallback.

  • Non-Plug and Play COM port devices:

    A device-specific function driver is required. The function driver creates the required MOUSE_INPUT_DATA structures, scales the device input data, and sets the MOUSE_MOVE_ABSOLUTE flag before it calls MouseClassServiceCallback.

  • Device on an unsupported bus:

    A device-specific function driver is required. The function driver creates the required MOUSE_INPUT_DATA structures, scales the device input data, and sets the MOUSE_MOVE_ABSOLUTE flag before it calls MouseClassServiceCallback.