Linux 中复杂的键盘重新映射

Linux 中复杂的键盘重新映射

这是有关在现代 Linux 发行版中重新映射键的另一个问题。

背景:

过去六年来,我一直是 Mac 用户,而 Linux 用户则有大约 20 年。这导致了两个问题:

  • 在 Mac 上使用瑞典键盘编码非常糟糕,因此我不得不使用美国布局进行编码
  • 在 Linux 和 Mac 上不断切换键盘布局

在 Mac 上,我对美国布局做了一些更改,以便能够使用瑞典语字符 (å、ä、ö)。要在瑞典语键盘上使用这些字符,通常需要在键盘右侧使用三个键。我已使用 Ukelele 重新映射这些键,以便它们通常可以像在美国布局上一样工作,但按下“alt”(或“alt+shift”)后,我就可以得到瑞典语字符。经过一段时间的适应,它工作得很好。

其次,Linux 用户经常会重新映射 ctrl-win-alt 键,使 win 键充当第二个 ctrl 键。这样,大多数快捷键在 Mac 和 Linux 上的工作方式相同。GNOME(或 GNOME Tweaks)中有一个设置:“Ctrl 映射到 Win 和常用的 Ctrl 键”。

但顺序仍然与 Mac 键盘不同:Mac 键盘为“control option command”,而 PC 键盘为“ctrl win alt”。GNOME Tweaks 中还有另一个选项:“Alt 与 Win 交换”。不幸的是,GNOME Tweaks 仅允许其中一个选项。

以下是我想要的完整重新映射(基于美国布局):

  • Alt + "[" => å
  • Alt + Shift + “['"=> Å
  • Alt + "'" => ä
  • Alt + Shift + "'" => Ä
  • Alt + “;” => ö
  • Alt + Shift + “;” => Ö
  • 左 Ctrl => 左 Ctrl
  • 左 Win => 左 Alt
  • 左 Alt => 左 Ctrl

不幸的是,实现这一点似乎有很多选择,而且所有这些都很难正确完成,所以我很感激任何帮助!

(在 Mac 上,我可以使用 Ukelele 来实现这一点,这是一个图形工具,可以构建键盘布局,然后安装该布局,这样我就可以轻松地切换到它,就像在美国或瑞典布局之间切换一样。非常好。)

更新:

我已经解决了 Ctrl/Alt/Win 部分。我创建了一个新文件(在我的例子中名为“jomag”)并将其放在“/usr/share/X11/xkb/symbols/”中:

partial modifier_keys              
xkb_symbols "jomag" {     
        key <LALT> { [ Control_L, Control_L ] };     
        key <LWIN> { [ Alt_L, Alt_L ] };             
        modifier_map Control { <LALT>, <LWIN> };     
};                        

我还在 /usr/share/X11/xkb/rules/evdev 中添加了一行:

! option     =    symbols
jomag:jomag  =    +jomag(jomag)    <--- this one

但我不确定这是否有必要。

我发现加载它的最佳方式是使用 setxkbmap:

setxkbmap -option jomag:jomag

要重新加载,请使用空选项运行:

setxkbmap -option
setxkbmap -option jomag:jomag

相关内容