如何在 NetBSD 上有效地获得 US AltGr-Intl 布局?

如何在 NetBSD 上有效地获得 US AltGr-Intl 布局?

切换到美国布局后,wsconsctl -w encoding=us我正在寻找一种根据自己的喜好修改键盘映射的方法。

我做了:

wsconsctl -w map+="keycode 1 = Cmd_Debugger Caps_Lock"
wsconsctl -w map+="keycode 58 = Escape"

交换大写锁定和转义键(我是 Vim 用户,所以这种交换是有意义的)。

我注意到wsconsctl mapset keycode 184 = Mode_switch Multi_key,据我了解,这是您AltGr在德语键盘上使用的功能。

我尝试将 keycode 184 设置为Mode_switch(通常设置为Alt_R,这对我没有任何作用),但我并没有完全理解它的功能AltGr

由于 NetBSD 似乎没有附带 US AltGr-Intl 变体,我想至少定义一些我自己需要的键(例如,德语元音变音),并以这种方式“反向移植”AltGr-Intl 变体。

所以我尝试的第一件事是wsconsctl -w map+="keycode 16 = q Q adiaeresis Adiaeresis"

AltGr当我这样做时,当输入+ : 时,我在控制台上收到奇怪的错误代码q<00ef>看起来像 utf-8 代码或与我类似的代码。无论如何,它不会产生“ä”,正如我所期望的那样。另外,当检查键映射中的内容时,在更改后,会发生以下情况:

# wsconsctl map | grep -i "code 16"
keycode 16 = q Q adiaeresis gr_D

gr_D“?那个是从哪里来的?由于某种原因,尽管它在第 192 行,但wsconsctl似乎不喜欢:Adiaeresis/usr/include/dev/wscons/wsksymdef.h

#define    KS_Adiaeresis    0xc4

我注意到并不是每个角色都会发生这种情况。我尝试了映射wsconsctl -w map+="keycode 16 = q Q at at",效果很好。之后,我可以通过点击AltGr+来输入“@” q

另外,当我在登录提示符下时,我可以通过按住 来输入特殊字符,作为用户名AltGr输入äåéóöëíúáßðfø¶œï是没有问题的,但是一旦我登录,它似乎会加载美国编码,而我只有一个普通的美国布局从那时起。

基本上,这个想法是能够通过按住AltGr或右 Alt 键来输入特殊(拉丁)字符。

操作系统是 NetBSD 7.0/amd64,在 amd64 主机 (Linux) 上的 VM 中运行。

相关内容