切换到美国布局后,wsconsctl -w encoding=us
我正在寻找一种根据自己的喜好修改键盘映射的方法。
我做了:
wsconsctl -w map+="keycode 1 = Cmd_Debugger Caps_Lock"
wsconsctl -w map+="keycode 58 = Escape"
交换大写锁定和转义键(我是 Vim 用户,所以这种交换是有意义的)。
我注意到wsconsctl map
set 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 中运行。