我正在Debian 20.0.4
运行XFCE4
。我想在我的键盘上设置左“Win”键(即,LWIN
)作为死键,可用于输出带尖音的元音,并可用于输出带波浪号的字母“n”。例如:
LWIN + a => á
LWIN + n => ñ
... etc. ...
根据互联网搜索和我与其他人的一些对话,我最终尝试了setxkbmap
和~/.XCompose
设置的组合,如下所示:
/usr/bin/setxkbmap -option compose:lwin
而在~/.XCompose
...
include "%L"
<Multi_key> <a> : "á"
<Multi_key> <A> : "Á"
<Multi_key> <e> : "é"
<Multi_key> <E> : "É"
<Multi_key> <i> : "í"
<Multi_key> <I> : "Í"
<Multi_key> <o> : "ó"
<Multi_key> <O> : "Ó"
<Multi_key> <u> : "ú"
<Multi_key> <U> : "Ú"
<Multi_key> <n> : "ñ"
<Multi_key> <N> : "Ñ"
但是,似乎正在发生的一切是我必须执行以下 3 次击键组合才能获得我想要的结果(例如)......
LWIN + ' + a => á
LWIN + ~ + n => ñ
... etc. ...
似乎~/.XCompose
设置被忽略并且仅xsetxkbmap
被尊重,或者可能有一些关于我正在做的事情根本不正确...... ???
我不想键入任何 3 次击键序列来获取这些特殊字符(实际上是 4 次击键,因为我还需要按下Shift
键才能输入波形符)。
我正在寻找一种两次击键的方法来输入这些特殊字符中的每一个。
另外,我不想将撇号 ( '
) 设置为死键,因为这样我需要指定两次击键组合才能输入正常的撇号,而我不想这样做。这就是为什么我希望我通常不使用的键(例如LWIN
)成为可用于 2 键组合的死键。
有什么办法可以做到这一点?
提前感谢您的任何想法和建议。
更新:我尝试了这个/usr/bin/xmodmap -e "keysym Super_L = Multi_key"
而不是setxkbmap
命令,它并没有更好的工作。
而且我也用CapsLock
key 代替尝试了同样的事情LWIN
,这些CapsLock
版本也不起作用。
进一步更新:对于不知道我所说的“死键”是什么意思的人,以下解释了该术语的含义:https ://en.wikipedia.org/wiki/Dead_key 。
我想到了!首先,有必要阅读并理解以下所有超级用户文章: 使用 setxkbmap 或 xmodmap 为某些键设置 Hyper 和 Super 修饰符
我希望能够输入西班牙语字符,因此我希望能够在“a”、“e”、“i”、“o”和“u”上加上重音,在“n”上加上波浪号", 允许 "u" 有一个变音符号(对于像这样的词
vergüenza
),并且能够使用颠倒的 "!" 和 ”?”。除了
Left-Win
,我还决定设置Right-Win
,CapsLock
和Menu
key 都用作Mode_switch
键(即,所有四个都应该像Shift
key 或Ctrl
key 一样工作;在输入另一个字符时按住它们,然后会被修改)。这就是我如何做到这一点...
事实证明,我不需要,也根本
setxkbmap
不需要~/.XCompose
。在我的
XFCE4
系统上,文件在启动~/.Xmodmap
时会自动读取和处理,因此该文章中提到的所有内容都需要在我的系统上完成。X
~/.xmodmap
~/.Xmodmap
按照那篇文章中的逻辑,我创建了一个默认值
~/.Xmodmap
,/usr/bin/xmodmap -pke >~/.Xmodmap
然后将该文件备份到~/.Xmodmap.backup
.然后我用来
/usr/bin/xev
获取我想要处理的所有字符的键码,并在~/.Xmodmap
...中更改了以下键定义(请注意,我决定使用
Mode_switch
+;
表示u-umlaut
小写和大写)。我将所有其他键定义
~/.Xmodmap
与它们的默认值一起保存。然后,运行后
/usr/bin/xmodmap ~/.Xmodmap
,我可以在输入指定字符之前按住上述任何一个Mode_switch
键,并且字符修改正常工作。并且在重启之后,这些关键的翻译机制都仍然有效。