Evdev problem with keyboard

Marty Jack martyj19 at comcast.net
Sat Jun 25 11:33:10 PDT 2011



On 06/25/2011 01:56 PM, Scott Waye wrote:
>  Hi,
> 
> I hope this is the right forum, if not apologies.
> 
> I have a bluetooth Logitech diNovo Edge keyboard (with mouse pad) which I'm trying to get working using the evdev driver.  I believe the bluetooth part is working fine as I get two devices in /dev/input .  If I cat /dev/input/event5 I get a stream of characters when I press keys, and when  I cat /dev/input/event6 I get a stream of characters when I move the mouse.  I have the following in /etc/X11/xorg.conf.d/10-evdev.conf
> 
> Section "InputClass"
>         Identifier "evdev pointer catchall"
>         MatchIsPointer "on"
>         MatchDevicePath "/dev/input/event6"
>         Driver "evdev"
>         Option "Calibration" "230 900 70 718"
> EndSection
> 
> Section "InputClass"
>         Identifier "evdev keyboard catchall"
>         MatchIsKeyboard "on"
>         MatchDevicePath "/dev/input/event5"
>         Driver "evdev"
>         Option "XkbLayout"      "uk"
>         Option "XkbModel"       "logidinovoedge"
> EndSection
> 
> With this setup the mouse works fine, but the keyboard does almost nothing.  I say almost because with the I bar cursor in an xterm, when a key is pressed the cursor disappears immediately as though it has detected the keypress, but no characters appear on the screen.
> 
> I've tried to run xev, but I can't get it to display anything except a square.  I should point out that I'm not running a window manager and I run the xterm (and xev) direct from my .xinitrc.  There are no /etc/X11/*.conf  files, only the xorg.conf.d directory which contains the 10-evdev.conf above and a 10-quirks.conf (one entry to do with ThinkPad) and 20-nvidia.conf.
> 
> 
> This is an ArchLinux system and my complete Xorg log follows at the end.
> 
> [1210146.304]
> X.Org X Server 1.9.2
> Release Date: 2010-10-30
> [1210146.304] X Protocol Version 11, Revision 0
> [1210146.304] Build Operating System: Linux 2.6.35-ARCH x86_64
> [1210146.304] Current Operating System: Linux giradot 2.6.36-ARCH #1 SMP PREEMPT Sat Jan 8 14:15:27 CET 2011 x86_64
> [1210146.304] Kernel command line: root=/dev/sda1 ro
> [1210146.304] Build Date: 01 November 2010  10:29:19PM
> [1210146.304]
> [1210146.304] Current version of pixman: 0.20.0
> [1210146.304]   Before reporting problems, check http://wiki.x.org
>         to make sure that you have the latest version.
> [1210146.304] Markers: (--) probed, (**) from config file, (==) default setting,
>         (++) from command line, (!!) notice, (II) informational,
>         (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
> [1210146.304] (==) Log file: "/var/log/Xorg.0.log", Time: Sat Jun 25 18:47:53 2011
> [1210146.305] (==) Using config directory: "/etc/X11/xorg.conf.d"
> [1210146.305] (==) No Layout section.  Using the first Screen section.
> [1210146.305] (==) No screen section available. Using defaults.
> [1210146.305] (**) |-->Screen "Default Screen Section" (0)
> [1210146.305] (**) |   |-->Monitor "<default monitor>"
> [1210146.305] (==) No device specified for screen "Default Screen Section".
>         Using the first device section listed.
> [1210146.305] (**) |   |-->Device "Default nvidia Device"
> [1210146.305] (==) No monitor specified for screen "Default Screen Section".
>         Using a default monitor configuration.
> [1210146.305] (==) Automatically adding devices
> [1210146.305] (==) Automatically enabling devices
> [1210146.305] (WW) The directory "/usr/share/fonts/OTF/" does not exist.
> [1210146.305]   Entry deleted from font path.
> [1210146.305] (WW) The directory "/usr/share/fonts/Type1/" does not exist.
> [1210146.305]   Entry deleted from font path.
> [1210146.305] (==) FontPath set to:
>         /usr/share/fonts/misc/,
>         /usr/share/fonts/TTF/,
>         /usr/share/fonts/100dpi/,
>         /usr/share/fonts/75dpi/
> [1210146.305] (==) ModulePath set to "/usr/lib/xorg/modules"
> [1210146.305] (II) The server relies on udev to provide the list of input devices.
>         If no devices become available, reconfigure udev or disable AutoAddDevices.
> [1210146.305] (II) Loader magic: 0x7d3360
> [1210146.305] (II) Module ABI versions:
> [1210146.305]   X.Org ANSI C Emulation: 0.4
> [1210146.305]   X.Org Video Driver: 8.0
> [1210146.305]   X.Org XInput driver : 11.0
> [1210146.305]   X.Org Server Extension : 4.0
> [1210146.306] (--) PCI:*(0:0:18:0) 10de:053b:1043:82b3 rev 162, Mem @ 0xda000000/16777216, 0xc0000000/268435456, 0xd9000000/16777216, BIOS @ 0x????????/131072
> [1210146.306] (--) PCI: (0:1:6:0) 14f1:8800:0070:6906 rev 5, Mem @ 0xdf000000/16777216
> [1210146.306] (WW) Open ACPI failed (/var/run/acpid.socket) (No such file or directory)
> [1210146.306] (II) LoadModule: "extmod"
> [1210146.306] (II) Loading /usr/lib/xorg/modules/extensions/libextmod.so
> [1210146.307] (II) Module extmod: vendor="X.Org Foundation"
> [1210146.307]   compiled for 1.9.2, module version = 1.0.0
> [1210146.307]   Module class: X.Org Server Extension
> [1210146.307]   ABI class: X.Org Server Extension, version 4.0
> [1210146.307] (II) Loading extension MIT-SCREEN-SAVER
> [1210146.307] (II) Loading extension XFree86-VidModeExtension
> [1210146.307] (II) Loading extension XFree86-DGA
> [1210146.307] (II) Loading extension DPMS
> [1210146.307] (II) Loading extension XVideo
> [1210146.307] (II) Loading extension XVideo-MotionCompensation
> [1210146.307] (II) Loading extension X-Resource
> [1210146.307] (II) LoadModule: "dbe"
> [1210146.307] (II) Loading /usr/lib/xorg/modules/extensions/libdbe.so
> [1210146.307] (II) Module dbe: vendor="X.Org Foundation"
> [1210146.307]   compiled for 1.9.2, module version = 1.0.0
> [1210146.307]   Module class: X.Org Server Extension
> [1210146.307]   ABI class: X.Org Server Extension, version 4.0
> [1210146.307] (II) Loading extension DOUBLE-BUFFER
> [1210146.307] (II) LoadModule: "glx"
> [1210146.307] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
> [1210146.322] (II) Module glx: vendor="NVIDIA Corporation"
> [1210146.322]   compiled for 4.0.2, module version = 1.0.0
> [1210146.322]   Module class: X.Org Server Extension
> [1210146.322] (II) NVIDIA GLX Module  260.19.29  Wed Dec  8 12:24:30 PST 2010
> [1210146.322] (II) Loading extension GLX
> [1210146.322] (II) LoadModule: "record"
> [1210146.322] (II) Loading /usr/lib/xorg/modules/extensions/librecord.so
> [1210146.322] (II) Module record: vendor="X.Org Foundation"
> [1210146.322]   compiled for 1.9.2, module version = 1.13.0
> [1210146.322]   Module class: X.Org Server Extension
> [1210146.322]   ABI class: X.Org Server Extension, version 4.0
> [1210146.322] (II) Loading extension RECORD
> [1210146.322] (II) LoadModule: "dri"
> [1210146.322] (II) Loading /usr/lib/xorg/modules/extensions/libdri.so
> [1210146.322] (II) Module dri: vendor="X.Org Foundation"
> [1210146.322]   compiled for 1.9.2, module version = 1.0.0
> [1210146.322]   ABI class: X.Org Server Extension, version 4.0
> [1210146.322] (II) Loading extension XFree86-DRI
> [1210146.322] (II) LoadModule: "dri2"
> [1210146.323] (II) Loading /usr/lib/xorg/modules/extensions/libdri2.so
> [1210146.323] (II) Module dri2: vendor="X.Org Foundation"
> [1210146.323]   compiled for 1.9.2, module version = 1.2.0
> [1210146.323]   ABI class: X.Org Server Extension, version 4.0
> [1210146.323] (II) Loading extension DRI2
> [1210146.323] (II) LoadModule: "nvidia"
> [1210146.323] (II) Loading /usr/lib/xorg/modules/drivers/nvidia_drv.so
> [1210146.323] (II) Module nvidia: vendor="NVIDIA Corporation"
> [1210146.323]   compiled for 4.0.2, module version = 1.0.0
> [1210146.323]   Module class: X.Org Video Driver
> [1210146.324] (II) NVIDIA dlloader X Driver  260.19.29  Wed Dec  8 12:10:14 PST 2010
> [1210146.324] (II) NVIDIA Unified Driver for all Supported NVIDIA GPUs
> [1210146.324] (++) using VT number 7
> 
> [1210146.330] (II) Loading sub module "fb"
> [1210146.330] (II) LoadModule: "fb"
> [1210146.330] (II) Loading /usr/lib/xorg/modules/libfb.so
> [1210146.330] (II) Module fb: vendor="X.Org Foundation"
> [1210146.330]   compiled for 1.9.2, module version = 1.0.0
> [1210146.330]   ABI class: X.Org ANSI C Emulation, version 0.4
> [1210146.330] (II) Loading sub module "wfb"
> [1210146.330] (II) LoadModule: "wfb"
> [1210146.330] (II) Loading /usr/lib/xorg/modules/libwfb.so
> [1210146.331] (II) Module wfb: vendor="X.Org Foundation"
> [1210146.331]   compiled for 1.9.2, module version = 1.0.0
> [1210146.331]   ABI class: X.Org ANSI C Emulation, version 0.4
> [1210146.331] (II) Loading sub module "ramdac"
> [1210146.331] (II) LoadModule: "ramdac"
> [1210146.331] (II) Module "ramdac" already built-in
> [1210146.331] (II) NVIDIA(0): Creating default Display subsection in Screen section
>         "Default Screen Section" for depth/fbbpp 24/32
> [1210146.331] (==) NVIDIA(0): Depth 24, (==) framebuffer bpp 32
> [1210146.331] (==) NVIDIA(0): RGB weight 888
> [1210146.331] (==) NVIDIA(0): Default visual is TrueColor
> [1210146.331] (==) NVIDIA(0): Using gamma correction (1.0, 1.0, 1.0)
> [1210146.331] (**) NVIDIA(0): Option "NoLogo" "True"
> [1210146.331] (**) NVIDIA(0): Enabling RENDER acceleration
> [1210146.331] (II) NVIDIA(0): Support for GLX with the Damage and Composite X extensions is
> [1210146.331] (II) NVIDIA(0):     enabled.
> [1210146.804] (II) NVIDIA(0): NVIDIA GPU GeForce 7050 PV / nForce 630a (C68) at PCI:0:18:0
> [1210146.804] (II) NVIDIA(0):     (GPU-0)
> [1210146.804] (--) NVIDIA(0): Memory: 524288 kBytes
> [1210146.804] (--) NVIDIA(0): VideoBIOS: 05.67.32.25.00
> [1210146.804] (--) NVIDIA(0): Interlaced video modes are supported on this GPU
> [1210146.804] (--) NVIDIA(0): Connected display device(s) on GeForce 7050 PV / nForce 630a
> [1210146.804] (--) NVIDIA(0):     at PCI:0:18:0
> [1210146.804] (--) NVIDIA(0):     SAMSUNG (DFP-0)
> [1210146.804] (--) NVIDIA(0): SAMSUNG (DFP-0): 155.0 MHz maximum pixel clock
> [1210146.804] (--) NVIDIA(0): SAMSUNG (DFP-0): Internal Single Link TMDS
> [1210146.804] (II) NVIDIA(0): Assigned Display Device: DFP-0
> [1210146.804] (==) NVIDIA(0):
> [1210146.804] (==) NVIDIA(0): No modes were requested; the default mode "nvidia-auto-select"
> [1210146.804] (==) NVIDIA(0):     will be used as the requested mode.
> [1210146.804] (==) NVIDIA(0):
> [1210146.804] (II) NVIDIA(0): Validated modes:
> [1210146.804] (II) NVIDIA(0):     "nvidia-auto-select"
> [1210146.804] (II) NVIDIA(0): Virtual screen size determined to be 1280 x 720
> [1210146.804] (--) NVIDIA(0): DPI set to (203, 203); computed from "UseEdidDpi" X config
> [1210146.804] (--) NVIDIA(0):     option
> [1210146.805] (==) NVIDIA(0): Enabling 32-bit ARGB GLX visuals.
> [1210146.805] (--) Depth 24 pixmap format is 32 bpp
> [1210146.805] (II) NVIDIA(0): Initialized GPU GART.
> [1210146.809] (II) NVIDIA(0): ACPI: failed to connect to the ACPI event daemon; the daemon
> [1210146.809] (II) NVIDIA(0):     may not be running or the "AcpidSocketPath" X
> [1210146.809] (II) NVIDIA(0):     configuration option may not be set correctly.  When the
> [1210146.809] (II) NVIDIA(0):     ACPI event daemon is available, the NVIDIA X driver will
> [1210146.809] (II) NVIDIA(0):     try to use it to receive ACPI event notifications.  For
> [1210146.809] (II) NVIDIA(0):     details, please see the "ConnectToAcpid" and
> [1210146.809] (II) NVIDIA(0):     "AcpidSocketPath" X configuration options in Appendix B: X
> [1210146.809] (II) NVIDIA(0):     Config Options in the README.
> [1210146.809] (II) NVIDIA(0): Setting mode "nvidia-auto-select"
> [1210147.196] (II) Loading extension NV-GLX
> [1210147.223] (II) NVIDIA(0): Initialized OpenGL Acceleration
> [1210147.225] (==) NVIDIA(0): Disabling shared memory pixmaps
> [1210147.225] (II) NVIDIA(0): Initialized X Rendering Acceleration
> [1210147.225] (==) NVIDIA(0): Backing store disabled
> [1210147.225] (==) NVIDIA(0): Silken mouse enabled
> [1210147.225] (==) NVIDIA(0): DPMS enabled
> [1210147.225] (II) Loading extension NV-CONTROL
> [1210147.226] (II) Loading extension XINERAMA
> [1210147.226] (II) Loading sub module "dri2"
> [1210147.226] (II) LoadModule: "dri2"
> [1210147.226] (II) Reloading /usr/lib/xorg/modules/extensions/libdri2.so
> [1210147.226] (II) NVIDIA(0): [DRI2] Setup complete
> [1210147.226] (==) RandR enabled
> [1210147.226] (II) Initializing built-in extension Generic Event Extension
> [1210147.226] (II) Initializing built-in extension SHAPE
> [1210147.226] (II) Initializing built-in extension MIT-SHM
> [1210147.226] (II) Initializing built-in extension XInputExtension
> [1210147.226] (II) Initializing built-in extension XTEST
> [1210147.226] (II) Initializing built-in extension BIG-REQUESTS
> [1210147.226] (II) Initializing built-in extension SYNC
> [1210147.226] (II) Initializing built-in extension XKEYBOARD
> [1210147.226] (II) Initializing built-in extension XC-MISC
> [1210147.226] (II) Initializing built-in extension SECURITY
> [1210147.226] (II) Initializing built-in extension XINERAMA
> [1210147.226] (II) Initializing built-in extension XFIXES
> [1210147.226] (II) Initializing built-in extension RENDER
> [1210147.226] (II) Initializing built-in extension RANDR
> [1210147.226] (II) Initializing built-in extension COMPOSITE
> [1210147.226] (II) Initializing built-in extension DAMAGE
> [1210147.229] (II) Initializing extension GLX
> [1210147.383] (II) config/udev: Adding input device Power Button (/dev/input/event2)
> [1210147.383] (II) No input driver/identifier specified (ignoring)
> [1210147.385] (II) config/udev: Adding input device Power Button (/dev/input/event1)
> [1210147.385] (II) No input driver/identifier specified (ignoring)
> [1210147.387] (II) config/udev: Adding input device Logitech Logitech BT Mini-Receiver (/dev/input/event5)
> [1210147.387] (**) Logitech Logitech BT Mini-Receiver: Applying InputClass "evdev keyboard catchall"
> [1210147.387] (II) LoadModule: "evdev"
> [1210147.387] (II) Loading /usr/lib/xorg/modules/input/evdev_drv.so
> [1210147.388] (II) Module evdev: vendor="X.Org Foundation"
> [1210147.388]   compiled for 1.9.0, module version = 2.5.0
> [1210147.388]   Module class: X.Org XInput Driver
> [1210147.388]   ABI class: X.Org XInput driver, version 11.0
> [1210147.388] (**) Logitech Logitech BT Mini-Receiver: always reports core events
> [1210147.388] (**) Logitech Logitech BT Mini-Receiver: Device: "/dev/input/event5"
> [1210147.395] (--) Logitech Logitech BT Mini-Receiver: Found keys
> [1210147.395] (II) Logitech Logitech BT Mini-Receiver: Configuring as keyboard
> [1210147.395] (II) XINPUT: Adding extended input device "Logitech Logitech BT Mini-Receiver" (type: KEYBOARD)
> [1210147.395] (**) Option "xkb_rules" "evdev"
> [1210147.395] (**) Option "xkb_model" "logidinovoedge"
> [1210147.395] (**) Option "xkb_layout" "uk"
> [1210147.419] (II) config/udev: Adding input device Logitech Logitech BT Mini-Receiver (/dev/input/event6)
> [1210147.419] (**) Logitech Logitech BT Mini-Receiver: Applying InputClass "evdev pointer catchall"
> [1210147.419] (**) Logitech Logitech BT Mini-Receiver: always reports core events
> [1210147.419] (**) Logitech Logitech BT Mini-Receiver: Device: "/dev/input/event6"
> [1210147.432] (--) Logitech Logitech BT Mini-Receiver: Found 16 mouse buttons
> [1210147.432] (--) Logitech Logitech BT Mini-Receiver: Found scroll wheel(s)
> [1210147.432] (--) Logitech Logitech BT Mini-Receiver: Found relative axes
> [1210147.432] (--) Logitech Logitech BT Mini-Receiver: Found x and y relative axes
> [1210147.432] (--) Logitech Logitech BT Mini-Receiver: Found absolute axes
> [1210147.432] (--) Logitech Logitech BT Mini-Receiver: Found keys
> [1210147.432] (II) Logitech Logitech BT Mini-Receiver: Configuring as mouse
> [1210147.432] (II) Logitech Logitech BT Mini-Receiver: Configuring as keyboard
> [1210147.432] (**) Logitech Logitech BT Mini-Receiver: YAxisMapping: buttons 4 and 5
> [1210147.432] (**) Logitech Logitech BT Mini-Receiver: EmulateWheelButton: 4, EmulateWheelInertia: 10, EmulateWheelTimeout: 200
> [1210147.432] (II) XINPUT: Adding extended input device "Logitech Logitech BT Mini-Receiver" (type: KEYBOARD)
> [1210147.432] (**) Option "xkb_rules" "evdev"
> [1210147.432] (**) Option "xkb_model" "evdev"
> [1210147.432] (**) Option "xkb_layout" "us"
> [1210147.466] (**) Logitech Logitech BT Mini-Receiver: (accel) keeping acceleration scheme 1
> [1210147.466] (**) Logitech Logitech BT Mini-Receiver: (accel) acceleration profile 0
> [1210147.466] (**) Logitech Logitech BT Mini-Receiver: (accel) acceleration factor: 2.000
> [1210147.466] (**) Logitech Logitech BT Mini-Receiver: (accel) acceleration threshold: 4
> [1210147.466] (II) Logitech Logitech BT Mini-Receiver: initialized for relative axes.
> [1210147.466] (WW) Logitech Logitech BT Mini-Receiver: ignoring absolute axes.
> [1210147.467] (II) config/udev: Adding input device Logitech Logitech BT Mini-Receiver (/dev/input/mouse0)
> [1210147.467] (II) No input driver/identifier specified (ignoring)
> [1210147.468] (II) config/udev: Adding input device HDA Digital PCBeep (/dev/input/event4)
> [1210147.468] (II) No input driver/identifier specified (ignoring)
> [1210147.470] (II) config/udev: Adding input device cx88 IR (Hauppauge WinTV-HVR400 (/dev/input/event3)
> [1210147.470] (II) No input driver/identifier specified (ignoring)
> [1210147.475] (II) config/udev: Adding input device PC Speaker (/dev/input/event0)
> [1210147.475] (II) No input driver/identifier specified (ignoring)
> 
> 
> Thanks,
> 
> -- 
> Scott
> _______________________________________________
> xorg at lists.freedesktop.org: X.Org support
> Archives: http://lists.freedesktop.org/archives/xorg
> Info: http://lists.freedesktop.org/mailman/listinfo/xorg
> Your subscription address: martyj19 at comcast.net
> 

It looks like at least part of your problem would be solved if you made sure you were accessing the correct devices.  It is not going to be the case that the event devices get the same number on every boot.  This needs to be handled at the udev level by creating symlinks for the devices or some other stratagem that gives you a stable device name.  For example I have a keyboard that exposes two event devices, and I have these rules:

KERNEL=="event*", SUBSYSTEMS=="usb", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceProtocol}=="01", ATTRS{bInterfaceNumber}=="00", SYMLINK+="input/event-kbd" ENV{WAYLAND_SEAT}="1" ENV{ID_INPUT}="1" ENV{ID_INPUT_KEY}="1"
KERNEL=="event*", SUBSYSTEMS=="usb", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceProtocol}=="00", ATTRS{bInterfaceNumber}=="01", SYMLINK+="input/event-mm" ENV{WAYLAND_SEAT}="1" ENV{ID_INPUT}="1" ENV{ID_INPUT_KEY}="1"
KERNEL=="event*", SUBSYSTEMS=="usb", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceProtocol}=="02", SYMLINK+="input/event-mouse" ENV{WAYLAND_SEAT}="1" ENV{ID_INPUT}="1" ENV{ID_INPUT_MOUSE}="1"

They have the result of ensuring that I can access event-kbd, event-mm, and event-mouse.  (You do not need the WAYLAND_SEAT part for using X.)  You then write your InputClass rules with respect to the stable device names, although I find that ID_INPUT and ID_INPUT_MOUSE give me what I need with no additional rules beyond the builtin InputClass selection.

The person who asked the other day about a keyboard that exposes two event devices would be well advised to do something similar to this and may then find that nothing in xorg.conf is needed.



More information about the xorg mailing list