有人从主页给我发过来,原帖
我有一个 Royal Kludge RK61 (60%) 键盘,它根据Fn+ Enter/ Ctrl/的几种不同组合具有不同的模式Windows。不幸的是,没有任何实际指示表明键盘选择了哪种模式。我希望bash
通过在按键时实现通知来改变我极其有限的知识。
我检查了xev
它无法识别 61's Fn,但我的笔记本电脑Fn确实注册了。我最终使用了Fn笔记本电脑键盘上的按键符号代码并将其合并到下面。
我发现一些代码似乎可以实现我想要的功能,但我认为我对所需数据的合并是有缺陷的,或者是错误的,即使我非常新手。
#!/bin/bash
while true; do
read $key input
if [ "$input" = "keysym 0x1008ff2b" + "keysym 0xff0d" ]; then
notify-send -u normal -i $HOME/Downloads/keyboard_icon.jpeg "Keyboard is now in Function mode:" " Arrow Keys on"
fi
done
如果这是正确的,我如何确保在不需要打开控制台的情况下执行它?另外,60%的人Fn没有注册xev
,我该怎么办?
答案1
关键Fn是不标准。许多笔记本电脑在处理它嵌入式控制器,而且每个供应商的做法都不同。如果某些东西是可编程的,那么它就隐藏在供应商特定的协议后面,而供应商懒得发布该协议。
Fn因此,您最好的希望就是看看具体的计算机,这通常意味着找出按下和释放按键(的序列)后会转换成什么,然后以某种方式对其采取行动(可能的错误来源是使用其他按键产生的类似序列也会导致该动作)。
特别是,这
我检查了 xev,它无法识别 61 的 Fn,但我的笔记本电脑的 Fn 确实注册了。我最终使用了笔记本电脑键盘上的 Fn 键键符号代码,并将其合并到下面。
行不通的。
在某些情况下,查看内核输入层也有帮助,evtest
在正确的文件上运行/dev/input/eventX
(使用适当的符号链接)并查看它是否适合您的情况。读取该文件也不需要打开控制台。
一旦你弄清楚了这一点,你就可以考虑使用哪些工具来执行你的操作,具体取决于这个操作应该是什么,以及你是否可以在 X 层上执行它。