LINUX.ORG.RU

xev возвращает случайные keycodes

 , ,


0

2

Добрый день.

Моя конфигурация:

Плата с A20,

Opebox+slim+xorg,

ОС: Devuan 8(форк от Debian 8, система без systemd),

Любая клавиатура(не работает ни с одной), подключенная через usb otg.

Проблема:

  1. При нажатии любой клавиши в xev вываливается больше событий, чем нажато кнопок.

  2. Keycodes в xev практически всегда разные.

При этом: evtest, showkey и любые другие утилиты выводят события корректно.

Лог запуска X11:

X.Org X Server 1.16.4
Release Date: 2014-12-20
[    29.258] X Protocol Version 11, Revision 0
[    29.258] Build Operating System: Linux 4.9.0-4-armmp-lpae armv7l Debian
[    29.258] Current Operating System: Linux devuan 3.4.103 #131 SMP PREEMPT Tue Jun 29 09:43:00 UTC 2021 armv7l
[    29.258] Kernel command line: console=ttyS0,115200 consoleblank=0 vt.global_cursor_default=0 vt.cur_default=1 root=/dev/mmcblk1p2 ro rootwait init=/sbin/init loglevel=8 mtdparts=
[    29.258] Build Date: 16 October 2017  09:26:27AM
[    29.258] xorg-server 2:1.16.4-1+deb8u2 (http://www.debian.org/support)
[    29.258] Current version of pixman: 0.32.6
[    29.258]    Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.
[    29.258] Markers: (--) probed, (**) from config file, (==) default setting,
        (++) from command line, (!!) notice, (II) informational,
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[    29.259] (==) Log file: "/var/log/Xorg.0.log", Time: Fri Sep  3 06:18:08 2021
[    29.271] (==) Using config file: "/etc/X11/xorg.conf"
[    29.271] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
[    29.297] (==) No Layout section.  Using the first Screen section.
[    29.297] (==) No screen section available. Using defaults.
[    29.297] (**) |-->Screen "Default Screen Section" (0)
[    29.297] (**) |   |-->Monitor "<default monitor>"
[    29.298] (==) No monitor specified for screen "Default Screen Section".
        Using a default monitor configuration.
[    29.298] (**) Option "BlankTime" "0"
[    29.299] (**) Option "StandbyTime" "0"
[    29.299] (**) Option "SuspendTime" "0"
[    29.299] (**) Option "OffTime" "0"
[    29.299] (==) Automatically adding devices
[    29.299] (==) Automatically enabling devices
[    29.299] (==) Automatically adding GPU devices
[    29.326] (WW) The directory "/usr/share/fonts/X11/cyrillic" does not exist.
[    29.326]    Entry deleted from font path.
[    29.386] (==) FontPath set to:
        /usr/share/fonts/X11/misc,
        /usr/share/fonts/X11/100dpi/:unscaled,
        /usr/share/fonts/X11/75dpi/:unscaled,
        /usr/share/fonts/X11/Type1,
        /usr/share/fonts/X11/100dpi,
        /usr/share/fonts/X11/75dpi,
        built-ins
[    29.386] (==) ModulePath set to "/usr/lib/xorg/modules"
[    29.386] (==) |-->Input Device "tca8418_gpio"
[    29.386] (==) No Layout section. Using the first core keyboard device.
[    29.386] (II) The server relies on udev to provide the list of input devices.
        If no devices become available, reconfigure udev or disable AutoAddDevices.
[    29.386] (WW) Hotplugging is on, devices using drivers 'kbd', 'mouse' or 'vmmouse' will be disabled.
[    29.386] (WW) Disabling tca8418_gpio
[    29.386] (II) Loader magic: 0xb6ffcf20
[    29.386] (II) Module ABI versions:
[    29.386]    X.Org ANSI C Emulation: 0.4
[    29.386]    X.Org Video Driver: 18.0
[    29.386]    X.Org XInput driver : 21.0
[    29.386]    X.Org Server Extension : 8.0
[    29.387] (II) no primary bus or device found
[    29.387] (II) LoadModule: "glx"
[    29.419] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[    29.566] (II) Module glx: vendor="X.Org Foundation"
[    29.566]    compiled for 1.16.4, module version = 1.0.0
[    29.567]    ABI class: X.Org Server Extension, version 8.0
[    29.567] (==) AIGLX enabled
[    29.567] (==) Matched modesetting as autoconfigured driver 0
[    29.567] (==) Matched fbdev as autoconfigured driver 1
[    29.567] (==) Assigned the driver to the xf86ConfigLayout
[    29.567] (II) LoadModule: "modesetting"
[    29.567] (II) Loading /usr/lib/xorg/modules/drivers/modesetting_drv.so
[    29.577] (II) Module modesetting: vendor="X.Org Foundation"
[    29.578]    compiled for 1.16.4, module version = 0.9.0
[    29.578]    Module class: X.Org Video Driver
[    29.578]    ABI class: X.Org Video Driver, version 18.0
[    29.578] (II) LoadModule: "fbdev"
[    29.578] (II) Loading /usr/lib/xorg/modules/drivers/fbdev_drv.so
[    29.582] (II) Module fbdev: vendor="X.Org Foundation"
[    29.582]    compiled for 1.15.99.904, module version = 0.4.4
[    29.582]    Module class: X.Org Video Driver
[    29.582]    ABI class: X.Org Video Driver, version 18.0
[    29.582] (II) modesetting: Driver for Modesetting Kernel Drivers: kms
[    29.582] (II) FBDEV: driver for framebuffer: fbdev
[    29.582] (++) using VT number 7

[    29.592] (WW) Falling back to old probe method for modesetting
[    29.592] (EE) open /dev/dri/card0: No such file or directory
[    29.592] (WW) Falling back to old probe method for fbdev
[    29.593] (II) Loading sub module "fbdevhw"
[    29.593] (II) LoadModule: "fbdevhw"
[    29.593] (II) Loading /usr/lib/xorg/modules/libfbdevhw.so
[    29.597] (II) Module fbdevhw: vendor="X.Org Foundation"
[    29.597]    compiled for 1.16.4, module version = 0.0.2
[    29.597]    ABI class: X.Org Video Driver, version 18.0
[    29.597] (II) FBDEV(0): using default device
[    29.597] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support
[    29.598] (II) FBDEV(0): Creating default Display subsection in Screen section
        "Default Screen Section" for depth/fbbpp 24/32
[    29.598] (==) FBDEV(0): Depth 24, (==) framebuffer bpp 32
[    29.598] (==) FBDEV(0): RGB weight 888
[    29.598] (==) FBDEV(0): Default visual is TrueColor
[    29.598] (==) FBDEV(0): Using gamma correction (1.0, 1.0, 1.0)
[    29.598] (II) FBDEV(0): hardware:  (video memory: 3000kB)
[    29.598] (II) FBDEV(0): checking modes against framebuffer device...
[    29.598] (II) FBDEV(0): checking modes against monitor...
[    29.598] (--) FBDEV(0): Virtual size is 800x480 (pitch 800)
[    29.598] (**) FBDEV(0):  Built-in mode "current": 33.0 MHz, 31.3 kHz, 59.6 Hz
[    29.598] (II) FBDEV(0): Modeline "current"x0.0   33.00  800 1009 1039 1055  480 502 503 525 -hsync -vsync -csync (31.3 kHz b)
[    29.598] (==) FBDEV(0): DPI set to (96, 96)
[    29.598] (II) Loading sub module "fb"
[    29.598] (II) LoadModule: "fb"
[    29.599] (II) Loading /usr/lib/xorg/modules/libfb.so
[    29.613] (II) Module fb: vendor="X.Org Foundation"
[    29.613]    compiled for 1.16.4, module version = 1.0.0
[    29.613]    ABI class: X.Org ANSI C Emulation, version 0.4
[    29.613] (**) FBDEV(0): using shadow framebuffer
[    29.613] (II) Loading sub module "shadow"
[    29.613] (II) LoadModule: "shadow"
[    29.613] (II) Loading /usr/lib/xorg/modules/libshadow.so
[    29.626] (II) Module shadow: vendor="X.Org Foundation"
[    29.626]    compiled for 1.16.4, module version = 1.1.0
[    29.626]    ABI class: X.Org ANSI C Emulation, version 0.4
[    29.626] (II) UnloadModule: "modesetting"
[    29.626] (II) Unloading modesetting
[    29.626] (==) Depth 24 pixmap format is 32 bpp
[    29.649] (==) FBDEV(0): Backing store enabled
[    29.651] (==) FBDEV(0): DPMS enabled
[    29.651] (==) RandR enabled
[    29.691] (II) SELinux: Disabled on system
[    29.696] (II) AIGLX: Screen 0 is not DRI2 capable
[    29.696] (EE) AIGLX: reverting to software rendering
[    29.888] (II) AIGLX: Loaded and initialized swrast
[    29.888] (II) GLX: Initialized DRISWRAST GL provider for screen 0
[    30.343] (II) config/udev: Adding input device sun4i-ts (/dev/input/event3)
[    30.343] (**) sun4i-ts: Applying InputClass "evdev touchscreen catchall"
[    30.343] (II) LoadModule: "evdev"
[    30.344] (II) Loading /usr/lib/xorg/modules/input/evdev_drv.so
[    30.378] (II) Module evdev: vendor="X.Org Foundation"
[    30.379]    compiled for 1.16.0, module version = 2.9.0
[    30.379]    Module class: X.Org XInput Driver
[    30.379]    ABI class: X.Org XInput driver, version 21.0
[    30.379] (II) Using input driver 'evdev' for 'sun4i-ts'
[    30.379] (**) sun4i-ts: always reports core events
[    30.379] (**) evdev: sun4i-ts: Device: "/dev/input/event3"
[    30.379] (--) evdev: sun4i-ts: Vendor 0x1 Product 0x1
[    30.380] (--) evdev: sun4i-ts: Found absolute axes
[    30.380] (--) evdev: sun4i-ts: Found x and y absolute axes
[    30.380] (--) evdev: sun4i-ts: Found absolute touchscreen
[    30.380] (II) evdev: sun4i-ts: Configuring as touchscreen
[    30.380] (**) evdev: sun4i-ts: YAxisMapping: buttons 4 and 5
[    30.380] (**) evdev: sun4i-ts: EmulateWheelButton: 4, EmulateWheelInertia: 10, EmulateWheelTimeout: 200
[    30.380] (**) Option "config_info" "udev:/sys/devices/platform/sun4i-ts/input/input3/event3"
[    30.380] (II) XINPUT: Adding extended input device "sun4i-ts" (type: TOUCHSCREEN, id 6)
[    30.381] (II) evdev: sun4i-ts: initialized for absolute axes.
[    30.381] (**) sun4i-ts: (accel) keeping acceleration scheme 1
[    30.382] (**) sun4i-ts: (accel) acceleration profile 0
[    30.382] (**) sun4i-ts: (accel) acceleration factor: 2.000
[    30.382] (**) sun4i-ts: (accel) acceleration threshold: 4
[    30.383] (II) config/udev: Adding input device sun4i-ts (/dev/input/mouse0)
[    30.384] (II) No input driver specified, ignoring this device.
[    30.384] (II) This device may have been added with another device file.
[    30.385] (II) config/udev: Adding input device tca8418_gpio (/dev/input/event2)
[    30.385] (II) No input driver specified, ignoring this device.
[    30.385] (II) This device may have been added with another device file.
[    30.389] (II) config/udev: Adding input device   USB Keyboard (/dev/input/event0)
[    30.389] (**)   USB Keyboard: Applying InputClass "evdev keyboard catchall"
[    30.389] (II) LoadModule: "kbd"
[    30.390] (II) Loading /usr/lib/xorg/modules/input/kbd_drv.so
[    30.398] (II) Module kbd: vendor="X.Org Foundation"
[    30.398]    compiled for 1.15.99.904, module version = 1.8.0
[    30.398]    Module class: X.Org XInput Driver
[    30.398]    ABI class: X.Org XInput driver, version 21.0
[    30.398] (II) Using input driver 'kbd' for '  USB Keyboard'
[    30.398] (**)   USB Keyboard: always reports core events
[    30.398] (**)   USB Keyboard: always reports core events
[    30.398] (**) Option "Protocol" "standard"
[    30.398] (**) Option "Device" "/dev/input/event0"
[    30.399] (**) Option "XkbRules" "base"
[    30.399] (**) Option "XkbModel" "pc105"
[    30.399] (**) Option "XkbLayout" "us"
[    30.399] (**) Option "config_info" "udev:/sys/devices/platform/sw_hcd_host0/usb1/1-1/1-1:1.0/input/input0/event0"
[    30.399] (II) XINPUT: Adding extended input device "  USB Keyboard" (type: KEYBOARD, id 7)
[    30.500] (II) config/udev: Adding input device   USB Keyboard (/dev/input/event1)
[    30.500] (**)   USB Keyboard: Applying InputClass "evdev keyboard catchall"
[    30.500] (II) Using input driver 'kbd' for '  USB Keyboard'
[    30.500] (**)   USB Keyboard: always reports core events
[    30.500] (**)   USB Keyboard: always reports core events
[    30.500] (**) Option "Protocol" "standard"
[    30.500] (**) Option "Device" "/dev/input/event1"
[    30.500] (**) Option "XkbRules" "base"
[    30.500] (**) Option "XkbModel" "pc105"
[    30.501] (**) Option "XkbLayout" "us"
[    30.501] (**) Option "config_info" "udev:/sys/devices/platform/sw_hcd_host0/usb1/1-1/1-1:1.1/input/input1/event1"
[    30.501] (II) XINPUT: Adding extended input device "  USB Keyboard" (type: KEYBOARD, id 8)

Запуск xev + нажатие одной кнопки:

Outer window is 0xa00001, inner window is 0xa00002

PropertyNotify event, serial 8, synthetic NO, window 0xa00001,
    atom 0x27 (WM_NAME), time 52376, state PropertyNewValue

PropertyNotify event, serial 9, synthetic NO, window 0xa00001,
    atom 0x22 (WM_COMMAND), time 52376, state PropertyNewValue

PropertyNotify event, serial 10, synthetic NO, window 0xa00001,
    atom 0x28 (WM_NORMAL_HINTS), time 52376, state PropertyNewValue

CreateNotify event, serial 11, synthetic NO, window 0xa00001,
    parent 0xa00001, window 0xa00002, (10,10), width 50, height 50
border_width 4, override NO

PropertyNotify event, serial 14, synthetic NO, window 0xa00001,
    atom 0x10b (WM_PROTOCOLS), time 52377, state PropertyNewValue

MapNotify event, serial 15, synthetic NO, window 0xa00001,
    event 0xa00001, window 0xa00002, override NO

PropertyNotify event, serial 18, synthetic NO, window 0xa00001,
    atom 0x12a (_NET_WM_VISIBLE_NAME), time 52389, state PropertyNewValue

PropertyNotify event, serial 18, synthetic NO, window 0xa00001,
    atom 0x12c (_NET_WM_VISIBLE_ICON_NAME), time 52389, state PropertyNewValue

PropertyNotify event, serial 18, synthetic NO, window 0xa00001,
    atom 0x165 (_OB_APP_ROLE), time 52389, state PropertyNewValue

PropertyNotify event, serial 18, synthetic NO, window 0xa00001,
    atom 0x167 (_OB_APP_NAME), time 52389, state PropertyNewValue

PropertyNotify event, serial 18, synthetic NO, window 0xa00001,
    atom 0x168 (_OB_APP_CLASS), time 52389, state PropertyNewValue

PropertyNotify event, serial 18, synthetic NO, window 0xa00001,
    atom 0x169 (_OB_APP_GROUP_NAME), time 52389, state PropertyNewValue

PropertyNotify event, serial 18, synthetic NO, window 0xa00001,
    atom 0x16a (_OB_APP_GROUP_CLASS), time 52389, state PropertyNewValue

PropertyNotify event, serial 18, synthetic NO, window 0xa00001,
    atom 0x166 (_OB_APP_TITLE), time 52389, state PropertyNewValue

PropertyNotify event, serial 18, synthetic NO, window 0xa00001,
    atom 0x16b (_OB_APP_TYPE), time 52389, state PropertyNewValue

PropertyNotify event, serial 18, synthetic NO, window 0xa00001,
    atom 0x132 (_NET_WM_ICON), time 52391, state PropertyNewValue

ReparentNotify event, serial 18, synthetic NO, window 0xa00001,
    event 0xa00001, window 0xa00001, parent 0x800070,
    (0,0), override NO

PropertyNotify event, serial 22, synthetic NO, window 0xa00001,
    atom 0x12f (_NET_WM_STATE), time 52393, state PropertyNewValue

ConfigureNotify event, serial 22, synthetic NO, window 0xa00001,
    event 0xa00001, window 0xa00001, (0,0), width 178, height 178,
    border_width 0, above 0x80009c, override NO

ConfigureNotify event, serial 22, synthetic NO, window 0xa00001,
    event 0xa00001, window 0xa00001, (1,20), width 178, height 178,
    border_width 0, above 0x80009c, override NO

PropertyNotify event, serial 22, synthetic NO, window 0xa00001,
    atom 0x139 (_NET_FRAME_EXTENTS), time 52394, state PropertyNewValue

PropertyNotify event, serial 22, synthetic NO, window 0xa00001,
    atom 0x138 (_KDE_NET_WM_FRAME_STRUT), time 52394, state PropertyNewValue

PropertyNotify event, serial 24, synthetic NO, window 0xa00001,
    atom 0x135 (_NET_WM_ALLOWED_ACTIONS), time 52394, state PropertyNewValue

ConfigureNotify event, serial 24, synthetic YES, window 0xa00001,
    event 0xa00001, window 0xa00001, (309,156), width 178, height 178,
    border_width 2, above 0x0, override NO

PropertyNotify event, serial 24, synthetic NO, window 0xa00001,
    atom 0x12d (_NET_WM_DESKTOP), time 52395, state PropertyNewValue

MapNotify event, serial 33, synthetic NO, window 0xa00001,
    event 0xa00001, window 0xa00001, override NO

VisibilityNotify event, serial 33, synthetic NO, window 0xa00001,
    state VisibilityUnobscured

Expose event, serial 33, synthetic NO, window 0xa00001,
    (0,0), width 178, height 10, count 3

Expose event, serial 33, synthetic NO, window 0xa00001,
    (0,10), width 10, height 58, count 2

Expose event, serial 33, synthetic NO, window 0xa00001,
    (68,10), width 110, height 58, count 1

Expose event, serial 33, synthetic NO, window 0xa00001,
    (0,68), width 178, height 110, count 0

EnterNotify event, serial 33, synthetic NO, window 0xa00001,
    root 0xe1, subw 0x0, time 52406, (89,82), root:(400,240),
    mode NotifyNormal, detail NotifyAncestor, same_screen YES,
    focus NO, state 0

KeymapNotify event, serial 33, synthetic NO, window 0x0,
    keys:  11  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

PropertyNotify event, serial 35, synthetic NO, window 0xa00001,
    atom 0x10c (WM_STATE), time 52408, state PropertyNewValue

FocusIn event, serial 38, synthetic NO, window 0xa00001,
    mode NotifyNormal, detail NotifyNonlinear

KeymapNotify event, serial 38, synthetic NO, window 0x0,
    keys:  1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

KeyPress event, serial 44, synthetic NO, window 0xa00001,
    root 0xe1, subw 0x0, time 57270, (89,82), root:(400,240),
    state 0x0, keycode 57 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyPress event, serial 44, synthetic NO, window 0xa00001,
    root 0xe1, subw 0x0, time 57270, (89,82), root:(400,240),
    state 0x0, keycode 13 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyPress event, serial 44, synthetic NO, window 0xa00001,
    root 0xe1, subw 0x0, time 57270, (89,82), root:(400,240),
    state 0x0, keycode 8 (keysym 0xff7e, Mode_switch), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyPress event, serial 44, synthetic NO, window 0xa00001,
    root 0xe1, subw 0x0, time 57270, (89,82), root:(400,240),
    state 0x0, keycode 12 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyPress event, serial 44, synthetic NO, window 0xa00001,
    root 0xe1, subw 0x0, time 57270, (89,82), root:(400,240),
    state 0x0, keycode 28 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyPress event, serial 44, synthetic NO, window 0xa00001,
    root 0xe1, subw 0x0, time 57270, (89,82), root:(400,240),
    state 0x0, keycode 15 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyPress event, serial 44, synthetic NO, window 0xa00001,
    root 0xe1, subw 0x0, time 57270, (89,82), root:(400,240),
    state 0x0, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
    XLookupString gives 1 bytes: (1b) "
mbLookupString gives 1 bytes: (1b) "
FilterEvent returns: False

xinput test тоже возвращает больше keycodes чем нажато кнопок и так же возвращает практически случайные коды.

Пока определенно ничего не могу сказать. Почему, интересно, он у тебя старый драйвер kbd грузит?

[    30.398] (II) Using input driver 'kbd' for '  USB Keyboard'

Вот не помню, что было в 8-ке. Там же evdev был уже. Да и он у тебя на тачскрин загружается, а клавиатура вдруг kbd. Что у тебя в xorg.conf (xorg.conf.d/*)? Что в /etc/default/keyboard.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 2)
Ответ на: комментарий от Zubok

Старый kbd был установлен мной сознательно, для другой клавиатуры, потому, что evdev не мог определить ее как клавиатуру. Принципиально, чтобы все заработало именно с помощью kbd.

cat /etc/default/keyboard:

# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT=""
XKBOPTIONS=""

BACKSPACE="guess"

xorg.conf:

Section "ServerFlags"
    Option    "blank time" "0"
    Option    "standby time" "0"
    Option    "suspend time" "0"
    Option    "off time" "0"
EndSection

xorg.conf.d/ содержит:

-rw-r--r-- 1 root root 1774 сен  3 05:36 10-evdev.conf
-rw-r--r-- 1 root root 1350 окт 16  2017 10-quirks.conf
-rw-r--r-- 1 root root  541 авг 12 09:41 30-keyboard.conf
-rw-r--r-- 1 root root  115 авг 12 06:05 30-keyboard.conf.save
-rw-r--r-- 1 root root 1753 сен 17  2014 50-synaptics.conf
-rw-r--r-- 1 root root 1385 окт  4  2014 50-wacom.conf

cat 10-evdev.conf:

#
# Catch-all evdev loader for udev-based systems
# We don't simply match on any device since that also adds accelerometers
# and other devices that we don't really want to use. The list below
# matches everything but joysticks.

#Section "ServerLayout"
#    Identifier  "Configured"
#    Option "AutoAddDevices" "false"
#EndSection

Section "InputDevice"
        Identifier      "sun4i-ts"
        Option  "Device"        "/dev/input/event1"
        Option  "MatchDevicePath"       "/devices/platform/sun4i-ts/input/inpu$
        Option  "MatchIsPointer" "on"
        Driver  "evdev"
EndSection


Section "InputDevice"
        Identifier      "tca8418_gpio"
        Option  "Device"        "/dev/input/event0"
        Option  "MatchDevicePath"       "/devices/platform/sunxi-i2c.2/i2c-2/2-$
        Option  "MatchIsKeyboard" "on"
        Option  "CoreKeyboard"  "on"
        Driver  "kbd"
EndSection


Section "InputClass"
        Identifier "evdev pointer catchall"
        MatchIsPointer "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
EndSection

Section "InputClass"
        Identifier "evdev keyboard catchall"
        MatchIsKeyboard "on"
        MatchDevicePath "/dev/input/event*"
        Driver "kbd"
EndSection

Section "InputClass"
        Identifier "evdev touchpad catchall"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
EndSection

Section "InputClass"
        Identifier "evdev tablet catchall"
        MatchIsTablet "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
EndSection

Section "InputClass"
         Identifier "evdev touchscreen catchall"
         MatchIsTouchscreen "on"
         MatchDevicePath "/dev/input/event*"
         Driver "evdev"
EndSection
#Section        "InputClass"
#       Identifier      "evdev keyboard catchall"
#       MatchIsKeyboard "on"
#       MatchDevicePath "/devices/platform/sunxi-i2c.2/i2c-2/2-0034/input/input0"
#       Driver  "evdev"
#EndSection

Section "InputDevice"
        Identifier      "tca8418_gpio"
        Option  "Device"        "/dev/input/event0"
        Option  "MatchDevicePath"       "/devices/platform/sunxi-i2c.2/i2c-2/2-$
        Option  "XkbLayout"     "pocketchip"
        Option  "MatchIsKeyboard" "on"
#       Option  "CoreKeyboard"  "on"
        Driver  "evdev"
EndSection

tca8418_gpio - моя конечная цель, это встроенная клавиатура, но она не работает с точно таким же дефектом как и USB.

Monart ()
Ответ на: комментарий от Monart

Старый kbd был установлен мной сознательно, для другой клавиатуры, потому, что evdev не мог определить ее как клавиатуру. Принципиально, чтобы все заработало именно с помощью kbd.

Ну вот пока у меня есть предположение, что это может быть из-за kbd. Иксы в случае хотплага вообще его использовать не должны, о чем они и пишут. Ты же принудительно его по правилу его грузишь. Вот мне кажется, что тут собака порылась.

[    29.386] (II) The server relies on udev to provide the list of input devices.
        If no devices become available, reconfigure udev or disable AutoAddDevices.
[    29.386] (WW) Hotplugging is on, devices using drivers 'kbd', 'mouse' or 'vmmouse' will be disabled.
[    29.386] (WW) Disabling tca8418_gpio

Надо пробовать evdev или libinput вкорячивать. Вот только не помню, был ли libinput в 8-ке. Если и был, то он там на ранних стадиях. Но если есть, то его тоже попробовать.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Monart

Сейчас попробовал: Заменил в 10-evdev.conf все драйвера на evdev и usb клавиатура погрузилась и заработала нормально.

А, ну вот. Но вообще лучше не лезь в /usr/share. Ты же там правишь, судя по всему. Лучше все делай в /etc/X11/xorg.conf.d или /etc/X11/xorg.conf. Файлы в /usr/share больше для программ, которые из репозиториев туда свои файлы устанавливают. А для людей - /etc.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

Да, правлю именно там. Спасибо, буду стараться избегать этого.

Встроенная клавиатура все еще не работает, вот лог:

        If no devices become available, reconfigure udev or disable AutoAddDevices.
[    28.780] (II) Loader magic: 0xb6f21f20
[    28.780] (II) Module ABI versions:
[    28.780]    X.Org ANSI C Emulation: 0.4
[    28.780]    X.Org Video Driver: 18.0
[    28.780]    X.Org XInput driver : 21.0
[    28.780]    X.Org Server Extension : 8.0
[    28.781] (II) no primary bus or device found
[    28.781] (II) LoadModule: "glx"
[    28.821] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[    28.986] (II) Module glx: vendor="X.Org Foundation"
[    28.986]    compiled for 1.16.4, module version = 1.0.0
[    28.986]    ABI class: X.Org Server Extension, version 8.0
[    28.986] (==) AIGLX enabled
[    28.987] (==) Matched modesetting as autoconfigured driver 0
[    28.987] (==) Matched fbdev as autoconfigured driver 1
[    28.987] (==) Assigned the driver to the xf86ConfigLayout
[    28.987] (II) LoadModule: "modesetting"
[    28.987] (II) Loading /usr/lib/xorg/modules/drivers/modesetting_drv.so
[    29.045] (II) Module modesetting: vendor="X.Org Foundation"
[    29.045]    compiled for 1.16.4, module version = 0.9.0
[    29.045]    Module class: X.Org Video Driver
[    29.045]    ABI class: X.Org Video Driver, version 18.0
[    29.045] (II) LoadModule: "fbdev"
[    29.046] (II) Loading /usr/lib/xorg/modules/drivers/fbdev_drv.so
[    29.050] (II) Module fbdev: vendor="X.Org Foundation"
[    29.050]    compiled for 1.15.99.904, module version = 0.4.4
[    29.050]    Module class: X.Org Video Driver
[    29.050]    ABI class: X.Org Video Driver, version 18.0
[    29.050] (II) LoadModule: "evdev"
[    29.051] (II) Loading /usr/lib/xorg/modules/input/evdev_drv.so
[    29.081] (II) Module evdev: vendor="X.Org Foundation"
[    29.081]    compiled for 1.16.0, module version = 2.9.0
[    29.081]    Module class: X.Org XInput Driver
[    29.081]    ABI class: X.Org XInput driver, version 21.0
[    29.081] (II) modesetting: Driver for Modesetting Kernel Drivers: kms
[    29.081] (II) FBDEV: driver for framebuffer: fbdev
[    29.081] (++) using VT number 7

[    29.092] (WW) Falling back to old probe method for modesetting
[    29.093] (EE) open /dev/dri/card0: No such file or directory
[    29.093] (WW) Falling back to old probe method for fbdev
[    29.093] (II) Loading sub module "fbdevhw"
[    29.093] (II) LoadModule: "fbdevhw"
[    29.093] (II) Loading /usr/lib/xorg/modules/libfbdevhw.so
[    29.097] (II) Module fbdevhw: vendor="X.Org Foundation"
[    29.097]    compiled for 1.16.4, module version = 0.0.2
[    29.097]    ABI class: X.Org Video Driver, version 18.0
[    29.097] (II) FBDEV(0): using default device
[    29.098] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support
[    29.098] (II) FBDEV(0): Creating default Display subsection in Screen section
        "Default Screen Section" for depth/fbbpp 24/32
[    29.098] (==) FBDEV(0): Depth 24, (==) framebuffer bpp 32
[    29.098] (==) FBDEV(0): RGB weight 888
[    29.098] (==) FBDEV(0): Default visual is TrueColor
[    29.098] (==) FBDEV(0): Using gamma correction (1.0, 1.0, 1.0)
[    29.098] (II) FBDEV(0): hardware:  (video memory: 3000kB)
[    29.098] (II) FBDEV(0): checking modes against framebuffer device...
[    29.098] (II) FBDEV(0): checking modes against monitor...
[    29.098] (--) FBDEV(0): Virtual size is 800x480 (pitch 800)
[    29.098] (**) FBDEV(0):  Built-in mode "current": 33.0 MHz, 31.3 kHz, 59.6 Hz
[    29.098] (II) FBDEV(0): Modeline "current"x0.0   33.00  800 1009 1039 1055  480 502 503 525 -hsync -vsync -csync (31.3 kHz b)
[    29.098] (==) FBDEV(0): DPI set to (96, 96)
[    29.099] (II) Loading sub module "fb"
[    29.099] (II) LoadModule: "fb"
[    29.099] (II) Loading /usr/lib/xorg/modules/libfb.so
[    29.113] (II) Module fb: vendor="X.Org Foundation"
[    29.113]    compiled for 1.16.4, module version = 1.0.0
[    29.113]    ABI class: X.Org ANSI C Emulation, version 0.4
[    29.113] (**) FBDEV(0): using shadow framebuffer
[    29.113] (II) Loading sub module "shadow"
[    29.113] (II) LoadModule: "shadow"
[    29.113] (II) Loading /usr/lib/xorg/modules/libshadow.so
[    29.126] (II) Module shadow: vendor="X.Org Foundation"
[    29.126]    compiled for 1.16.4, module version = 1.1.0
[    29.126]    ABI class: X.Org ANSI C Emulation, version 0.4
[    29.126] (II) UnloadModule: "modesetting"
[    29.126] (II) Unloading modesetting
[    29.126] (==) Depth 24 pixmap format is 32 bpp
[    29.149] (==) FBDEV(0): Backing store enabled
[    29.156] (==) FBDEV(0): DPMS enabled
[    29.156] (==) RandR enabled
[    29.196] (II) SELinux: Disabled on system
[    29.201] (II) AIGLX: Screen 0 is not DRI2 capable
[    29.201] (EE) AIGLX: reverting to software rendering
[    29.389] (II) AIGLX: Loaded and initialized swrast
[    29.389] (II) GLX: Initialized DRISWRAST GL provider for screen 0
[    29.812] (II) Using input driver 'evdev' for 'tca8418_gpio'
[    29.812] (**) Option "CoreKeyboard" "on"
[    29.812] (**) tca8418_gpio: always reports core events
[    29.813] (**) evdev: tca8418_gpio: Device: "/dev/input/event0"
[    29.813] (--) evdev: tca8418_gpio: Vendor 0x1 Product 0x1
[    29.813] (WW) evdev: tca8418_gpio: Don't know how to use device
[    29.890] (EE) PreInit returned 8 for "tca8418_gpio"
[    29.890] (II) UnloadModule: "evdev"
[    29.899] (II) config/udev: Adding input device sun4i-ts (/dev/input/event1)
[    29.899] (**) sun4i-ts: Applying InputClass "evdev touchscreen catchall"
[    29.899] (II) Using input driver 'evdev' for 'sun4i-ts'
[    29.899] (**) sun4i-ts: always reports core events
[    29.899] (**) evdev: sun4i-ts: Device: "/dev/input/event1"
[    29.900] (--) evdev: sun4i-ts: Vendor 0x1 Product 0x1
[    29.900] (--) evdev: sun4i-ts: Found absolute axes
[    29.900] (--) evdev: sun4i-ts: Found x and y absolute axes
[    29.900] (--) evdev: sun4i-ts: Found absolute touchscreen
[    29.900] (II) evdev: sun4i-ts: Configuring as touchscreen
[    29.900] (**) evdev: sun4i-ts: YAxisMapping: buttons 4 and 5
[    29.900] (**) evdev: sun4i-ts: EmulateWheelButton: 4, EmulateWheelInertia: 10, EmulateWheelTimeout: 200
[    29.900] (**) Option "config_info" "udev:/sys/devices/platform/sun4i-ts/input/input1/event1"
[    29.900] (II) XINPUT: Adding extended input device "sun4i-ts" (type: TOUCHSCREEN, id 6)
[    29.901] (II) evdev: sun4i-ts: initialized for absolute axes.
[    29.901] (**) sun4i-ts: (accel) keeping acceleration scheme 1
[    29.902] (**) sun4i-ts: (accel) acceleration profile 0
[    29.902] (**) sun4i-ts: (accel) acceleration factor: 2.000
[    29.902] (**) sun4i-ts: (accel) acceleration threshold: 4
[    29.903] (II) config/udev: Adding input device sun4i-ts (/dev/input/mouse0)
[    29.904] (II) No input driver specified, ignoring this device.
[    29.904] (II) This device may have been added with another device file.
[    29.905] (II) config/udev: Adding input device tca8418_gpio (/dev/input/event0)
[    29.905] (II) No input driver specified, ignoring this device.
[    29.905] (II) This device may have been added with another device file.

Monart ()
Ответ на: комментарий от Monart

Вообще, лучше всего начать с чистого листа. Все, что сделано для клавиатуры, закомментировать. Чтобы все было чисто. А то много всяких секций добавлено, какие-то ручки подкручены, поэтому лог уже загрязнен этими изменениями. Надо посмотреть, что лог говорит, когда все чисто.

Zubok ★★★★★ ()
Ответ на: комментарий от Monart

evdev: tca8418_gpio: Don't know how to use device

Судя по всему, это устройство вообще какое-то специфичное. Надо подробнее посмотреть, что в драйвере для Linux. Возможно, что оно сообщает о себе весьма специфичным образом, что требует специального обращения.

Zubok ★★★★★ ()
Ответ на: комментарий от Zubok

Закомментировал все, что добавил сам для клавиатуры.

Файл 10-evdev.conf:

#
# Catch-all evdev loader for udev-based systems
# We don't simply match on any device since that also adds accelerometers
# and other devices that we don't really want to use. The list below
# matches everything but joysticks.

#Section "ServerLayout"
#    Identifier  "Configured"
#    Option "AutoAddDevices" "false"
#EndSection

Section "InputDevice"
        Identifier      "sun4i-ts"
        Option  "Device"        "/dev/input/event1"
        Option  "MatchDevicePath"       "/devices/platform/sun4i-ts/input/inpu$
        Option  "MatchIsPointer" "on"
        Driver  "evdev"
EndSection


#Section "InputDevice"
#        Identifier      "tca8418_gpio"
#        Option  "Device"        "/dev/input/event0"
#        Option  "MatchDevicePath"       "/devices/platform/sunxi-i2c.2/i2c-2/2-$
#        Option  "MatchIsKeyboard" "on"
#        Option  "CoreKeyboard"  "on"
#        Driver  "kbd"
#EndSection


Section "InputClass"
        Identifier "evdev pointer catchall"
        MatchIsPointer "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
EndSection

Section "InputClass"
        Identifier "evdev keyboard catchall"
        MatchIsKeyboard "on"
        MatchDevicePath "/dev/input/event*"
        Driver "kbd"
EndSection

Section "InputClass"
        Identifier "evdev touchpad catchall"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
EndSection

Section "InputClass"
        Identifier "evdev tablet catchall"
        MatchIsTablet "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
EndSection

Section "InputClass"
         Identifier "evdev touchscreen catchall"
         MatchIsTouchscreen "on"
         MatchDevicePath "/dev/input/event*"
         Driver "evdev"
EndSection

Файл 30-keyboard.conf:

#Section        "InputClass"
#       Identifier      "evdev keyboard catchall"
#       MatchIsKeyboard "on"
#       MatchDevicePath "/devices/platform/sunxi-i2c.2/i2c-2/2-0034/input/input0"
#       Driver  "evdev"
#EndSection

#Section "InputDevice"
#        Identifier      "tca8418_gpio"
#        Option  "Device"        "/dev/input/event0"
#        Option  "MatchDevicePath"       "/devices/platform/sunxi-i2c.2/i2c-2/2-$
#        Option  "XkbLayout"     "pocketchip"
#        Option  "MatchIsKeyboard" "on"
#       Option  "CoreKeyboard"  "on"
#        Driver  "evdev"
#EndSection
Monart ()
Ответ на: комментарий от Zubok

Лог загрузки:

[    28.088] (==) ModulePath set to "/usr/lib/xorg/modules"
[    28.088] (II) The server relies on udev to provide the list of input devices.
        If no devices become available, reconfigure udev or disable AutoAddDevices.
[    28.088] (II) Loader magic: 0xb6fadf20
[    28.088] (II) Module ABI versions:
[    28.089]    X.Org ANSI C Emulation: 0.4
[    28.089]    X.Org Video Driver: 18.0
[    28.089]    X.Org XInput driver : 21.0
[    28.089]    X.Org Server Extension : 8.0
[    28.089] (II) no primary bus or device found
[    28.089] (II) LoadModule: "glx"
[    28.121] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[    28.264] (II) Module glx: vendor="X.Org Foundation"
[    28.264]    compiled for 1.16.4, module version = 1.0.0
[    28.264]    ABI class: X.Org Server Extension, version 8.0
[    28.264] (==) AIGLX enabled
[    28.265] (==) Matched modesetting as autoconfigured driver 0
[    28.265] (==) Matched fbdev as autoconfigured driver 1
[    28.265] (==) Assigned the driver to the xf86ConfigLayout
[    28.265] (II) LoadModule: "modesetting"
[    28.265] (II) Loading /usr/lib/xorg/modules/drivers/modesetting_drv.so
[    28.275] (II) Module modesetting: vendor="X.Org Foundation"
[    28.275]    compiled for 1.16.4, module version = 0.9.0
[    28.275]    Module class: X.Org Video Driver
[    28.276]    ABI class: X.Org Video Driver, version 18.0
[    28.276] (II) LoadModule: "fbdev"
[    28.276] (II) Loading /usr/lib/xorg/modules/drivers/fbdev_drv.so
[    28.280] (II) Module fbdev: vendor="X.Org Foundation"
[    28.280]    compiled for 1.15.99.904, module version = 0.4.4
[    28.280]    Module class: X.Org Video Driver
[    28.280]    ABI class: X.Org Video Driver, version 18.0
[    28.280] (II) modesetting: Driver for Modesetting Kernel Drivers: kms
[    28.280] (II) FBDEV: driver for framebuffer: fbdev
[    28.280] (++) using VT number 7

[    28.291] (WW) Falling back to old probe method for modesetting
[    28.291] (EE) open /dev/dri/card0: No such file or directory
[    28.291] (WW) Falling back to old probe method for fbdev
[    28.291] (II) Loading sub module "fbdevhw"
[    28.292] (II) LoadModule: "fbdevhw"
[    28.292] (II) Loading /usr/lib/xorg/modules/libfbdevhw.so
[    28.296] (II) Module fbdevhw: vendor="X.Org Foundation"
[    28.296]    compiled for 1.16.4, module version = 0.0.2
[    28.296]    ABI class: X.Org Video Driver, version 18.0
[    28.296] (II) FBDEV(0): using default device
[    28.296] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support
[    28.296] (II) FBDEV(0): Creating default Display subsection in Screen section
        "Default Screen Section" for depth/fbbpp 24/32
[    28.296] (==) FBDEV(0): Depth 24, (==) framebuffer bpp 32
[    28.296] (==) FBDEV(0): RGB weight 888
[    28.297] (==) FBDEV(0): Default visual is TrueColor
[    28.297] (==) FBDEV(0): Using gamma correction (1.0, 1.0, 1.0)
[    28.297] (II) FBDEV(0): hardware:  (video memory: 3000kB)
[    28.297] (II) FBDEV(0): checking modes against framebuffer device...
[    28.297] (II) FBDEV(0): checking modes against monitor...
[    28.297] (--) FBDEV(0): Virtual size is 800x480 (pitch 800)
[    28.297] (**) FBDEV(0):  Built-in mode "current": 33.0 MHz, 31.3 kHz, 59.6 Hz
[    28.297] (II) FBDEV(0): Modeline "current"x0.0   33.00  800 1009 1039 1055  480 502 503 525 -hsync -vsync -csync (31.3 kHz b)
[    28.297] (==) FBDEV(0): DPI set to (96, 96)
[    28.297] (II) Loading sub module "fb"
[    28.297] (II) LoadModule: "fb"
[    28.297] (II) Loading /usr/lib/xorg/modules/libfb.so
[    28.311] (II) Module fb: vendor="X.Org Foundation"
[    28.312]    compiled for 1.16.4, module version = 1.0.0
[    28.312]    ABI class: X.Org ANSI C Emulation, version 0.4
[    28.312] (**) FBDEV(0): using shadow framebuffer
[    28.312] (II) Loading sub module "shadow"
[    28.312] (II) LoadModule: "shadow"
[    28.312] (II) Loading /usr/lib/xorg/modules/libshadow.so
[    28.325] (II) Module shadow: vendor="X.Org Foundation"
[    28.325]    compiled for 1.16.4, module version = 1.1.0
[    28.325]    ABI class: X.Org ANSI C Emulation, version 0.4
[    28.325] (II) UnloadModule: "modesetting"
[    28.325] (II) Unloading modesetting
[    28.325] (==) Depth 24 pixmap format is 32 bpp
[    28.348] (==) FBDEV(0): Backing store enabled
[    28.349] (==) FBDEV(0): DPMS enabled
[    28.349] (==) RandR enabled
[    28.389] (II) SELinux: Disabled on system
[    28.394] (II) AIGLX: Screen 0 is not DRI2 capable
[    28.394] (EE) AIGLX: reverting to software rendering
[    28.586] (II) AIGLX: Loaded and initialized swrast
[    28.586] (II) GLX: Initialized DRISWRAST GL provider for screen 0
[    29.014] (II) config/udev: Adding input device sun4i-ts (/dev/input/event1)
[    29.015] (**) sun4i-ts: Applying InputClass "evdev touchscreen catchall"
[    29.015] (II) LoadModule: "evdev"
[    29.015] (II) Loading /usr/lib/xorg/modules/input/evdev_drv.so
[    29.046] (II) Module evdev: vendor="X.Org Foundation"
[    29.046]    compiled for 1.16.0, module version = 2.9.0
[    29.046]    Module class: X.Org XInput Driver
[    29.046]    ABI class: X.Org XInput driver, version 21.0
[    29.046] (II) Using input driver 'evdev' for 'sun4i-ts'
[    29.046] (**) sun4i-ts: always reports core events
[    29.046] (**) evdev: sun4i-ts: Device: "/dev/input/event1"
[    29.047] (--) evdev: sun4i-ts: Vendor 0x1 Product 0x1
[    29.047] (--) evdev: sun4i-ts: Found absolute axes
[    29.047] (--) evdev: sun4i-ts: Found x and y absolute axes
[    29.047] (--) evdev: sun4i-ts: Found absolute touchscreen
[    29.047] (II) evdev: sun4i-ts: Configuring as touchscreen
[    29.047] (**) evdev: sun4i-ts: YAxisMapping: buttons 4 and 5
[    29.047] (**) evdev: sun4i-ts: EmulateWheelButton: 4, EmulateWheelInertia: 10, EmulateWheelTimeout: 200
[    29.047] (**) Option "config_info" "udev:/sys/devices/platform/sun4i-ts/input/input1/event1"
[    29.047] (II) XINPUT: Adding extended input device "sun4i-ts" (type: TOUCHSCREEN, id 6)
[    29.048] (II) evdev: sun4i-ts: initialized for absolute axes.
[    29.049] (**) sun4i-ts: (accel) keeping acceleration scheme 1
[    29.049] (**) sun4i-ts: (accel) acceleration profile 0
[    29.049] (**) sun4i-ts: (accel) acceleration factor: 2.000
[    29.049] (**) sun4i-ts: (accel) acceleration threshold: 4
[    29.051] (II) config/udev: Adding input device sun4i-ts (/dev/input/mouse0)
[    29.051] (II) No input driver specified, ignoring this device.
[    29.051] (II) This device may have been added with another device file.
[    29.052] (II) config/udev: Adding input device tca8418_gpio (/dev/input/event0)
[    29.053] (II) No input driver specified, ignoring this device.
[    29.053] (II) This device may have been added with another device file.
Monart ()
Ответ на: комментарий от Zubok

lsmod:

sunxi_sid               3766  0
sun4i_ts                4395  0
tca8418_keypad_and_gpio     8892  0
sunxi_cedar_mod        10313  0
ftdi_sio               35429  0
usbserial              33896  1 ftdi_sio

dmesg | grep tca

[   16.162132] tca8418_gpio_detect: trying i2c_bus = 2, i2c_addr = 0x34
[   16.173676] tca8418_gpio_probe: i2c_bus para is missing, default to 2
[   16.185511] tca8418_gpio_detect: configured i2c_bus = 2, i2c_addr = 0x34
[   16.196795] tca8418_gpio_detect: device present on this i2c bus
[   16.208439] tca8418_gpio_probe: using EINT = 13, port = 7, pin = 13, mux = 6
[   16.217304] tca8418_configure()
[   16.237569] input: tca8418_gpio as /devices/platform/sunxi-i2c.2/i2c-2/2-0034/input/input0
[   16.271690] tca8418_gpio_probe: success on i2c_bus = 2, i2c_addr = 0x34, EINT = 13, SoftIRQ = 60
Monart ()
Ответ на: комментарий от Monart

Закомментировал все, что добавил сам для клавиатуры.

Вообще все. Вот kbd там в правиле разве было? Уверен, что нет. Там было evdev. А ты оставляешь. Надо все убрать. И это тоже закомментировать. Вообще, восстанови 10-evdev.conf как он был и не правь его.

Section "InputDevice"
        Identifier      "sun4i-ts"
        Option  "Device"        "/dev/input/event1"
        Option  "MatchDevicePath"       "/devices/platform/sun4i-ts/input/inpu$
        Option  "MatchIsPointer" "on"
        Driver  "evdev"
EndSection

Весь этот файл 10-evdev.conf скопируй куда-нибудь, чтобы не забыть, что ты правил там и добавлял, а потом восстанови его. Этот файл установлен пакетом xserver-xorg-input-evdev. Вот этот пакет и переставь заново:

$ apt-get install --reinstall xserver-xorg-input-evdev

Файл должен стать таким, каким его принес пакет. После того,как все будет чисто, будем глядеть.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 2)
Ответ на: комментарий от Zubok

Вот kbd там в правиле разве было? Уверен, что нет.

Да, моя ошибка, пропустил.

Пакет переустановил. Конфигурация чистая. Тачскрин подгрузился и работает, а клавиатура - нет.

Лог:

[    28.436] (==) ModulePath set to "/usr/lib/xorg/modules"
[    28.436] (II) The server relies on udev to provide the list of input devices.
        If no devices become available, reconfigure udev or disable AutoAddDevices.
[    28.436] (II) Loader magic: 0xb6f3df20
[    28.436] (II) Module ABI versions:
[    28.436]    X.Org ANSI C Emulation: 0.4
[    28.436]    X.Org Video Driver: 18.0
[    28.436]    X.Org XInput driver : 21.0
[    28.436]    X.Org Server Extension : 8.0
[    28.437] (II) no primary bus or device found
[    28.437] (II) LoadModule: "glx"
[    28.468] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[    28.615] (II) Module glx: vendor="X.Org Foundation"
[    28.615]    compiled for 1.16.4, module version = 1.0.0
[    28.615]    ABI class: X.Org Server Extension, version 8.0
[    28.616] (==) AIGLX enabled
[    28.616] (==) Matched modesetting as autoconfigured driver 0
[    28.616] (==) Matched fbdev as autoconfigured driver 1
[    28.616] (==) Assigned the driver to the xf86ConfigLayout
[    28.616] (II) LoadModule: "modesetting"
[    28.616] (II) Loading /usr/lib/xorg/modules/drivers/modesetting_drv.so
[    28.626] (II) Module modesetting: vendor="X.Org Foundation"
[    28.626]    compiled for 1.16.4, module version = 0.9.0
[    28.626]    Module class: X.Org Video Driver
[    28.627]    ABI class: X.Org Video Driver, version 18.0
[    28.627] (II) LoadModule: "fbdev"
[    28.627] (II) Loading /usr/lib/xorg/modules/drivers/fbdev_drv.so
[    28.631] (II) Module fbdev: vendor="X.Org Foundation"
[    28.631]    compiled for 1.15.99.904, module version = 0.4.4
[    28.631]    Module class: X.Org Video Driver
[    28.631]    ABI class: X.Org Video Driver, version 18.0
[    28.631] (II) modesetting: Driver for Modesetting Kernel Drivers: kms
[    28.631] (II) FBDEV: driver for framebuffer: fbdev
[    28.631] (++) using VT number 7

[    28.639] (WW) Falling back to old probe method for modesetting
[    28.639] (EE) open /dev/dri/card0: No such file or directory
[    28.639] (WW) Falling back to old probe method for fbdev
[    28.639] (II) Loading sub module "fbdevhw"
[    28.639] (II) LoadModule: "fbdevhw"
[    28.640] (II) Loading /usr/lib/xorg/modules/libfbdevhw.so
[    28.644] (II) Module fbdevhw: vendor="X.Org Foundation"
[    28.644]    compiled for 1.16.4, module version = 0.0.2
[    28.644]    ABI class: X.Org Video Driver, version 18.0
[    28.644] (II) FBDEV(0): using default device
[    28.644] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support
[    28.644] (II) FBDEV(0): Creating default Display subsection in Screen section
        "Default Screen Section" for depth/fbbpp 24/32
[    28.645] (==) FBDEV(0): Depth 24, (==) framebuffer bpp 32
[    28.645] (==) FBDEV(0): RGB weight 888
[    28.645] (==) FBDEV(0): Default visual is TrueColor
[    28.645] (==) FBDEV(0): Using gamma correction (1.0, 1.0, 1.0)
[    28.645] (II) FBDEV(0): hardware:  (video memory: 3000kB)
[    28.645] (II) FBDEV(0): checking modes against framebuffer device...
[    28.645] (II) FBDEV(0): checking modes against monitor...
[    28.645] (--) FBDEV(0): Virtual size is 800x480 (pitch 800)
[    28.645] (**) FBDEV(0):  Built-in mode "current": 33.0 MHz, 31.3 kHz, 59.6 Hz
[    28.645] (II) FBDEV(0): Modeline "current"x0.0   33.00  800 1009 1039 1055  480 502 503 525 -hsync -vsync -csync (31.3 kHz b)
[    28.645] (==) FBDEV(0): DPI set to (96, 96)
[    28.645] (II) Loading sub module "fb"
[    28.645] (II) LoadModule: "fb"
[    28.646] (II) Loading /usr/lib/xorg/modules/libfb.so
[    28.660] (II) Module fb: vendor="X.Org Foundation"
[    28.660]    compiled for 1.16.4, module version = 1.0.0
[    28.660]    ABI class: X.Org ANSI C Emulation, version 0.4
[    28.660] (**) FBDEV(0): using shadow framebuffer
[    28.660] (II) Loading sub module "shadow"
[    28.660] (II) LoadModule: "shadow"
[    28.660] (II) Loading /usr/lib/xorg/modules/libshadow.so
[    28.673] (II) Module shadow: vendor="X.Org Foundation"
[    28.673]    compiled for 1.16.4, module version = 1.1.0
[    28.673]    ABI class: X.Org ANSI C Emulation, version 0.4
[    28.673] (II) UnloadModule: "modesetting"
[    28.673] (II) Unloading modesetting
[    28.673] (==) Depth 24 pixmap format is 32 bpp
[    28.696] (==) FBDEV(0): Backing store enabled
[    28.697] (==) FBDEV(0): DPMS enabled
[    28.697] (==) RandR enabled
[    28.737] (II) SELinux: Disabled on system
[    28.743] (II) AIGLX: Screen 0 is not DRI2 capable
[    28.743] (EE) AIGLX: reverting to software rendering
[    28.930] (II) AIGLX: Loaded and initialized swrast
[    28.930] (II) GLX: Initialized DRISWRAST GL provider for screen 0
[    29.361] (II) config/udev: Adding input device sun4i-ts (/dev/input/event1)
[    29.361] (**) sun4i-ts: Applying InputClass "evdev touchscreen catchall"
[    29.361] (II) LoadModule: "evdev"
[    29.362] (II) Loading /usr/lib/xorg/modules/input/evdev_drv.so
[    29.391] (II) Module evdev: vendor="X.Org Foundation"
[    29.391]    compiled for 1.16.0, module version = 2.9.0
[    29.391]    Module class: X.Org XInput Driver
[    29.391]    ABI class: X.Org XInput driver, version 21.0
[    29.391] (II) Using input driver 'evdev' for 'sun4i-ts'
[    29.391] (**) sun4i-ts: always reports core events
[    29.392] (**) evdev: sun4i-ts: Device: "/dev/input/event1"
[    29.392] (--) evdev: sun4i-ts: Vendor 0x1 Product 0x1
[    29.392] (--) evdev: sun4i-ts: Found absolute axes
[    29.392] (--) evdev: sun4i-ts: Found x and y absolute axes
[    29.392] (--) evdev: sun4i-ts: Found absolute touchscreen
[    29.392] (II) evdev: sun4i-ts: Configuring as touchscreen
[    29.393] (**) evdev: sun4i-ts: YAxisMapping: buttons 4 and 5
[    29.393] (**) evdev: sun4i-ts: EmulateWheelButton: 4, EmulateWheelInertia: 10, EmulateWheelTimeout: 200
[    29.393] (**) Option "config_info" "udev:/sys/devices/platform/sun4i-ts/input/input1/event1"
[    29.393] (II) XINPUT: Adding extended input device "sun4i-ts" (type: TOUCHSCREEN, id 6)
[    29.393] (II) evdev: sun4i-ts: initialized for absolute axes.
[    29.394] (**) sun4i-ts: (accel) keeping acceleration scheme 1
[    29.394] (**) sun4i-ts: (accel) acceleration profile 0
[    29.394] (**) sun4i-ts: (accel) acceleration factor: 2.000
[    29.394] (**) sun4i-ts: (accel) acceleration threshold: 4
[    29.396] (II) config/udev: Adding input device sun4i-ts (/dev/input/mouse0)
[    29.396] (II) No input driver specified, ignoring this device.
[    29.396] (II) This device may have been added with another device file.
[    29.398] (II) config/udev: Adding input device tca8418_gpio (/dev/input/event0)
[    29.398] (II) No input driver specified, ignoring this device.
[    29.398] (II) This device may have been added with another device file.
Monart ()
Ответ на: комментарий от Zubok

udevadm info /dev/input/event0:

P: /devices/platform/sunxi-i2c.2/i2c-2/2-0034/input/input0/event0
N: input/event0
S: input/by-path/platform-sunxi-i2c.2-event
E: DEVLINKS=/dev/input/by-path/platform-sunxi-i2c.2-event
E: DEVNAME=/dev/input/event0
E: DEVPATH=/devices/platform/sunxi-i2c.2/i2c-2/2-0034/input/input0/event0
E: ID_INPUT=1
E: ID_PATH=platform-sunxi-i2c.2
E: ID_PATH_TAG=platform-sunxi-i2c_2
E: MAJOR=13
E: MINOR=64
E: SUBSYSTEM=input
E: USEC_INITIALIZED=577162
Monart ()
Ответ на: комментарий от Monart

У меня пока сомнения, что вообще драйвер ядра правильный. gpio означает, что это, скорее, драйвер не клавиатуры, а для управления выводами чипа как General-purpose Input/Output (GPIO). А драйвер tca8418 как клавиатуры вообще не грузится или его нет. В Linux есть такой драйвер (с 2011 года), но он обзывается tca8418_keypad, а у тебя такого в lsmod нет: https://github.com/torvalds/linux/blob/a9c9a6f741cdaa2fa9ba24a790db8d07295761...

А ядро какое? Откуда?

Zubok ★★★★★ ()
Ответ на: комментарий от Zubok

У меня переписанный(не мной) драйвер tca8418, собранный вместе с исходниками ядра.

Клавиатура организована микросхемой TCA8418 которая висит на одной из шин I2C.

uname -a

Linux devuan 3.4.103 #131 SMP PREEMPT Tue Jun 29 09:43:00 UTC 2021 armv7l GNU/Linux
Monart ()
Ответ на: комментарий от Monart

Клавиатура организована микросхемой TCA8418 которая висит на одной из шин I2C.

Ну это и ежу понятно, что чип и I2C.

Linux devuan 3.4.103 #131 SMP PREEMPT Tue Jun 29 09:43:00 UTC 2021 armv7l GNU/Linux

Старое ядро, да. Но с драйвером надо разобраться. Где исходники всего этого дела с переписанным драйвером? Онлайн где-то есть? Если этот драйвер просто выводами как GPIO управляет, то очевидно, что никакой клавиатурой он не будет. Вот сразу вслепую я не могу этого сказать.

TCA8418 I2C Controlled Keypad Scan IC With Integrated ESD Protection

The TCA8418 is a keypad scan device with integrated ESD protection. It can operate from 1.65 V to 3.6 V and has 18 general purpose inputs/outputs (GPIO) that can be used to support up to 80 keys via the I2C interface.

То есть этот чип может работать просто как 18 GPIO, которыми можно дрыгать, или как клавиатура. Меня смущает название драйвера tca8418_gpio. Без знания того, как написан драйвер, нельзя сказать, имеет ли он он представление о клавиатуре. Да и потом: клавиатуру к этому чипу можно подключить весьма по-разному и от устройства к устройству это может меняться.

8.3.1.1 Key Event Table The TCA8418 can be configured to support many different configurations of keypad setups. All 18 GPIOs for the rows and columns can be used to support up to 80 keys in a key pad array. Another option is that all 18 GPIOs be used for GPIs to read 18 buttons which are not connected in an array. Any combination in between is also acceptable (for example, a 3 x 4 keypad matrix and using the remaining 11 GPIOs as a combination of inputs and outputs).

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

Исходников у меня к сожалению нет, возможно возможно мне передадут их позже.

Возможно я неправильно выразился.

Сам драйвер tca8418_gpio работает, но не подтягивается в X11.

evtest выводит скан коды, например:

No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:      tca8418_gpio
/dev/input/event1:      sun4i-ts
Select the device event number [0-1]: 0
Input driver version is 1.0.1
Input device ID: bus 0x18 vendor 0x1 product 0x1 version 0x1
Input device name: "tca8418_gpio"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
Key repeat handling:
  Repeat type 20 (EV_REP)
    Repeat code 0 (REP_DELAY)
      Value    250
    Repeat code 1 (REP_PERIOD)
      Value     33
Properties:
Testing ... (interrupt to exit)
Event: time 1630669141.473532, type 4 (EV_MSC), code 4 (MSC_SCAN), value e5
Event: time 1630669141.473541, -------------- EV_SYN ------------
Event: time 1630669141.640699, type 4 (EV_MSC), code 4 (MSC_SCAN), value 65
Event: time 1630669141.640709, -------------- EV_SYN ------------

Нужно подтянуть его в X11.

Monart ()
Ответ на: комментарий от Monart

Пока то, что я вижу - это то, что такая клавиатура не посылает никаких EV_KEY. Можешь на любой клаве проверить, что помимо EV_MSC прут еще EV_KEY. События типа EV_MSC драйвер evdev вообще никак не обрабатывает. https://gitlab.freedesktop.org/xorg/driver/xf86-input-evdev/-/blob/master/src...

То есть информации из такого устройства о кнопках для него вообще ноль. Нет, устройство пишет о себе, что оно такие события посылает, но фактически не посылает. Вот пока такое.

Zubok ★★★★★ ()
Ответ на: комментарий от Monart

А есть ли шансы запуститься на kbd драйвере?

Никаких. И на libinput тоже, похоже. Я совсем не знаком с его внутренностями, но и там видно, что на уровень EV_MSC/MSC_SCAN спуск происходит в очень специфичных случаях, специфичных для конкретного устройства. В основном же там тоже EV_KEY обрабатывается. Я отвечаю на слово «запуститься», так как вообще дописать на Си можно и запуститься :) Я считаю, что реализация драйвера, который у тебя, недостаточна. Слишком сырые данные он выдает. И драйвер должен посылать EV_KEY. А EV_MSC/MSC_SCAN он за компанию шлет. Можно, конечно, написать какой-то такой модуль, который обрабатывает эти события MSC, создает виртуальное устройство /dev/input/event и шлет уже там нормальный вывод. Но это в любом случае писанина и костылина. Вот бы увидеть исходник твоего драйвера.

Однако вот я выше давал ссылку на драйвер tca8418_keypad, который сейчас в ядре есть. И там такое:

https://github.com/torvalds/linux/blob/a9c9a6f741cdaa2fa9ba24a790db8d07295761...

static void tca8418_read_keypad(struct tca8418_keypad *keypad_data)
{
	struct input_dev *input = keypad_data->input;
	unsigned short *keymap = input->keycode;
	int error, col, row;
	u8 reg, state, code;

	do {
		error = tca8418_read_byte(keypad_data, REG_KEY_EVENT_A, &reg);
		if (error < 0) {
			dev_err(&keypad_data->client->dev,
				"unable to read REG_KEY_EVENT_A\n");
			break;
		}

		/* Assume that key code 0 signifies empty FIFO */
		if (reg <= 0)
			break;

		state = reg & KEY_EVENT_VALUE;
		code  = reg & KEY_EVENT_CODE;

		row = code / TCA8418_MAX_COLS;
		col = code % TCA8418_MAX_COLS;

		row = (col) ? row : row - 1;
		col = (col) ? col - 1 : TCA8418_MAX_COLS - 1;

		code = MATRIX_SCAN_CODE(row, col, keypad_data->row_shift);
		input_event(input, EV_MSC, MSC_SCAN, code);
		input_report_key(input, keymap[сode], state);

	} while (1);

	input_sync(input);
}

Вот что я тут вижу. Он читает матрицу, получает сканкод, а потом вызывает input_report_key, которая по сканкоду формирует keymap. Насколько я понимаю (а я это вижу в первый раз в жизни), он как раз в этом месте пошлет какой-то EV_KEY. Но я могу ошибаться.

См. радел 1.3

https://www.kernel.org/doc/Documentation/input/input-programming.txt

1.3 Basic event types
~~~~~~~~~~~~~~~~~~~~~

The most simple event type is EV_KEY, which is used for keys and buttons.
It's reported to the input system via:

	input_report_key(struct input_dev *dev, int code, int value)

See linux/input.h for the allowable values of code (from 0 to KEY_MAX).
Value is interpreted as a truth value, ie any nonzero value means key
pressed, zero value means key released. The input code generates events only
in case the value is different from before.

То есть вот идея пока такая - попробовать поставить ядро для твоей архитектуры вот с этим драйвером tca8418_keypad и поглядеть, что получается. Мне кажется, что это косо-криво может заработать.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Monart

То есть вот идея пока такая - попробовать поставить ядро для твоей архитектуры вот с этим драйвером tca8418_keypad и поглядеть, что получается. Мне кажется, что это косо-криво может заработать.

Ну или бэкпортить драйвер на твое ядро.

Zubok ★★★★★ ()
Ответ на: комментарий от Monart

Понял, попытаюсь запуститься со стандартным драйвером и дальше уже по ситуации.

Я гланул в исходники ванильного ядра. Вот у тебя 3.4.103. В ядрах v3.4 драйвер tca8418_keypad уже был. https://github.com/torvalds/linux/blob/v3.4/drivers/input/keyboard/tca8418_ke...

UPD. При этом он в разделе keyboard. Поэтому я полагаю, что драйвер скажет о себе, что он клавиатура.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 2)
Ответ на: комментарий от Monart

tca8418_keypad_and_gpio

Судя по названию драйвера, он должен реализовывать и функцию keypad и также позволять использовать часть неиспользуемых ног как GPIO. Обычный драйвер в Linux только как клавиатура, как я понял. Если твой чип только клавиатуру обслуживает и больше ничего к нему не подключено, то tca8418_keypad должно хватить. Если же часть ног использованы под матрицу, а часть для GPIO, чтобы чем-то управлять (например, светодиодом) или считывать состояние, то вот эта часть может не заработать. Any combination in between is also acceptable (for example, a 3 x 4 keypad matrix and using the remaining 11 GPIOs as a combination of inputs and outputs). Но исходников нет, поэтому не ясно.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 2)
Ответ на: комментарий от Monart

Короче, смотри, что я тут нарыл. Надо эти сканкоды матрицы биндить. Без биндинга (привязки колонок и столбцов матрицы) таблицы keymap как бы и нет. Это в DTS надо делать, как я понял.

https://www.kernel.org/doc/Documentation/devicetree/bindings/input/matrix-key...

https://kernel.googlesource.com/pub/scm/linux/kernel/git/rric/linux/ /1bda19e...

А что у тебя в DTS по поводу этого чипа?

Вот пример оверлея какого-то. Как раз для tca8418.

https://gist.github.com/pklazy/7543a9af16d1062c08019ce1504abc07

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 3)
Ответ на: комментарий от Monart

Разработчик который переписывал его, сказал, что там нет таблицы KEY_EV.

А я поэтому и вышел на эти таблицы, так как хотел понять, а какие, собственно коды будут генерироваться драйвером. Там же в драйвере массив keymap[сode]. Так вот он задается в файле DTS. По идее это можно сделать самостоятельно.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Monart

Проблема в драйвере

Если у него драйвер тоже использует keymap, как и драйвер, который в Linux идет, то, в общем-то, достаточно написать файл DTS (оверлей) и положить его туда, где у тебя другие файлы DTS лежат. Или можно системный подправить. Для того, чтобы написать, надо знать, на какую шину i2c подключена клавиатура, адрес на шине, конфигурацию матрицы, к каким ногам все подключено, где столбцы, где колонки.

Zubok ★★★★★ ()