如何使用Wayland自定义键盘映射


20

我在带有UK / GB键盘的Macbook上使用Linux,并自定义了键盘映射,以解决Apple奇怪的键盘布局引起的一些问题。我xmodmap经常这样做。我想尝试Wayland,但xmodmap不行。在Wayland中如何获得类似的结果?.Xmodmap我使用的文件包含以下内容:

keycode  12 = 3 numbersign 3 sterling sterling sterling threesuperior sterling
clear Control
clear Mod4
add Control = Control_L Super_R
add Mod4 = Super_L
keysym Caps_Lock = NoSymbol Caps_Lock

第1行:在英国键盘上Shift- 3是£,因此#通常在附近有自己的键Return。但是在Mac上,#是通过Altgr- 获得的3。作为程序员,我使用的#远远超过£,所以这行将它们交换了过来。选择美国布局也可以实现这一点,但是在Linux中这样做还可以交换其他一些常用的键,而在OS X中,这些其他键不受美国/英国的影响。

第2-5行:将右键Cmd用作Right- Ctrl,因为此键盘没有物理右键Ctrl

第6行:CapsLock仅当按时才起作用Shift。不是Mac专用的,这应该是所有OS和键盘的标准选项。


我在那儿走了:Wayland显然使用xkb,并且无论如何X中都不推荐使用xmodmap。不幸的是xkb复杂得多,GNOME从来没有考虑过用户可能需要对其进行自定义,因此我提出了第二个问题
realh

Answers:


11

不幸的/usr/share/X11/xkb是,唯一的方法是修改系统XKB数据库。从另一个问题来看,您似乎已经开始工作了。

该限制主要是由于Wayland的不成熟以及XKB中的设计监督。

  • 工具提供了类似的选项,setxkbmapxkbcomp提供了一个-I选项来添加用户定义的数据库以进行搜索(例如~/.xkb~/.config/xkb,其中文件和子目录的布局类似于系统数据库)。这些工具与X服务器交互,因此它们Xwayland对于在Wayland下运行X应用程序配置兼容性层可能很有用。但是他们目前不讲Wayland协议。

  • Wayland协议仍在日趋完善。目前看来,input-methodtext-input协议最相关,而且都不稳定。都没有提及改变已定义的键盘映射。这些细节留给合成器。

  • GNOME和KDE都提供了键盘处理设置守护程序,该守护程序应处理系统XKB选项,包括即时更改。据我所知,这两种方法都无法说明用户自定义。据我所知,Weston和其他合成器依靠配置文件或环境变量来在启动时设置XKB选项,除了退出和重新启动外,没有其他方法可以更改它们。

  • 即使在XKB本身中,也不完全支持此功能。您的自定义符号文件可以是include其他系统符号文件。但是目前include,XKB规则文件没有任何功能,因此,即使您有一个可以与Wayland合成器对话并可以查询您的自定义设置的工具,您也必须手动包括要使用的所有规则(例如,复制rules/evdev*从系统XKB中进行修改)。对此主题libxkbcommon一个未解决的问题以及一个相关的错误


1
我应该更清楚地说明我现在已经解决了很多。我在另一个问题中是这样说的,但是信息有点混乱。当我打算在自己的网站上添加博客时,我打算对此做更清晰的记录,然后我必须记住要在此处链接到该博客。
realh

当然,但这仍然是一个悬而未决的问题,因此我尝试解决Wayland的等效.Xmodmap方面。
quixotic

3
我现在已经在博客文章中对此进行了详细记录。
realh

5

我一直在成功地使用Linux 拦截工具,并且知道人们也为他们的自定义映射生产其他插件caps2esc是我每天使用的第一个概念验证插件,并且可以在X和Wayland上使用。该工具比通常的贴图软件要低一些,但相当灵活,我对下一个插件的计划是通用和弦贴图工具。

免责声明:我是作者。


拦截工具看起来真的很有趣!感谢您的工作!
balu 18-10-7

1
不知道我如何通过python脚本运行所有键盘输入的感觉
Ace.C

4

对于2018年(Ubuntu 17.10)来这里的人来说,最关键的部分可以使用GNOME Tweak工具来完成。

Gnome调整工具>键盘和鼠标>其他布局选项> Ctrl映射到Win键(和通常的Ctrl键)。


2
是否使用“ Gnome调整工具”(无论是哪种方式)也为其他Windows管理器/环境/图形外壳设置了新的映射?
马里·里莫克

Gnome调整工具无法重新映射Caps Lock。
andyn

@andyn我gnome-tweaks-3.34.0-1.fc31.noarch可以重新映射Caps Lock- 例如“ Caps Lock也是Ctrl”,“ Caps Lock附加Esc”,“ Caps Lock as Ctrl”等等。
maxschlepzig

2

这个答案与quickotic的答案具有相同的想法,只是带有更详细的示例:

Gnome Tweaks列出了您可以通过xkb进行的20或30个键盘调整的列表。有时您会发现默认情况下正在寻找的调整项。就我而言,我想用菜单交换打印屏幕键。

修改通过xkb可用的printscr密钥的唯一选项是将其替换为Win_R。Gunnar Hjalmarsson 在此线程上建议我修改xkb的修改,以便使printscr / win_r代替printscr / menu。我们一起制定了一个解决方案,我将在这里重新传输它:

在终端中,输入:

sudo su
nano /usr/share/X11/xkb/symbols/altwin

在文件的底部,您将找到:

// Win is mapped to the PrtSc key (and the usual Win key).
partial modifier_keys
xkb_symbols "prtsc_rwin" {
    replace key <PRSC> { [ Super_R, Super_R ] };
    modifier_map Mod4 { <PRSC>, <RWIN> };
};

删除此部分,并用以下内容替换:

// Menu is mapped to the PrtSc key (and the usual Win key).
xkb_symbols "prtsc_rwin" {
     replace key <PRSC> { [ Menu, Menu ] };
     modifier_map Mod4 { <PRSC>, <MENU> };
};

要在nano中删除,请使用Backspace键(突出显示和删除不起作用)。要粘贴,请使用shift-ctrl-v。要退出并保存,请按ctrl-x,选择“是”以覆盖并按Enter。

重启。在Gnome / Ubuntu中,转到gnome-tweak-tools。在调整工具中,转到“键盘和鼠标”部分,按“其他布局选项”按钮,然后展开Alt / Win键行为。选择最底部的选项:Win映射到printscr(请记住,我们只是修改了此行为,以交换print和Menu而不是print和Win。)(我确定有一种方法可以在KDE中打开modded xkb选项,但是我不使用它,所以我无法为您提供确切的过程)。

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.