在许多旧笔记本电脑和一些紧凑型键盘上有一个 integrated numeric keypad在主键盘区。这个备用键盘是通过左侧 Ctrl 键旁边的特殊“Fn”键激活的。
作为一名程序员,我学会了使用光标移动键(箭头、PgUp、PgDn 等)并发现它大大提高了我的编程速度。而且这些好处并不像使用专用快捷键那样仅限于单个应用程序。
在传统 PC 键盘上,“Windows 键”可用于模拟“Fn”键和相应的集成数字小键盘。当我以前使用 MS Windows 时,我发现 Autohotkey能够使用 a simple script 映射键.
最近我了解了 xkb 以及它如何用于 map keystrokes at a very low level .
什么是 xkb 键盘映射配置文件,它将使用 windows 键作为 fn 键来模拟集成数字小键盘?
提示(?):我怀疑该文件看起来很像 Debian 衍生 linux 发行版上的“/usr/share/X11/xkb/symbols/keypad”文件。这个“键盘”文件包含在“/usr/share/X11/xkb/symbols/pc”文件的顶部。
corresponding autohotkey script供引用(# == WinKey):
#8::Up
#k::Down
#u::Left
#o::Right
#7::Home
#j::End
#9::PgUp
#l::PgDn
#m::Insert
#.::Delete
;(Scroll with the left-over keys)
#i::WheelUp
#,::WheelDown
请注意,所有这些键都需要与 Ctrl、Alt、Shift 的任意组合 以及 Windows 键配合使用。
最佳答案
在 Linux/XKB 的主键盘上安装类似数字小键盘的光标键的步骤...
- xkbcomp $DISPLAY original.xkb(以防万一;)
- xkbcomp $DISPLAY custom.xkb
- 编辑 custom.xkb
在部分末尾添加以下内容:xkb_types "..."{
type "WinKeyAsFnKey" { modifiers = Shift+Super; map[Shift] = level2; map[Super] = level3; map[Super+Shift] = level3; level_name[Level1] = "Base"; level_name[Level2] = "Caps"; level_name[Level3] = "Fn"; };
在 xkb_symbols "..."部分末尾添加以下内容 {
key <AE07> {type="WinKeyAsFnKey",symbols[Group1]=[7,ampersand,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<HOME>,clearmods=Super)]}; key <AE08> {type="WinKeyAsFnKey",symbols[Group1]=[8,asterisk,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<UP>,clearmods=Super)]}; key <AE09> {type="WinKeyAsFnKey",symbols[Group1]=[9,parenleft,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<PGUP>,clearmods=Super)]}; key <AD07> {type="WinKeyAsFnKey",symbols[Group1]=[u,U,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<LEFT>,clearmods=Super)]}; key <AD09> {type="WinKeyAsFnKey",symbols[Group1]=[o,O,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<RGHT>,clearmods=Super)]}; key <AC07> {type="WinKeyAsFnKey",symbols[Group1]=[j,J,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<END>,clearmods=Super)]}; key <AC08> {type="WinKeyAsFnKey",symbols[Group1]=[k,K,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<DOWN>,clearmods=Super)]}; key <AC09> {type="WinKeyAsFnKey",symbols[Group1]=[l,L,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<PGDN>,clearmods=Super)]}; key <AB07> {type="WinKeyAsFnKey",symbols[Group1]=[m,M,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<INS>,clearmods=Super)]}; key <AB09> {type="WinKeyAsFnKey",symbols[Group1]=[period,greater,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<DELE>,clearmods=Super)]};
保存自定义.xkb
- xkbcomp custom.xkb $DISPLAY
我仍在使用“i”和“,”处理鼠标滚动。
编辑: 上述解决方案不能与 Google Chrome 和基于 Chrome 的应用程序(如 Slack)配合使用。
另一种方法是使用可编程键盘。我使用 after-market PCB for a CoolerMaster Masterkeys S keyboard . Easy AVR布局是 available online (虽然目前左侧的 win 键现在不能单独使用...我使用右侧的)。
关于linux - 如何在 Linux 中模拟集成数字键盘光标键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32822857/