You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

GNOME Wayland环境下配置小键盘:默认始终输入数字、AltGr组合触发箭头及运算符(不受NumLock状态影响)

GNOME Wayland环境下配置小键盘:默认始终输入数字、AltGr组合触发箭头及运算符(不受NumLock状态影响)

我明白你遇到的问题——两个XKB选项单独用都能满足部分需求,但一起启用就会冲突,导致NumLock又开始影响小键盘行为。既然你已经在用自定义布局,那直接修改XKB符号文件来整合两个功能是最靠谱的方案,毕竟Wayland下GNOME完全依赖XKB配置,下面是具体步骤:

一、备份现有自定义布局

先备份你的自定义布局文件(通常在/usr/share/X11/xkb/symbols/目录下,比如叫mycustom),避免修改出错无法恢复:

sudo cp /usr/share/X11/xkb/symbols/mycustom /usr/share/X11/xkb/symbols/mycustom.bak

二、修改自定义布局的小键盘映射

打开你的自定义布局文件,添加一个新的XKB符号段,定义小键盘的行为:

// 小键盘按键规则:基础/Shift层始终输出数字,AltGr层输出箭头/数学运算符
    key <KP_0>   { [          0,          0, U2192,          0 ] }; // 0, 0, →, 0
    key <KP_1>   { [          1,          1, U2199,          1 ] }; // 1, 1, ↙, 1
    key <KP_2>   { [          2,          2, U2193,          2 ] }; // 2, 2, ↓, 2
    key <KP_3>   { [          3,          3, U2198,          3 ] }; // 3, 3, ↘, 3
    key <KP_4>   { [          4,          4, U2190,          4 ] }; // 4, 4, ←, 4
    key <KP_5>   { [          5,          5, U25CB,          5 ] }; // 5, 5, ○, 5
    key <KP_6>   { [          6,          6, U2192,          6 ] }; // 6, 6, →, 6
    key <KP_7>   { [          7,          7, U2196,          7 ] }; // 7, 7, ↖, 7
    key <KP_8>   { [          8,          8, U2191,          8 ] }; // 8, 8, ↑, 8
    key <KP_9>   { [          9,          9, U2197,          9 ] }; // 9, 9, ↗, 9
    key <KP_Dec> { [      period,      period, U2219,      period ] }; // ., ., ·, .
    key <KP_Add> { [        plus,        plus, U2212,        plus ] }; // +, +, −, +
    key <KP_Sub> { [      minus,      minus, U00B1,      minus ] }; // -, -, ±, -
    key <KP_Mult>{ [   asterisk,   asterisk, U00D7,   asterisk ] }; // *, *, ×, *
    key <KP_Div> { [       slash,       slash, U00F7,       slash ] }; // /, /, ÷, /
    key <KP_Enter> { [ KP_Enter, KP_Enter, KP_Enter, KP_Enter ] }; // 保持回车功能不变
};

然后在你的主布局符号段里引用这个自定义小键盘规则,比如:

include "us(basic)" // 这里替换成你当前基于的布局,比如us、de等
    include "numpad_custom" // 引入自定义小键盘映射
    // 你的其他自定义布局设置...
};

三、添加Compat规则忽略NumLock

为了确保NumLock状态完全不影响小键盘,我们需要添加XKB兼容规则,让小键盘按键忽略NumLock修饰符。在布局文件中添加以下兼容段:

// 让所有小键盘按键忽略NumLock状态
    interpret KP_* {
        action = SetMods(modifiers=none);
    };
};

然后在主布局里关联这个兼容规则:

include "us(basic)"
    include "numpad_custom"
    compat = "numpad_compat" // 关联兼容规则
    // 你的其他自定义设置...
};

四、应用配置并生效

修改完成后,需要清除XKB缓存,避免GNOME读取旧配置:

sudo rm -rf /var/lib/xkb/*

然后注销当前用户再重新登录,或者重启GNOME会话,新的配置就会生效。

五、验证配置

登录后可以做以下测试:

  • 不管NumLock是开启还是关闭,按小键盘按键都应该输出对应数字
  • 按住AltGr再按小键盘按键,应该输出对应的箭头或数学运算符(比如AltGr+KP_2输出↓,AltGr+KP_Mult输出×)

如果需要调整某个按键的AltGr行为,直接修改numpad_custom段里对应的Unicode编码即可(比如把KP_5的AltGr层改成你想要的符号)。

备注:内容来源于stack exchange,提问作者matj1

火山引擎 最新活动