第二个键盘来运行命令


16

在我的计算机上,我插入了两个USB键盘。不是两个键盘都键入相同的键,而是可以将第二个键盘设置为运行命令而不是键入字母吗?如果不可能,是否可以将其设置为至少键入另一种语言,例如俄语?


您是否要将特定命令绑定到第二个键盘的选定键,以便仅运行某些内容而不输入字母?
pbm 2012年

下一个问题:您是要使用快捷方式来运行后台应用程序(或X环境中的应用程序),还是要使用键盘快捷方式在活动终端中键入命令名称?
pbm 2012年

禁用向应用程序发送密钥的另一种方法。askubuntu.com/a/178741/554601
Ariunbayar

Answers:


15

当我可以推荐时,这是我的第三个答案actkbd... :)

因此,如果要将第二个键盘的所有键配置为运行不键入字母的命令,则可以使用actkbd... :)

安装后,actkbd我们需要找到用于从键盘接收事件的设备文件:

pbm@tauri ~ $ cat /proc/bus/input/devices 
[cut]
I: Bus=0003 Vendor=046d Product=c31c Version=0110
N: Name="Logitech USB Keyboard"
P: Phys=usb-0000:00:1a.0-1.1/input0
S: Sysfs=/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.1/1-1.1:1.0/input/input7
U: Uniq=
H: Handlers=sysrq kbd event5 
B: PROP=0
B: EV=120013
B: KEY=1000000000007 ff9f207ac14057ff febeffdfffefffff fffffffffffffffe
B: MSC=10
B: LED=1f

I: Bus=0003 Vendor=046d Product=c31c Version=0110
N: Name="Logitech USB Keyboard"
P: Phys=usb-0000:00:1a.0-1.1/input1
S: Sysfs=/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.1/1-1.1:1.1/input/input8
U: Uniq=
H: Handlers=kbd event6 
B: PROP=0
B: EV=1b
B: KEY=2010000 397ad801d001 1e000000000000 0
B: ABS=100000000
B: MSC=10
[cut]

在此列表中,您应该找到键盘,并检查其处理程序。使用sudo actkbd -s -d /dev/input/HANDLER_NAME检查,如果该处理程序发送事件。如果您运行此命令并按键盘上的键(检查要绑定到命令的键),则应获得以下内容:

pbm@tauri ~ $ sudo actkbd -s -d /dev/input/event5 
Keys: 57
Keys: 35

如果您有键码,我们可以创建actkbd配置文件:

pbm@tauri ~ $ sudo nano /etc/actkbd.conf 
30:::sudo -u pbm DISPLAY=:0 amarok
//30 is keycode for letter a

保存该文件时,我们应该测试配置是否有效:

pbm@tauri ~ $ sudo actkbd -d /dev/input/event5 -D

当您按下配置文件中的键时,将从配置文件的最后一列开始命令。

我认为有一种方法可以禁止向应用程序发送密钥,但是我找不到它-签出 README文件

actkbd您可以关闭X中的键盘,而不必尝试使用禁用它。

pbm@tauri ~ $ xinput list
[cut]
    ↳ Logitech USB Keyboard                     id=12   [slave  keyboard (3)]
    ↳ Logitech USB Keyboard                     id=11   [slave  keyboard (3)]
pbm@tauri ~ $ xinput set-prop 11 "Device Enabled" 0
pbm@tauri ~ $ xinput set-prop 12 "Device Enabled" 0

它应该做的工作... :)有关actkbd查看此答案的更多信息

使用actkbd(可能还有一些脚本),您还可以配置键盘以使用俄语字母将模式从命令模式更改为输入模式。对于此阅读Ulrich Schwarz's答案。


1
我已经在十亿个论坛上问了一百万遍,这个问题实际上是您中唯一的一个。谢谢万亿。
captainandcoke

0

我已经用C语言编写了一个小程序,可以做到这一点。我已经“即时”编写了它,所以它不是很好,但是可以用。你可以在这里得到。


您好,欢迎访问Unix和Linux Stack Exchange网站。请查看帮助中心,然后浏览以了解有关此网站的更多信息。虽然您的链接可以为用户的问题提供解决方案,但您能否在帖子中添加其他内容?目前,这只是从第三方站点下载软件的报价。您应该包括它的功能,如何安装和使用它,以及为什么它可以解决当前的问题。谢谢。
kemotep
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.