在 Linux 中模拟数字键盘

在 Linux 中模拟数字键盘

我的笔记本电脑没有数字键盘,甚至没有通过 FN 键激活数字键盘的笔记本电脑。

当我使用 Windows 时,我使用 AutoHotkey 和一个脚本,我用 789456123 替换了 QWEASDZXC 键,如果我想禁用它只需输入 F12。

有没有办法在 Linux 中做到这一点?

答案1

我可以想到几种使用 XKB 来实现这一点的方法,但这并不适合胆小的人。

  1. 做一个自定义符号选项将您的数字添加到您选择的键的“level3”或“level5”。(AltGrISO_Level3_Shift键,用于非美国或美国国际布局中的 áçćéñþëd 字符。)通常这些键的作用就像Shift——您必须在输入数字时按住它们。但是,CapsLock如果愿意,您的新选项可以使它们的作用更像。这样的选项将覆盖布局中这些字母的默认绑定以添加数字。

    // emulate numpad on first 3 columns of alphabetic keys
    // initial key definitions from /usr/share/X11/xkb/symbols/us
    // ("intl" stanza)
    partial 
    xkb_symbols "qweasdzxc" {
    
        // numbers on level3 (RightAlt chooses lv3)
        include "level3(ralt_switch)"
        key <AD01> { [ q, Q, 7, division ] };
        key <AD02> { [ w, W, 8, multiply ] };
        key <AD03> { [ e, E, 9,    minus ] };
        // etc ...
    
        // OR ...
    
        // numbers on level5 (RightCtrl chooses lv5)
        include "level5(rctrl_switch)"
        key <AD01> { [ q, Q, adiaeresis,  Adiaeresis,  7,  division ] };
        key <AD02> { [ w, W,      aring,       Aring,  8,  multiply ] };
        key <AD03> { [ e, E,     eacute,      Eacute,  9,     minus ] };
        // etc ...
    
    }; // end "qweasdzxc"
    
    
    // rules to load this as an option
    ! option         = symbols
      lv3:qweasdzxc  = +filename(qweasdzxc)
    
    
    // load from commandline. may need -I/path/to/custom/xkb
    setxkbmap -layout us -option lv3:qweasdzxc
    
  2. 制作一个空布局,只发出这些键上的数字,而不发出其他字母数字符号。当作为第二个布局加载时,您将拥有一个预定义的布局切换键,并使用该键在主布局和此布局之间切换。同样,布局切换键可以配置为Shift(仅在按住时切换布局)或CapsLock

    // emulate numpad on first 3 columns of alphabetic keys
    // leave other alphanumeric keys undefined
    // otherwise from /usr/share/X11/xkb/symbols/us (basic stanza)
    default partial alphanumeric_keys modifier_keys
    xkb_symbols "qweasdzxc" {
    
        name[Group1]= "Numpad Emulation";
    
        key <AD01> { [ 7, division ] }; // q
        key <AD02> { [ 8, multiply ] }; // w
        key <AD03> { [ 9,    minus ] }; // e
    
        key <AC01> { [ 4,        F ] }; // a
        key <AC02> { [ 5,        E ] }; // s
        key <AC03> { [ 6,        D ] }; // d
    
        key <AB01> { [ 1,        C ] }; // z
        key <AB02> { [ 2,        B ] }; // x
        key <AB03> { [ 3,        A ] }; // c
        // hexadecimal just for fun, replace if desired
    
    }; // end "qweasdzxc"
    
    
    // rules to load this as a layout
    ! layout         = symbols
      qweasdzxc      = qweasdzxc
    
    
    // load from commandline. may need -I/path/to/custom/xkb
    setxkbmap -layout us,qweasdzxc -option grp:caps_toggle
    

这两种方式都可以通过修改系统 XKB 文件/usr/share/X11/xkb/{symbols,rules}或将自定义设置存储在本地 XKB 配置文件。对系统文件的更改可能会因软件包更新而被消除,但使用系统布局设置工具(如或 GNOME 的设置守护进程)xkeyboard-config会更容易使用。/etc/default/keyboard

相关内容