我如何重新映射键盘以获得更好的开发人员体验

首先,此文章仅适用于Linux用户。 抱歉,其他人。 我不知道Mac或Windows🙁是否也有类似的东西。

问题

我是德语,并且有德语键盘。 看起来像这样:

德语键盘布局。 来源:A.Illigen [CC BY-SA 4.0(https://creativecommons.org/licenses/by-sa/4.0)]来自https://commons.wikimedia.org/wiki/File:Tastatur_DE_hellgrau.svg

如您所见,圆括号位于SHIFT + 8/9上,而花括号位于ALT Gr + 7/0(ALT Gr是德国的特殊键)上,对于方括号,您需要按ALT Gr + 8/9。

这种设计的原因是IBM希望削减成本并只生产一种类型的键盘,并在不同的国家/地区重新贴上标签。 因为编写文本的优先级高于编程,所以花括号很难找到。

我心中的解决方案

幸运的是,德语键盘也有我们著名的Umlaute(ö,ü,ä)的键。 编码时并不需要这些(希望您不用德语German写注释)。 因此,我认为将它们重新映射到花括号是一个好主意。

我不想使用英文键盘映射,因为我想保持尽可能多的肌肉记忆,而且我不希望您需要按SHIFT键才能获得圆括号和大括号。

我的新编码键盘设计

这就是我想重新映射键盘进行编码的方式。 快速概述和简短列表的图像,使其更易于访问。

重新映射的键盘进行编码。 改编自A.Illigen [CC BY-SA 4.0(https://creativecommons.org/licenses/by-sa/4.0)](来源:https://commons.wikimedia.org/wiki/File:Tastatur_DE_hellgrau.svg )
  • SHIFT + 8应该指向| (德语键盘:Alt Gr + <)
  • SHIFT + 9应该指向\ (德语键盘:Alt Gr +ß)
  • ü应该指向{ (德语键盘:Alt Gr + 7)
  • SHIFT +ü应指向} (德语键盘:Alt Gr + 0)
  • ö应指向( (德语键盘:SHIFT + 8)
  • SHIFT +ö应指向) (德语键盘:SHIFT + 9)
  • ä应该指向[ (德语键盘:Alt Gr + 8)
  • SHIFT +ä应该指向] (德语键盘:Alt Gr + 9)
  • 我想切换#'因为我编写了大量JavaScript,并且比#标签更需要单行引号
  • 另一个令人讨厌的事情是,德国的小数点分隔符是逗号,而英语是句号。 因此,我替换了数字键盘上的逗号

与德语或英语键盘不同,我将开括号和闭括号放在同一键上。 这是因为大多数现代IDE都会自动关闭括号。 您不需要经常写结束语。 另外,它使心理模型变得更加容易。 SHIFT +大括号键始终等于右大括号。

查找键码

首先,我需要找到要重新映射的键的键代码。 xev是正确的工具。 安装后,只需使用xev启动它, xev打开一个小窗口:

xev事件测试仪

将窗口聚焦,然后按一下要替换的键。 控制台中印有很多信息。 我们正在搜索字符串keycode [YOUR KEYCODE] 。 写下那个数字。 以我为例:

  • ü的keycode 34
  • ö的keycode 47
  • ä的keycode 48

重新映射键

在重新映射键之前,我们需要了解键符号。 这些是我们要打印的字母的代码字。 例如{的keyym是braceleft 。 您可以在此处找到完整列表。

要重新映射键,请使用xmodmap -e 。 例如。 要将我的ä键与SHIFT结合重新映射到(按普通键和) ,我运行以下行:

  xmodmap -e“键码47 = parenleft parenright” 

现在,密钥已映射到新配置,直到我注销计算机。 以下是一般使用命令的方法:

  xmodmap -e“键码[您的键码] = [键] [SHIFT +键] [ALT +键] [ALT + SHIFT +键] [ALT GR +键] [ALT GR + SHIFT +键]” 

将其放入脚本

这是我的两个脚本,可在编码键盘和普通键盘之间切换。

编码键盘:

  #数字第一行 
xmodmap -e“键码17 = 8 bar”
xmodmap -e“键码18 = 9反斜杠”
  #特殊键 
xmodmap -e“键码51 =撇号数字符号”
xmodmap -e“键码91 mod2 = KP_Delete期间”
  #乌姆劳 
xmodmap -e“键码34 = braceleft braceright”
xmodmap -e“键码47 = parenleft parenright”
xmodmap -e“键码48 =括号左括号右”

普通键盘:

  #数字第一行 
xmodmap -e“键码17 = 8 parenleft NoSymbol NoSymbol方括号left”
xmodmap -e“键码18 = 9 parenright NoSymbol NoSymbol方括号”
  #特殊键 
xmodmap -e“键码51 =数字符号撇号”
xmodmap -e“键码91 mod2 = KP_Delete逗号”
  #乌姆劳 
xmodmap -e“键码34 =尿毒症尿毒症”
xmodmap -e“键码47 =绝热性透尿病”
xmodmap -e“键码48 =绝热Adiaeresis”

我将这些文件放入路径中的~/bin文件夹中,并向.bashrc文件中添加了两个别名:

  #将bin文件夹添加到路径 
导出PATH =“〜/ bin:$ PATH”
 别名ck ='coding-keyboard' 
别名nk ='normal-keyboard'

现在,我只需在控制台中输入nkck然后切换键盘即可。

一点UI

我发现使用控制台切换键盘非常烦人。 尤其是当我处于编码模式并开始用德语写邮件时。 我开始打字,打我的第一个Umlaut,意识到有一个花括号,改为切换到另一个桌面上的控制台,输入nk ,切换回邮件桌面,移走花括号并继续书写。

所以我需要一个简单的UI。 我正在使用Pop!_OS作为GNOME附带的发行版,并且我读到可以用JavaScript编写扩展名(网络开发❤️开始启动)。 但是我没有找到很好的教程,文档似乎很难学习。 特别是因为您不能使用Node.js,并且必须调用很多包装的系统API。

但是我遇到了Argos(github,gnome商店),这是Philipp Emanuel Weidmann的一个很棒的项目。 您编写了简单的bash脚本(或其他语言的脚本),并将其写入标准输出。 Argos使用此输出并从中创建GNOME扩展。 有关更多详细信息,请检查github页面。

我创建了这个脚本,使用两个键盘模式创建了一个下拉菜单。 它检查键盘当前处于哪种模式,并用✔标记。 这是一张图片,看起来像:

键盘切换器GNOME扩展

这是~/.config/argos/keyboard-switcher.sh

Aaand…我们完成了😊。

那怪癖呢?

每次谈论此内容时,我都会收到以下两条评论: 您的肌肉记忆力如何?天哪! 😱 我不会这样做。 您将无法再使用其他人的计算机。

肌肉记忆:嗯,要开始使用新的按键映射需要花费一些时间。 它可以通过将旧的组合键替换为其他组合来提供帮助。 然后,您很容易注意到它。 实际上,我仅用了几个小时就使用了新的键盘映射,当我不小心处于正常模式时,我开始错过它。 因此,您很快就会感到舒适。

还有其他人的电脑东西吗? 好吧,您多久使用一次别人的电脑? 一年1-2次? 而且这不像您将无法再找到密钥😁。

希望本文对您有所帮助,如果您对如何重新映射键盘以及为何使用此布局发表评论,那将是很棒的。