将字符绑定/映射到 alt+[某个键]?

将字符绑定/映射到 alt+[某个键]?

操作系统:Ubuntu

在编程和各种终端程序(Screen、Vim)中,[、]、{ 和 } 的使用频率很高。我使用的是挪威键盘,这些键盘的位置使得我必须将手指伸得更长一些,这样才舒服。为了方便操作,我想尝试将 alt+[某个键] 设为这些字符之一。有没有办法将 alt+æ(挪威字母)绑定到系统范围内的“{”?

顺便问一下,这种东西叫绑定、映射还是别的什么?我对这些术语有点困惑…… :)

答案1

不幸的是,使用 Alt+key 无法实现这一点。您会发现,在命令窗口中键入 Alt+key 实际上与按下 Esc 键然后按下 键相同。

然而我确实有一种解决方案给你,但它需要一些实际工作并且假设你正在运行 X。不过终端仿真器中的 screen/vim 仍然可以使用它。

我用的是西班牙语键盘并且[]{}符号位于我右手小指右侧的键上,但需要按下AltGr 键也一样。这意味着我的右手有点太紧了。我使用修改映射

如果你将一个名为 .Xmodmap 的文件添加到你的主目录那么它每次您登录 X 时都会被调用。或者您也可以随时使用 执行它xmmodmap ~/.Xmodmap

以下是如何设置的示例。右括号符号}位于ç我键盘上的一个键上,但我必须同时按下 AltGr 和该键才能获得右括号。要查看映射到此的键码,我使用xmodmap -pk

$ xmodmap -pk | grep brace
51 0x00e7 (ccedilla) 0x00c7 (Ccedilla) 0x00e7 (ccedilla) \
   0x00c7 (Ccedilla) 0x007d (braceright) 0xfe55 (dead_breve)
# split to prevent scroll, this is all on one line

这意味着键码 51 被映射到这些带有各种修饰符的键。以下是man xmodmap要说明的内容:

keycode NUMBER = KEYSYMNAME ...
 The list of keysyms is assigned to the indicated keycode (which may be
 specified in decimal, hex or octal and can be determined by running the xev
 program). Up to eight keysyms may be attached to a key, however the last
 four are not used in any major X server implementation. The first keysym is
 used when no modifier key is pressed in conjunction with this key, the
 second with Shift, the third when the Mode_switch key is used with this
 key and the fourth when both the Mode_switch and Shift keys are used.

因此我们有:

  • 无修饰语 = ccedilla ç
  • 移位 = Ccedilla Ç
  • Mode_switch = ccedilla
  • Mode_switch 和 shift = Ccedilla
  • AltGr = 右大括号 }

经过试验,似乎第五个条目实际上是按下 AltGr 和该键时出现的。文档就这么多了,是吧?我也不知道 Mode_switch 键是什么,它肯定不是 Alt、Shift 或 Ctrl。

我想将这个最没用的键改为}默认键。我的 .Xmodmap 中的条目如下:

keycode 51 = braceright Ccedilla ccedilla Ccedilla braceright dead_breve

我从不写 ccedillas(除了在这篇文章中,在这里我通过输入 Ç 然后在 use guwin中来写它Vim将其变为小写!)这样我就不会错过它们。其他键,例如带有 的键则]比较棘手。这个键*+]上有写字。我将加号移到另一个键上(删除了重复的倒置感叹号¡),默认情况下将其吐出 ] 并*使用 shift。AltGr 行为我保持不变。

我有其他编码员按键对应的其他按键代码的类似条目。有时我觉得我应该重新学习美国或英国的布局,只是为了黑客攻击。不过我会怀念电子邮件中的花哨按键。

相关内容