There are two options for using a USB mouse or a USB keyboard - the
standalone Boot Protocol way and the full featured HID driver way. The
Boot Protocol way is generally inferior, and this document describes
the full featured way. The Boot Protocol way may be appropriate for
embedded systems and other systems with resource constraints and no real
need for the full keyboard and mouse capabilities.
It is important to remember that the HID driver handles those devices
(or actually those interfaces on each device) that claim to comply
with the Human Interface
Device (HID) specification. However the HID specification
doesn't say anything about what the HID driver should do with
information received from a HID device, or where the information that
is sent to a device comes from, since this is obviously dependent on
what the device is supposed to be doing, and what the operating system
is. Linux (at the operating system kernel level) supports four
interfaces to a HID device - keyboard, mouse, joystick and a generic
interface, known as the event interface.
In the kernel configuration stage, you need to turn on
USB Human Interface Device (HID) support and
Mouse Support Do not turn on
USB HIDBP Mouse support.
Perform the normal kernel rebuild and installation steps.
If you are installing as modules, you need to load
the input.o, hid.o and
mousedev.o modules.
Plug in a USB mouse and check that your mouse has been correctly sensed
by the kernel. If you don't have a kernel message, look for the
changes to /proc/bus/usb/devices.
Since USB supports multiple identical devices, you can have multiple
mice plugged in. You can get each mouse seperately, or you can get
them all mixed together. You almost always want the mixed version, and
that is what will be used together.
You need to set up a device node entry for the mixed mice. It is
customary to create the entries for this device in the
/dev/input/ directory. Use the following commands:
mkdir /dev/input
mknod /dev/input/mice c 13 63 |
If you cat /dev/input/mice you should see
some bizarre looking characters as you move the mouse or click any
of the buttons.
If you want to use the mouse under X, you have various options. Which one
you select is dependent on what version of XFree86 you are using and
whether you are using only USB for your
mouse (or mice), or whether you want to use a USB mouse and some
other kind of pointer device.
You need to edit the XF86Config file
(usually /usr/X11R6/lib/X11/XF86Config or
/etc/X11/XF86Config).
If you are using XFree86 version 4.0 or later,
add a InputDevice section that looks
like the following:
Section "InputDevice"
Identifier "USB Mice"
Driver "mouse"
Option "Protocol" "IMPS/2"
Option "Device" "/dev/input/mice"
EndSection |
or, if you want to use a wheel mouse, something like:
Section "InputDevice"
Identifier "USB Mice"
Driver "mouse"
Option "Protocol" "IMPS/2"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5"
Option "Buttons" "5"
EndSection |
may be more useful. Consult the XFree86 documentation for a detailed
explaination and more examples.You also need to add an entry to each applicable
ServerLayout Section. These are normally at the
end of the configuration file. If you only have a USB mouse (or USB mice),
then replace the line with the "CorePointer" entry
with the following line:
InputDevice "USB Mice" "CorePointer" |
If you want to use both a USB mouse (or USB mice) and some other kind of pointer
device, then add (do not replace) the following line to the applicable
ServerLayout sections:
InputDevice "USB Mice" "SendCoreEvents" |
If you are using only a USB mouse (or USB mice) with XFree86 3.3,
edit the Pointer section so that it
looks like the following:
Section "Pointer"
Protocol "IMPS/2"
Device "/dev/input/mice"
EndSection |
If you are trying to use a USB mouse (or USB mice) in addition
to another pointer type device with XFree86 3.3,
then you need to use the XInput extensions. Keep the existing Pointer (or modify it as required for the other device if you
are doing an initial installation), and add the following entry (anywhere
sensible, ideally in the Input devices
area):
Section "Xinput"
SubSection "Mouse"
DeviceName "USB Mice"
Protocol "IMPS/2"
Port "/dev/input/mice"
AlwaysCore
EndSubSection
EndSection |
Restart the X server. If you don't have any mouse support at
this point, remember that Ctrl-Alt-F1 will get you a virtual terminal
that you can use to kill the xserver and start debugging from the error
messages.
If you want to use the mouse under gpm, run (or kill and restart if it is already
running) gpm with the following options.
gpm -m /dev/input/mice -t imps2
(as superuser remember). You can make this the default if you edit the
initialisation files. These are typically named something like
rc.d and are in /etc/rc.d/ on
RedHat distributions.
If you have both a USB mouse (or USB mice) and some other kind of pointer
device, you may wish to use gpm in repeater mode. If you have a PS/2 mouse
on /dev/psaux and a USB mouse (or USB mice) on
/dev/input/mice, then the following gpm command
would probably be appropriate:
gpm -m /dev/input/mice -t imps2 -M -m /dev/psaux -t ps2 -R imps2.
Note that this will make the output appear on /dev/gpmdata,
which is a FIFO and does not need to be created in advance. You can use this as
the mouse "device" to non-X programs, and both mice will work together.
You may not need any operating system support at all to use a USB keyboard
if you have a PC architecture.
There are several BIOS available where the BIOS can provide USB support
from a keyboard plugged into the root hub on the motherboard. This may or
may not work through other hubs and does not normally work with
add-in boards, so you might want to add in support anyway. You definately want
to add keyboard support if you add any operating system support, as the Linux
USB support will disable the BIOS support. You also need to use Linux USB
keyboard support if you want to use any of the "multimedia" types keys that
are provided with some USB keybords.
In the kernel configuration stage, you need to turn on
USB Human Interface Device (HID) support and
Keyboard support. Do not turn on
USB HIDBP Keyboard support.
Perform the normal kernel rebuild and installation steps.
If you are installing as modules, you need to load
the hid.o, input.o and
keybdev.o modules.
Check the kernel logs to ensure that your keyboard is being correctly sensed
by the kernel.
At this point, you should be able to use your USB keyboard as
a normal keyboard. Be aware that LILO is not USB aware, and that
unless your BIOS supports a USB keyboard, you may not be able to
select a non-default boot image using the USB keyboard. I have
personally used only a USB keyboard (and USB mouse) and have
experienced no problems.
In the kernel configuration stage, you need to turn on
USB Human Interface Device (HID) support and
Joystick support.
Perform the normal kernel rebuild and installation steps.
If you are installing as modules, you need to load
the hid.o, input.o and
joydev.o modules.
You need to set up a device node entry for the joystick. It is
customary to create the entries for USB device in the
/dev/usb/ directory. You can use the following
commands to create four device nodes, although there is no reason why
you can not use more:
mknod /dev/input/js0 c 13 0
mknod /dev/input/js1 c 13 1
mknod /dev/input/js2 c 13 2
mknod /dev/input/js3 c 13 3 |
If you plug in a gamepad or joystick and
cat /dev/input/js0 you should see
some bizarre looking characters as you move the stick or click any
of the buttons.
You should now be able to use the USB joystick or gamepad with any
of the normal games or other joystick compatible applications.