Install Realtek Input Device driver for Windows 10 x64, or download DriverPack Solution software for automatic driver installation and update. Search drivers for Keyboards, Mouses, Joysticks, Trackballs, Tablets, Digitizers and other input devices.
Drivers Catalog ⇒ Human Interface Devices ⇒ Full List of Human Interface Devices
Input Devices - Tools for inserting all types of information into the computer. They make up the hardware interface between the operation system and device, which is often connected via USB cable. Depending on the type of data input, all instruments are divided into 4 types: demonstrative, graphics, sound and game.
By pointing input devices are included followings: keyboard, mouse, trackball, touchpad, joystick and light pen. All they send certain signals, whereby the computer performs the specified actions. Drivers for USB input devices recognize the signals for the system. This category also includes a touch screen, which is used to communicate with the PC and uses the touch of your fingers.
By the method of the cursor control tools are divided into direct, engaged directly in the input cursor visibility, and indirect, by entering the no cursor visibility.
By graphical input devices are included followings: video capture card, scanner, web camera and digital camera. The microphone and digital recorders are used to insert the audio information to the row. Different type of input devices are considered to be installed: the gaming peripherals, joysticks, levers motion simulators, gamepads, steering wheels, pedals and dance platforms.
All of the above tools are typically connected to the PC / laptop via the high speed interface USB. For their stable performance and fine-tuning it is recommended to download drivers for USB input devices.
By pointing input devices are included followings: keyboard, mouse, trackball, touchpad, joystick and light pen. All they send certain signals, whereby the computer performs the specified actions. Drivers for USB input devices recognize the signals for the system. This category also includes a touch screen, which is used to communicate with the PC and uses the touch of your fingers.
By the method of the cursor control tools are divided into direct, engaged directly in the input cursor visibility, and indirect, by entering the no cursor visibility.
By graphical input devices are included followings: video capture card, scanner, web camera and digital camera. The microphone and digital recorders are used to insert the audio information to the row. Different type of input devices are considered to be installed: the gaming peripherals, joysticks, levers motion simulators, gamepads, steering wheels, pedals and dance platforms.
All of the above tools are typically connected to the PC / laptop via the high speed interface USB. For their stable performance and fine-tuning it is recommended to download drivers for USB input devices.
Here are manufacturers of Human Interface Devices, drivers for which you can download on our website. 4833 drivers for 672 devices from 59 manufacturers, you can download absolutely free of charge. Select the desired device, the manufacturer or the device ID.
Top Vendors of Human Interface Devices
Top Models of Human Interface Devices
# | Vendor | Device Name |
1 | Cirque | GlidePoint 3.6 USB Combo (Mercury) |
2 | Microsoft | Sony Programmable I/O Control Device |
3 | Microsoft | Thrustmaster Top Gun-Joystick (USB) |
4 | Cirque | GlidePoint 3.3 PS/2 Smart Cat PRO (Mercury) |
5 | Sentelic | Finger Sensing Pad HID Driver |
6 | Microsoft | Cherry GmbH USB Keyboard |
7 | Lexmark | Lexmark 3400 Series Human Interface Device |
8 | Microsoft | ThrustMaster Top Gun USB Joystick (rev2) |
9 | ITE | ITECIR Infrared Receiver (CHIP) |
10 | N-Trig | N-Trig HID Interface |
11 | FINTEK | HID Minidriver Collection for Fintek CIR |
12 | Logitech | Logitech WingMan Formula GP |
13 | Logitech | Logitech HID Keyboard Wheel |
14 | Microsoft | Sony Notebook Control Device |
15 | Cirque | GlidePoint 3.6 PS/2 Smart Cat PRO (Mercury) |
16 | Logitech | Logitech WingMan Gamepad Black (USB) |
17 | ITE | ITECIR Infrared Receiver (SIO2) |
18 | Microsoft | Teclado USB Samsung V2 |
19 | Microsoft | ThrustMaster Rage 3D-Gamepad (USB) |
20 | Wacom | Wacom HID Device |
To write an input driver, you must first create your owninput module. The sample directory contains asample skeleton for creating a module. We recommend that youuse this as a starting point.
A module is represented by a data type calledinput_module_t. It contains various datafields and function pointers representing its interface.
input_module_t data type
Writing an input module consists of simply creating aninput_module_t representing your module andfilling in the relevant interface functions.
- driver class:
- DEVI_CLASS_KBD — keyboard
- DEVI_CLASS_REL — relative
- DEVI_CLASS_ABS — absolute
- driver layer that this module represents:
- DEVI_MODULE_TYPE_FILTER — filter
- DEVI_MODULE_TYPE_PROTO — protocol
- DEVI_MODULE_TYPE_DEVICE — device
In the sample directory
The code in the sample directory provides lots of commentsdetailing the steps required to initialize your module, andwhat to put in your module's functions.
You'll also find two modules:
- samp_dev — an example of a device module.
- samp_proto — the MS-mouse protocol code with lots of comments.
You'll also find a README file that providesfurther background info on how the system processes datafrom keyboard and absolute devices.
In many embedded systems, a combination device/protocolmodule is called for. For details, see the section on“Writing a combination device/protocol module”in this chapter. |
Device modules can pass data in any format they want up toprotocol modules. But protocol modules must pass data ina specific format to filter modules.
This protocol module: | Must format data into a: |
---|---|
Keyboard | struct packet_kbd |
Relative | struct packet_rel |
Absolute | struct packet_abs |
See the header <devi.h> for the format of these structures.All these structures have a timestamp field; you fill them inusing the library call clk_get().
When writing keyboard device modules, keep in mind that theprotocol/filter layers will expect make-and-break scan codesindicating when a key is pressed down and released. Theeasiest thing to do is to map the scan codes your devicesends to the standard PC scan codes. This way you won't haveto make any filter-layer changes — it will all justwork like a normal PC keyboard. Standard PC scan codes areavailable in any PC hardware book.
When passing up a struct packet_kbd to the filter layer, all youneed to do is:
- Fill in the key_scan field of the struct _keyboard_datawith the scan code.
- Fill in the flags field with KEY_SCAN_VALID.
The keyboard filter layer will read in a keyboarddefinition file and interpret the scan codes itreceives based on the contents of this file.
The keyboard definition files are typically kept in thelocation$PHOTON_PATH/keyboard, where$PHOTON_PATH depends on you systemconfiguration (e.g. this might be /usr/photon on your machine).In this directory there's a file calledsample.kdef, which provides a sample definition file. The .kdeffiles are compiled into .kbd files using the utilities kbcvtand mkkbd.
Both of these utilities are shipped with Photon for QNX 4. |
You shouldn't have to play around with these mapping filesvery much if you map your scan codes appropriately. The onlyplace where you might need to modify these files is if your keyboardhas special keys. In this case, you would start with a standard definitionfile (e.g. en_US_101.kdef), and add your uniquescan codes.
When the driver starts up and initializes the keyboard filter module,the module will try to load in a mapping definition file.It uses the following algorithm to look for the file:
- The module tries to open the keyboard configuration file/etc/system/trap/.KEYBOARD.If this file exists, the module just reads thekeyboard filename from it.
- If the keyboard mapping filename is empty, the moduletries to take it from the KBD environmentvariable.
- If the keyboard mapping filename is still empty, themodule assigns the standard US keyboard definition file(en_US_101.kbd) to it.
- The module tries to find this file in the %PHOTON%/keyboard directory.
- If the PHOTON environment variable isn'tdefined, the module tries to open it in the /usr/photon/keyboard directory.
The elo directory contains an example of atouchscreen protocol module.
Mobile Action Input Devices Driver Updater
Absolute devices (e.g. touchscreens) need to be calibrated.They typically generate “raw” coordinates thatmust be translated into actual screen coordinates. Thescreen coordinates they're translated into depend on thescreen resolution.
The device/protocol layer module receives raw coordinates fromthe touchscreen device, formats a packet_abs structure, and passes itup to the absolute filter.
The absolute filter module takes care of translating rawcoordinates into screen coordinates. To do this, the moduletries to locate and read in a calibration file on startup via:
- Command-line option to the absolute filter (-ffilename)
- ABSF environment variable
- /etc/system/config/calib.hostname
Calibration file format
The format of this file is as follows:
where:
- XL
- X screen coordinate of upper left side (typically 0).
- YL
- Y screen coordinate of upper left side (typically 0).
- XH
- X screen coordinate of lower right side (typically X screen resolution − 1).
- YH
- Y screen coordinate of lower right side (typically Y screen resolution − 1).
- XRL
- Raw touchscreen X coordinate at upper left side.
- XRH
- Raw touchscreen X coordinate at lower right side.
- YRL
- Raw touchscreen Y coordinate at upper left side.
- YRH
- Raw touchscreen Y coordinate at lower right size.
- SWAP
- Whether to swap X or Y axes (0 is no, 1 is yes.) It's safe to leave this as 0.
This calibration file is typically generated by the Photontouchscreen calibration application, calib.When the utility starts, it sends a message to the devi- driver asking it to switch toraw mode, and then solicits coordinate info by asking the user totouch the screen at all four corners and the middle. Afterdoing this, calib formats the absf file, sends acalibration message to the devi-* driver, and writes the file.
The hirun directory contains examples of amouse device (kb.c) and protocol (msoft.c, ps2.s, msys.c) modules.
Since these modules cover all the main types of relativedevices, you probably won't need to develop something newfrom scratch. If you need to implement support for anydevice that's not completely supported by this driver, youcan simply copy the files from this directory into a new oneand modify them.
Note that Microsoft and Mouse Systems class devices don't have a device module — they justuse /dev/serN to get raw data from a serial communication port.A PS/2 mouse shares the 8042 controller device driver (kb.c) with a standardkeyboard.
The protocol layer module receives raw coordinates fromthe mouse, formats a packet_rel structure, andthen passes it up to the relative filter.
The relative filter module implements an accelerationalgorithm, converts raw data received from the protocollevel according to the current speed parameter, and emitsthis data in the form of events to Photon.
The main part of developing a new module involvesimplementing several standard callback functions, combined“under the roof” of the module's instance ofthe input_module_t structure.
Consider implementing the following callbacks:
- init()
- Should be called for a one-time initialization of amodule's state after it's loaded.
- reset()
- Used to reset a module's and/or device's state. Youwould call it when the module is linked into an event busline; if necessary, it could be called from your code as areaction to any sort of device trouble.
- input()
- You usually implement this callback function in protocolmodules as part of the device-to-interface data channel.
- output()
- Usually called by higher-layer modules asking for datato be sent to the device. You can use this callback forpassing commands to control an input device.
- pulse()
- Usually implemented in device class modules. Thiscallback is automatically activated each time that aregistered interrupt handler wants to notify a device moduleabout input activity.
- parm()
- Called by the Input Runtime System to parse anycommand-line parameters given to the module.
- devctrl()
- Used by modules in an event bus line to send commands toeach other. This callback may also be called as a responseto the external devctl() call. You can use thiscallback for reconfiguring a driver on the fly.
- shutdown()
- Called when the Input Runtime System is shutting down.
Which callbacks are required?
To decide which callback functions should be implemented ina module, you'll need to consider the module's purpose. Ingeneral, a device module must have the followingfunctions:
- pulse() (if it doesn't use an interrupt handler)
- init()
- parm()
- devctrl()
A protocol module, in turn, must have at least theinput() function (and optionallyinit(), parm(), anddevctrl()).
Callback sequence
At startup, the Input Runtime System always calls a module'scallback functions in the following sequence:
init() → parm() → reset()
Input Mapper
If you're writing a driver for a custom type of device whereit doesn't make sense to split up the functionality ofdevice and protocol, you can write acombination module.
To do this, you simply proceed as you would when writing a“normal” driver: fill in your callbacks, talkto your device, interpret its protocol, etc.
In addition, there are two things you have to do:
- In the type field, put in DEVI_MODULE_TYPE_DEVICE | DEVI_MODULE_TYPE_PROTOin addition to the DEVI_CLASS_ manifest.
- When you've interpreted the data from your device,package up a struct packet_* (depending onyour class of device) and send it up.
Because the devi-* framework is multithreaded,you should be aware of a possible reentrancy issue. When adevi-* driver is invoked, a module may bespecified multiple times, where each invocation will belongto a separate event bus line.
An example is the keyboard controller device module(kb). This module can communicate with akeyboard and with a PS/2 mouse. We would invoke the driveras follows:
Here we'll have two event bus lines: one for the keyboard andone for the mouse. Upon initialization, the input frameworkwill use the static kb data structure (input_module_t) for one ofthe bus lines and dynamically allocate/copy another one for theother bus line.
If you keep your module-specific data confinedto the private data member of the module structure, you won't haveany problems with reentrancy. But if your module contains globalvariables, then you'll have to use some sort of mutual exclusionmechanism for protection.
![Download Download](/uploads/1/3/8/2/138246902/210798910.jpg)
Note that you don't have to ensure that theinit(), reset(), and parm()callbacks are reentrant, because they're always called froma single thread upon initialization. (However, if for somereason you need to call them when the runtime system is up,then you'd have to ensure that they're reentrant.) Thecallbacks used at runtime (e.g. the pulse()callback) are the ones at risk.
Output Devices Of Computer
For more information, see the keyboard controller module code (hirun/kb.c).