AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1007374
Accepted
user796678
user796678
Asked: 2018-02-19 04:44:21 +0800 CST2018-02-19 04:44:21 +0800 CST 2018-02-19 04:44:21 +0800 CST

如何使用 libinput 而不是 xinput?

  • 772

我的笔记本电脑的键盘不再工作了。因此,我编写了一个脚本来禁用板载键盘xinput float ID。在新版本的 Ubuntu (17.10) 上,由于对 Wayland 的更新,这不再有效。

当我使用 列出我的设备时sudo libinput list-devices,我得到:

[...]
Device:           Rapoo E6100
Kernel:           /dev/input/event13
Group:            6
Seat:             seat0, default
Capabilities:     keyboard
Tap-to-click:     n/a
Tap-and-drag:     n/a
Tap drag lock:    n/a
Left-handed:      n/a
Nat.scrolling:    n/a
Middle emulation: n/a
Calibration:      n/a
Scroll methods:   none
Click methods:    none
Disable-w-typing: n/a
Accel profiles:   n/a
Rotation:         n/a
[...]
Device:           AT Translated Set 2 keyboard
Kernel:           /dev/input/event4
Group:            9
Seat:             seat0, default
Capabilities:     keyboard
Tap-to-click:     n/a
Tap-and-drag:     n/a
Tap drag lock:    n/a
Left-handed:      n/a
Nat.scrolling:    n/a
Middle emulation: n/a
Calibration:      n/a
Scroll methods:   none
Click methods:    none
Disable-w-typing: n/a
Accel profiles:   n/a
Rotation:         n/a
[...]

Rapoo E6100是工作键盘,AT Translated Set 2 键盘是损坏的板载键盘。

我读到,为了忽略设备,可以从中删除功能(https://wayland.freedesktop.org/libinput/doc/latest/udev_config.html#udev_device_type)。如何使用 libinput 实现这一点?

还是有可能简单地忽略第 9 组?

keyboard xinput libinput
  • 1 1 个回答
  • 3082 Views

1 个回答

  • Voted
  1. Best Answer
    meuh
    2018-02-20T10:33:40+08:002018-02-20T10:33:40+08:00

    禁用键盘的一种快速而肮脏的方法可能是使用evtest抓取它。然后事件被传递给测试程序,不再传递给图形服务器。

    $ sudo evtest --grab /dev/input/event4 >/dev/null
    

    你必须让这个程序一直运行。


    禁用设备的更困难的方法是为其添加设置ID_INPUT为空的 udev 规则,以便 libinput 忽略它。我没有尝试过以下方法,因此将其用作探索的指南,而不是确定的解决方案。

    首先,列出作为键盘的事件设备的 udev 信息,例如:

    $ udevadm info /dev/input/event4
    ...
    E: ID_INPUT=1
    E: ID_INPUT_KEY=1
    E: ID_INPUT_KEYBOARD=1
    E: ID_SERIAL=05f3_0007
    

    您现在必须找到能够唯一识别您的设备的东西。通常这是一个 USB 供应商和产品 ID(如上ID_SERIAL所示)。前缀意味着这个E:变量是在 udev 环境中设置的,所以在 udev 规则中你应该说你想要匹配ENV{ID_SERIAL}=="05f3_0007"。

    但是,对于您的笔记本电脑,您可能需要找到其他匹配的东西。您可以在设备树的上方搜索以找到具有更易于匹配的属性的父级:

    $ udevadm info -a /dev/input/event4
    ...
    looking at parent device '/devices/pci0000:00/.../input/input4':
      KERNELS=="input4"
      SUBSYSTEMS=="input"
      ATTRS{name}=="HID 05f3:0007"
      ...
    

    因此,您可以改为在 ID_SERIAL 上匹配 udev 规则ATTRS{name}=="HID 05f3:0007"。在你的情况下,我希望像ATTRS{name}=="AT Translated Set 2 keyboard".

    找到合适的匹配项后,/etc/udev/rules.d/99-my.rules使用覆盖规则创建自己的文件(以 99 开头以使您的规则最后)以将ID_INPUT值重置为空。请严格遵守此文件的格式。请注意,所有条件都是如何与==除了最后一个条件进行比较的,后者是与单个=.

    ACTION=="add|change", ENV{ID_SERIAL}=="05f3_0007", ENV{ID_INPUT}=""
    

    或者更可能为您:

    ACTION=="add|change", ATTRS{name}=="AT Translated Set 2 keyboard", ENV{ID_INPUT}=""
    

    通常情况下,udev 应该会自动注意到对文件的更改,但如果没有的话sudo udevadm control --reload。然后,您可以尝试触发设备的更改:

    $ sudo udevadm trigger --action=change /dev/input/event4
    

    我不确定这对于固定设备是如何工作的,就像通常对于 USB 设备一样,您只需将其拔下并重新插入,因此您可能需要重新启动。

    您可以监控 udev 正在做什么udevadm monitor。

    • 0

相关问题

  • 有哪些有用的键盘快捷键?[关闭]

  • 如何在 Compiz->Commands 中获得超过 12 个命令?[关闭]

  • 输入语言切换键只接受 shift-alt 而不是 alt-shift [关闭]

  • 如何在键盘上映射未映射的键?[关闭]

  • 如何重置我的键盘布局?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve