存在一个可以setxbmap
理解的可能模型的“列表”(无论以何种存储形式,即使分布在多个文件中)。如果参数setxbmap -model
不在该列表中,则命令setxbmap
将无法理解它。
我的猜测(或期望)是,man
页面xkeyboard-config
应该从与setxbmap
(至少在使用默认配置时;如果man
不了解用户添加的配置文件,我会理解)。似乎不是这样。命令man -P cat xkeyboard-config
没有列出abnt
,也没有列出这里,例如但setxkbmap -model abnt ...
有效。从这个意义上讲,man xkeyboard-config
会产生误导。
如何解释这种“不匹配”?
修改后又出现了一个问题。如果我执行setxkbmap -model khassss ...
(随机发明的模型),setxkbmap
不会出现任何问题,甚至setxkbmap -query
会打印... model: khassss ...
。
setxkbmap
在这种情况下,模型实际上需要什么来定义其行为?
笔记:
man -P cat xkeyboard-config
甚至没有提供abnt
或abnt2
作为布局或变体,但我猜这与问题无关。我不确定我所用的版本是否在提到的不匹配中起到了任何作用(我认为它没有作用)
$ apt-cache policy xkb-data xkb-data: Installed: 2.29-2 Candidate: 2.29-2 Version table: *** 2.29-2 500 500 http://ar.archive.ubuntu.com/ubuntu focal/main amd64 Packages 500 http://ar.archive.ubuntu.com/ubuntu focal/main i386 Packages 100 /var/lib/dpkg/status
答案1
默认葡萄牙语(巴西)键盘布局是设计时考虑到了巴西 ABNT2 键盘。我认为,鉴于该布局的存在,可能没有必要指定 abnt 作为模型。
答案2
不匹配的解释
man -P cat xkeyboard-config
没有列出abnt
,但是setxkbmap -model abnt ...
作品
可能如下:
- 模型
abnt
不存在(这就是它没有在命令 1 中列出的原因),并且 setxkbmap -model <any_model> ...
使用不存在时不会引发错误any_model
。
观察 1 得到了支持(这不会在用户目录中找到相关文件,但我没有)
$ find /usr/share/X11/xkb/ -type f -exec grep -nH --color abnt {} \;
/usr/share/X11/xkb/geometry/pc:831:xkb_geometry "abnt2" {
/usr/share/X11/xkb/geometry/pc:886:}; // End of "abnt2" geometry
/usr/share/X11/xkb/symbols/sun_vndr/br:84: xkb_symbols "abnt2" {
/usr/share/X11/xkb/symbols/sun_vndr/br:85: include "br(abnt2)"
/usr/share/X11/xkb/symbols/br:2:xkb_symbols "abnt2" {
/usr/share/X11/xkb/symbols/br:49: include "br(abnt2)"
/usr/share/X11/xkb/symbols/br:66: include "br(abnt2)"
并且观察2在OP中有详细说明。
或许是 Gunnar Hjalmarsson提及对此,但我不太清楚。