#title Configuring Input Devices ||<>|| Ubuntu supports input-hotplug. With this functionality, it's likely that you won't need to do any configuration at all to make your devices work, assuming they're recognized and set up by the kernel. However, if you do need to do adjust things, read on. == Dynamic Input Configuration with xinput == The {{{xinput}}} command line tool can be used for some on-the-fly configuration adjustments. To view a listing of the input devices X sees, run: {{{ $ xinput list ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ SynPS/2 Synaptics TouchPad id=8 [slave pointer (2)] ⎜ ↳ Logitech USB Receiver id=9 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Lite-On Technology Corp. ThinkPad USB Keyboard with TrackPoint id=7 [slave keyboard (3)] }}} Individual devices can be queried for more details by using the numerical id or the name: {{{ $ xinput query-state 9 2 classes : ButtonClass button[1]=up button[2]=up button[3]=up button[4]=up button[5]=up button[6]=up button[7]=up button[8]=up button[9]=up button[10]=up button[11]=up button[12]=up button[13]=up button[14]=up button[15]=up button[16]=up button[17]=up button[18]=up button[19]=up button[20]=up button[21]=up button[22]=up button[23]=up button[24]=up ValuatorClass Mode=Relative Proximity=In valuator[0]=66 valuator[1]=925 }}} {{{xinput}}} can also be used to alter the button mappings on mice and adjust the acceleration and feedback settings. Different input drivers may also expose arbitrary properties for applications to set. Synaptics touchpads are particularly configurable like this, but other devices have some more general properties. {{{ $ xinput list-props 8 Device 'SynPS/2 Synaptics TouchPad': Device Enabled: 1 Synaptics Edges: 1632, 5312, 1575, 4281 Synaptics Finger: 25, 30, 256 Synaptics Tap Time: 180 Synaptics Tap Move: 220 Synaptics Tap Durations: 180, 180, 100 Synaptics Tap FastTap: 0 [...] $ xinput set-int-prop 8 "Device Enabled" 8 0 $ xinput list-props 8 Device 'SynPS/2 Synaptics TouchPad': Device Enabled: 0 Synaptics Edges: 1632, 5312, 1575, 4281 Synaptics Finger: 25, 30, 256 Synaptics Tap Time: 180 Synaptics Tap Move: 220 Synaptics Tap Durations: 180, 180, 100 Synaptics Tap FastTap: 0 [...] }}} == Input Configuration with InputClass sections == To set e.g. the Coordinate Transformation Matrix in an xorg.conf type file (e.g., `/etc/X11/xorg.conf.d/90-rotate-screen.conf`), set the [[http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading8|"TransformationMatrix"]] option ('''NOT''' `"CoordinateTransformationMatrix"` or `"Coordinate Transformation Matrix"`!!!!) in an [[http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading8|InputDevice]] or [[http://www.x.org/archive/current/doc/man/man5/xorg.conf.5.xhtml#heading9|InputClass]] section; for example: {{{ Section "InputClass" Identifier "RotateTouchCW" MatchProduct "N-Trig MultiTouch" Option "TransformationMatrix" "0 1 0 -1 0 1 0 0 1" EndSection }}} == Example: Disabling middle-mouse button paste on a scrollwheel mouse == Scrollwheel mice support a middle-button click event when pressing the scrollwheel. This is a great feature, but you may find it irritating. Fortunately it can be disabled. First, you need to know the id of the mouse, like this: {{{ $ xinput list | grep 'id=' "Virtual core pointer" id=0 [XPointer] "Virtual core keyboard" id=1 [XKeyboard] "AT Translated Set 2 keyboard" id=2 [XExtensionKeyboard] "Macintosh mouse button emulation" id=3 [XExtensionPointer] "Logitech USB-PS/2 Optical Mouse" id=4 [XExtensionPointer] }}} My mouse has the Logitech logo printed on it, so I gather I need the last entry. I can view the current button mapping thusly: {{{ $ xinput get-button-map 4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 10 }}} Really, only the first three numbers have meaning for me. They represent the left, middle, and right mouse buttons. {{{ $ xinput get-button-map 4 }}} I can turn the middle mouse button off by setting it to 0: {{{ $ xinput set-button-map 4 1 0 3 }}} Or I can turn the middle-mouse button into a left-mouse button by setting it to 1: {{{ $ xinput set-button-map 4 1 1 3 }}} To make this set on a per-user basis, I can plug that line into my ~/.xstartup or other init file. It can also be done via configuring a matching InputClass section on xorg.conf. == Contributed Documentation == The following documentation was provided by various people in the past. Generally, much of it was written for pre-InputHotplug X, so may or may not still work in Intrepid. * [[X/InputCoordinateTransformation|Input Device Coordinate Mapping]] - How to set the mapping of an input device to a display through X Keyboard Config * [[https://help.ubuntu.com/community/MultimediaKeys|General Multimedia keyboard]] - Probably out of date as of Intrepid due to input-hotplug * [[https://wiki.ubuntu.com/USBKeyboardInstall|USB keyboard]] - Probably out of date as of Intrepid due to input-hotplug * [[https://help.ubuntu.com/community/AppleKeyboard|Apple Keyboard]] - Probably out of date as of Intrepid due to input-hotplug * [[https://help.ubuntu.com/community/MicrosoftNaturalErgonomicKeyboard4000|Microsoft Natural Ergonomic 4000 keyboard]] - Probably obsolete * [[https://help.ubuntu.com/community/LogitechG15|Logitech G15 keyboard]] - Probably obsolete Mouse Config * [[https://help.ubuntu.com/community/ManyButtonsMouseHowto|General Multi-Button mouse]] * [[https://help.ubuntu.com/community/BluetoothInputDevices|Bluetooth input devices]] * [[https://help.ubuntu.com/community/IntellimouseMousemanBackForwardButtons|Intellimouse Mouseman buttons]] - Probably obsolete * [[https://help.ubuntu.com/community/MX1000Mouse|Logitech MX1000 mouse]] * [[https://help.ubuntu.com/community/G7Mouse|Logitech G7 mouse]] * [[https://help.ubuntu.com/community/Logitech_MX610|Logitech MX610 mouse]] * [[https://help.ubuntu.com/community/RazerCopperHeadMouse|Razer CopperHead mouse]] * [[https://help.ubuntu.com/community/SerialMouseHowto|Serial mouse]] * [[https://help.ubuntu.com/community/Logitech_Marblemouse_USB|Logitech Marble Mouse USB - hal fdi policy for Intrepid]] Tablet Config * [[https://help.ubuntu.com/community/TabletSetup|Tablets]] * [[https://help.ubuntu.com/community/Wacom|Wacom tablet]] * [[https://help.ubuntu.com/community/WacomTroubleshooting|Wacom tablet troubleshooting]] * [[https://help.ubuntu.com/community/AiptekTablet|Aiptek tablets]] * [[https://help.ubuntu.com/community/TabletSetupWizardpen|Wizardpen]] Touchpad Config * [[https://help.ubuntu.com/community/SynapticsTouchpad|Synaptics touchpad]] * [[https://help.ubuntu.com/community/SynapticsTouchpad/AppleIbookG4|Apple iBook G4 touchpad]] * [[https://wiki.ubuntu.com/MacBook/SantaRosa#Touchpad%20(appletouch)|Apple Macbook touchpad on Ubuntu 8.10 (Intrepid)]] * [[https://wiki.ubuntu.com/DebuggingTouchpadDetection|Debugging touchpad detection]] Game Controller Config * [[https://help.ubuntu.com/community/CWiiD|Wii Remote game controller]] == Don't Zap == === Using GNOME === * Get to the System->Preferences->Keyboard menu. * Select the "Layouts" tab and click on the "Options" button. * Then select "Key sequence to kill the X server" and enable "Control + Alt + Backspace". If this doesn't work (e.g. the option is unchecked but the key sequence still works), you can edit your /etc/X11/xorg.conf as explained below === Using KDE === * Open System Settings and go to {{{Input Devices}}}. * In the {{{Keyboard}}} section open the {{{Advanced}}} tab. * Check the {{{Configure keyboard options}}} box if it's not already enabled. * Expand the {{{Key sequence to kill the X server}}} option and check the box labelled {{{Control + Alt + Backspace}}}. * Make sure to click the {{{Apply}}} button to apply the changes. === Using the command line === You can type the following command to enable Zapping immediately. {{{ setxkbmap -option terminate:ctrl_alt_bksp }}} If you're happy with the new behaviour you can add that command to your ~/.xinitrc in order to make the change permanent. == Sticky Keys == It may be worth mentioning that the Accessibility shortcuts (for both KDE and Gnome) are enabled by holding the shift-key for 8 seconds. (This is easy to do if, say, selecting multiple items with the mouse). As a result, it's easy to inadvertently enable "Sticky Keys". Now, if you press Ctrl and then release it, and a bit later, you press Alt-Bksp (the shortcut to delete a whole word), then Boom! Bye-bye X-session Sad :-( Also, unlike Ctrl-Alt-Del, the Ctrl-Alt-Bksp shortcut is not trapped. It's instant death (without confirmation) for the X-server, and too bad about your unsaved files. That's why DontZap is a good default. For anyone missing the ability to kill the X-server in emergency, may I point out Alt-SysRq-R, followed by Ctrl-Alt-F1 (the first puts the keyboard back into Raw mode, i.e. outside the control of the X-server; the latter switches Virtual Terminal.) Or you can use Alt-SysRq-K to kill the current session.