#
# USB Input driver configuration
#
comment "USB Input Devices"
	depends on USB

config USB_HID
	tristate "USB Human Interface Device (full HID) support"
	depends on USB
	---help---
	  Say Y here if you want full HID support to connect keyboards,
	  mice, joysticks, graphic tablets, or any other HID based devices
	  to your computer via USB. You also need to select HID Input layer
	  support (below) if you want to use keyboards, mice, joysticks and
	  the like ... as well as Uninterruptible Power Supply (UPS) and
	  monitor control devices.

	  You can't use this driver and the HIDBP (Boot Protocol) keyboard
	  and mouse drivers at the same time. More information is available:
	  <file:Documentation/input/input.txt>.

	  If unsure, say Y.

	  To compile this driver as a module, choose M here: the
	  module will be called usbhid.

comment "Input core support is needed for USB HID input layer or HIDBP support"
	depends on USB_HID && INPUT=n

config USB_HIDINPUT
	bool "HID input layer support"
	default y
	depends on INPUT && USB_HID
	help
	  Say Y here if you want to use a USB keyboard, mouse or joystick,
	  or any other HID input device.

	  If unsure, say Y.

config HID_FF
	bool "Force feedback support (EXPERIMENTAL)"
	depends on USB_HIDINPUT && EXPERIMENTAL
	help
	  Say Y here is you want force feedback support for a few HID devices.
	  See below for a list of supported devices.

	  See <file:Documentation/input/ff.txt> for a description of the force
	  feedback API.

	  If unsure, say N.

config HID_PID
	bool "PID Devices (Microsoft Sidewinder Force Feedback 2)"
	depends on HID_FF
	help
	  Say Y here if you have a PID-compliant joystick and wish to enable force
	  feedback for it. The Microsoft Sidewinder Force Feedback 2 is one such
	  device.

config LOGITECH_FF
	bool "Logitech WingMan *3D support"
	depends on HID_FF
	help
	  Say Y here if you have one of these devices:
	  - Logitech WingMan Cordless RumblePad
	  - Logitech WingMan Force 3D
	  and if you want to enable force feedback for them.
	  Note: if you say N here, this device will still be supported, but without
	  force feedback.

config THRUSTMASTER_FF
	bool "ThrustMaster FireStorm Dual Power 2 support (EXPERIMENTAL)"
	depends on HID_FF && EXPERIMENTAL
	help
	  Say Y here if you have a THRUSTMASTER FireStore Dual Power 2,
	  and want to enable force feedback support for it.
	  Note: if you say N here, this device will still be supported, but without
	  force feedback.

config USB_HIDDEV
	bool "/dev/hiddev raw HID device support"
	depends on USB_HID
	help
	  Say Y here if you want to support HID devices (from the USB
	  specification standpoint) that aren't strictly user interface
	  devices, like monitor controls and Uninterruptable Power Supplies.

	  This module supports these devices separately using a separate
	  event interface on /dev/usb/hiddevX (char 180:96 to 180:111).

	  If unsure, say Y.

menu "USB HID Boot Protocol drivers"
	depends on USB!=n && USB_HID!=y

config USB_KBD
	tristate "USB HIDBP Keyboard (simple Boot) support"
	depends on USB && INPUT
	---help---
	  Say Y here only if you are absolutely sure that you don't want
	  to use the generic HID driver for your USB keyboard and prefer
	  to use the keyboard in its limited Boot Protocol mode instead.

	  This is almost certainly not what you want.  This is mostly
	  useful for embedded applications or simple keyboards.

	  To compile this driver as a module, choose M here: the
	  module will be called usbkbd.

	  If even remotely unsure, say N.

config USB_MOUSE
	tristate "USB HIDBP Mouse (simple Boot) support"
	depends on USB && INPUT
	---help---
	  Say Y here only if you are absolutely sure that you don't want
	  to use the generic HID driver for your USB mouse and prefer
	  to use the mouse in its limited Boot Protocol mode instead.

	  This is almost certainly not what you want.  This is mostly
	  useful for embedded applications or simple mice.

	  To compile this driver as a module, choose M here: the
	  module will be called usbmouse.

	  If even remotely unsure, say N.

endmenu

config USB_AIPTEK
	tristate "Aiptek 6000U/8000U tablet support"
	depends on USB && INPUT
	help
	  Say Y here if you want to use the USB version of the Aiptek 6000U
	  or Aiptek 8000U tablet.  Make sure to say Y to "Mouse support"
	  (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
	  (CONFIG_INPUT_EVDEV) as well.

	  To compile this driver as a module, choose M here: the
	  module will be called aiptek.

config USB_WACOM
	tristate "Wacom Intuos/Graphire tablet support"
	depends on USB && INPUT
	help
	  Say Y here if you want to use the USB version of the Wacom Intuos
	  or Graphire tablet.  Make sure to say Y to "Mouse support"
	  (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
	  (CONFIG_INPUT_EVDEV) as well.

	  To compile this driver as a module, choose M here: the
	  module will be called wacom.

config USB_ACECAD
	tristate "Acecad Flair tablet support"
	depends on USB && INPUT
	help
	  Say Y here if you want to use the USB version of the Acecad Flair
	  tablet.  Make sure to say Y to "Mouse support"
	  (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
	  (CONFIG_INPUT_EVDEV) as well.

	  To compile this driver as a module, choose M here: the
	  module will be called acecad.

config USB_KBTAB
	tristate "KB Gear JamStudio tablet support"
	depends on USB && INPUT
	help
	  Say Y here if you want to use the USB version of the KB Gear
	  JamStudio tablet.  Make sure to say Y to "Mouse support"
	  (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
	  (CONFIG_INPUT_EVDEV) as well.

	  To compile this driver as a module, choose M here: the
	  module will be called kbtab.

config USB_POWERMATE
	tristate "Griffin PowerMate and Contour Jog support"
	depends on USB && INPUT
	---help---
	  Say Y here if you want to use Griffin PowerMate or Contour Jog devices.
	  These are aluminum dials which can measure clockwise and anticlockwise
	  rotation.  The dial also acts as a pushbutton.  The base contains an LED
	  which can be instructed to pulse or to switch to a particular intensity.

	  You can download userspace tools from
	  <http://sowerbutts.com/powermate/>.

	  To compile this driver as a module, choose M here: the
	  module will be called powermate.

config USB_MTOUCH
	tristate "MicroTouch USB Touchscreen Driver"
	depends on USB && INPUT
	---help---
	  Say Y here if you want to use a MicroTouch (Now 3M) USB 
	  Touchscreen controller.

	  See <file:Documentation/usb/mtouch.txt> for additional information.

	  To compile this driver as a module, choose M here: the
	  module will be called mtouchusb.

config USB_ITMTOUCH
	tristate "ITM Touch USB Touchscreen Driver"
	depends on USB && INPUT
	---help---
	  Say Y here if you want to use a ITM Touch USB
	  Touchscreen controller.

	  This touchscreen is used in LG 1510SF monitors.

	  To compile this driver as a module, choose M here: the
	  module will be called itmtouch.

config USB_EGALAX
	tristate "eGalax TouchKit USB Touchscreen Driver"
	depends on USB && INPUT
	---help---
	  Say Y here if you want to use a eGalax TouchKit USB
	  Touchscreen controller.

	  The driver has been tested on a Xenarc 700TSV monitor
	  with eGalax touchscreen.

	  Have a look at <http://linux.chapter7.ch/touchkit/> for
	  a usage description and the required user-space stuff.

	  To compile this driver as a module, choose M here: the
	  module will be called touchkitusb.

config USB_XPAD
	tristate "X-Box gamepad support"
	depends on USB && INPUT
	---help---
	  Say Y here if you want to use the X-Box pad with your computer.
	  Make sure to say Y to "Joystick support" (CONFIG_INPUT_JOYDEV)
	  and/or "Event interface support" (CONFIG_INPUT_EVDEV) as well.

	  For information about how to connect the X-Box pad to USB, see
	  <file:Documentation/input/xpad.txt>.

	  To compile this driver as a module, choose M here: the
	  module will be called xpad.
	  
config USB_ATI_REMOTE
	tristate "ATI / X10 USB RF remote control"
	depends on USB && INPUT
	---help---
	  Say Y here if you want to use an ATI or X10 "Lola" USB remote control.
	  These are RF remotes with USB receivers. 
	  The ATI remote comes with many of ATI's All-In-Wonder video cards.
	  The X10 "Lola" remote is available at:
	     <http://www.x10.com/products/lola_sg1.htm>
	  This driver provides mouse pointer, left and right mouse buttons, 
	  and maps all the other remote buttons to keypress events.
	  
	  To compile this driver as a module, choose M here: the module will be
	  called ati_remote.

