【问题标题】:Access the Default Keyboard Device访问默认键盘设备
【发布时间】:2011-05-15 22:28:38
【问题描述】:

我有一个快速的小 C 程序,可以检查是否按下了某个键。现在它就像一个魅力,但通过/dev/input/by-path/platform-i8042-serio-0-event-kbd访问键盘设备。我知道/dev/input/by-path/*-kbd 将保存键盘,但我不知道如何打开具有该名称的文件。

我希望它是可移植的。因此,如果该程序在另一台计算机上运行,​​它仍然可以工作。我不关心获得多个键盘(有人使用这样的设置吗?)

提前致谢。

【问题讨论】:

    标签: c linux file-io device


    【解决方案1】:

    也许您可以使用 /proc,即 /proc/bus/input/devices 信息来获取可用的键盘设备列表。这是从我的笔记本中获取的名称中带有“键盘”的设备列表(我已连接 USB 键盘,因此您的第二个问题的答案是“是”):

    I: Bus=0011 Vendor=0001 Product=0001 Version=ab54
    N: Name="AT Translated Set 2 keyboard"
    P: Phys=isa0060/serio0/input0
    S: Sysfs=/devices/platform/i8042/serio0/input/input0
    U: Uniq=
    H: Handlers=sysrq kbd event0 
    B: EV=120013
    B: KEY=4 2000000 3803078 f800d001 feffffdf ffefffff ffffffff fffffffe
    B: MSC=10
    B: LED=7
    
    I: Bus=0003 Vendor=04d9 Product=1603 Version=0110
    N: Name="  USB Keyboard"
    P: Phys=usb-0000:00:1d.0-2/input0
    S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb5/5-2/5-2:1.0/input/input5
    U: Uniq=
    H: Handlers=sysrq kbd event5 
    B: EV=120013
    B: KEY=10000 7 ff800000 7ff febeffdf f3cfffff ffffffff fffffffe
    B: MSC=10
    B: LED=7
    
    I: Bus=0003 Vendor=04d9 Product=1603 Version=0110
    N: Name="  USB Keyboard"
    P: Phys=usb-0000:00:1d.0-2/input1
    S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb5/5-2/5-2:1.1/input/input6
    U: Uniq=
    H: Handlers=kbd event6 
    B: EV=13
    B: KEY=2000000 39fa d941d001 1e0000 0 0 0
    B: MSC=10
    
    I: Bus=0003 Vendor=0000 Product=0000 Version=0004
    N: Name="ACPI Virtual Keyboard Device"
    P: Phys=
    S: Sysfs=/devices/virtual/input/input14
    U: Uniq=
    H: Handlers=sysrq kbd event14 rfkill 
    B: EV=3
    B: KEY=ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe
    

    【讨论】:

    • 这很有趣。我可以解析文件名。不幸的是,文件名在/device,我以前从未听说过这个,但我可以通过阅读一些关于 proc 的信息来找到。
    • 该路径相对于sysfs 根,即/sys/
    • 谢谢我在检查我的默认键盘时使用了这个,这应该是 awnser
    猜你喜欢
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 2016-02-03
    • 2018-06-15
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多