2010-11-25 56 views
4

我有一個快速的小C程序,檢查是否按住某個鍵。現在它像一個魅力,但通過/dev/input/by-path/platform-i8042-serio-0-event-kbd訪問鍵盤設備。我知道/dev/input/by-path/*-kbd將擁有keyborads,但我不知道如何打開具有該名稱的文件。訪問默認鍵盤設備

這個想法是我希望它是可移植的。所以如果程序在另一臺計算機上運行,​​它仍然有效。我不關心得到多個鍵盤(沒有人使用這樣的設置?)

在此先感謝。

回答

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 
+0

這是非常有趣的。我可以解析文件名。不幸的是,文件名在`/ device`中,我以前從來沒有聽說過,但我可以通過閱讀一些關於proc的知識來了解它。 – Youarefunny 2010-11-25 23:22:24