数字键模拟


14

我的新笔记本电脑(Dell Inspiron 5578没有数字键盘。许多没有专用数字键盘键的笔记本电脑都可以通过来访问数字键盘Fn,但不能通过此键盘访问。当我运行xev并尝试使用传统Fn组合时(例如,Fn+ J代表1),看不到任何事件。而且数字甚至不在标签上。

AFAIU,我无法使用该Fn键创建任何快捷方式,因为Fn它没有传递给操作系统。但我理论上可以使用Alt_L+ Super_L代替。问题是如何正确执行。我希望在比键盘布局更低的级别上执行此操作,以便与所有VM(甚至非Linux的VM)都能很好地协同工作。

环境:Qubes OS。主机部分基于Fedora。

我试过了:

  • 通过Xfce快捷键绑定xdotool命令。这会产生各种奇怪的结果:该命令(xdotool密钥KP_1及其变体)通常可以正常运行,但在由快捷方式调用时却无法正常运行。当通过快捷方式调用时,问题可能在于此时按下了修饰键。我尝试了各种修改(--clearmodifiers,修改器的keyup等),但它们都无法正常工作。
  • 使用自动键执行相同的操作。我冻结了一些自动键。

非解决方案:

  • 使用外部数字键盘/键盘:虽然我在外部键盘上有一个数字键盘(某种),但我希望在内部键盘上也有一个数字键盘,例如在旅行时,使用外部键盘是不可能的,或者至少是不舒服的。
  • 使用数字行:在捷克语布局中,数字行主要用于重音字母。我使用的布局(CShack的extracs变体)在“数字行”中根本没有数字。
  • 购买其他笔记本电脑:很难找到满足我各种要求的笔记本电脑。

1
阅读xkb,添加自定义Alt-L + Super-L级别。还要运行evtest以查找Fn事件,如果这也不起作用,请查看HID描述符和原始HID事件。请参阅dmesg以查找关联的隐藏设备。
dirkt

@dirkt使用XKB看起来就像定义自定义按键布局。哪有总比没有好,但这不是首选的解决方案,因为我必须对每个VM(或VM模板)执行相同的操作,并且这在非Linux VM下也行不通。我将尝试evtest,但是我不确定它是否可以与正在使用的键盘一起使用。
v6ak

您是否隶属于Alt_L + Super_L?您可以将AltGr或Shift + AltGr与xmodmap(1)
Fox

如果您的VM(哪个?)没有传递X事件,但是坚持直接键盘传递,则可以通过制作自己的/dev/input/eventX或HID源来伪造键盘。这将需要编程。但是,如果可以使用xdotool,则应使用xkbxmodmap。是的,将单个键分配给Mode_Switch或ISO_Level3_Shift(默认为AltGr)会更容易。
dirkt

1
AltGr或AltGr + Shift的问题在于它已被使用。我并不坚持使用Alt_L + Super_L,但它似乎是最佳选择:它们在内部键盘上彼此相邻,并且几乎没有机会隐藏一些键盘快捷键。并且可以用左手按下它们。因此,它看起来像是理想的组合,
v6ak

Answers:


0

我认为正确的方法是创建自己的键盘布局。确实,您将必须为每个VM和每个操作系统都这样做,但是只需要将其部署在模板VM上。

实际上,制作它们并不是那么困难,这取决于您的观点,甚至出奇的容易。对于Linux,您走在正确的道路上。对于Windows,只需使用autohotkey即可

(或者只是放弃当前的布局,然后尝试neo2。它已经针对德语进行了优化,但是总体而言,它的布局非常出色,并且您已经在Linux上获得了开箱即用的支持,并且在Windows上获得了很好的自动热键实现。我已经使用了多年。最大的缺点是布局太奇特,您常常不得不在程序中自定义快捷方式以使它们再次可用,例如vim中的hjkl完全搞砸了。)


我已经做了一个自定义布局,但是它仍然是不完善的。即使它具有Windows版本,也不完美。安装到templateVM上不是问题,但是其他机器比较棘手。首先,RDP不支持我的本地键盘布局。其次,这是各种短期Windows VM(例如IE VMS)的开销。
v6ak

@ v6ak寿命短的VM应该继承模板的设置,因此这不是问题。
富兰克林

对于基于模板的VM,这是正确的,但对于刚刚下载的VM,则不是。而且也不适用于不受您管理的远程VM。我对美国标准布局比较满意(当我不需要变音符号时,大多数情况下它与CShack兼容),但是使用数字行对我来说并不自然。
v6ak
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.