如何将西班牙语 eñe 字母映射到组合键?什么应用程序适合此目的 ( xmodmap
, xbindkeys
, ...)?
当我按Caps Lock+ 时n,它应该输入ñ
当我按Caps Lock+ 时N,它应该输入Ñ
我想在不切换键盘布局的情况下做到这一点;我只想使用英文键盘布局。
不完全是你想要的,但Caps Lock
你可以使用AltGr
:
AltGr+n 生产ñ
AltGr+N 生产Ñ
要获得它,xmodmap
您必须知道产生N
. 这可以通过以下方式完成:
xmodmap -pke | grep "n N n N"
Run Code Online (Sandbox Code Playgroud)
在这里你可能会得到这样的:keycode 57 = n N n N n N
。这意味着密钥代码57
代表n密钥。
然后,您重新映射此键码,以生成ñ
和Ñ
:
xmodmap -e "keycode 57 = n N n N ntilde Ntilde"
Run Code Online (Sandbox Code Playgroud)
(使用此命令,=
当您与 组合键入该键时产生之后的第五AltGr
个位置,当AltGr
和Shift
一起按下时产生第六个位置)。
如果这样可以,您可以让它在 login 后自动运行。
这个答案解释了如何使用 xmodmap 进行设置。将下面的配置片段放在 中~/.Xmodmap
,然后运行xmodmap <~/.Xmodmap
以应用它们。根据您的发行版和设置,~/.Xmodmap
可能会在您登录时自动加载,或者您可能需要xmodmap
显式调用from~/.xinitrc
或~/.xsession
,或者您可能需要配置您的桌面环境以应用~/.Xmodmap
。
X 有一个名为 的键符(即抽象键名)Mode_switch
。在除美国以外的大多数拉丁脚本语言的键盘映射中,此键符绑定到标记为 的键AltGr,该Alt键替换了右键。您可以选择映射Mode_switch
到不同的键,例如Caps Lock. 在 PC 键盘上,键码(硬件发送的)为Caps Lock66,因此将其绑定更改为Mode_switch
,并从中删除大写锁定修饰符:
keycode 66 = Mode_switch
clear Lock
Run Code Online (Sandbox Code Playgroud)
您还需要将修饰符与Mode_switch
. 有 5 个自定义修饰符,Mod1
通过Mod5
; 任何人都可以,但必须有一个。运行xmodmap -pm
以查看正在使用的修饰符,并选择 5 个未使用的修饰符之一,然后在您的.Xmodmap
.
add Mod3 = Mode_switch
Run Code Online (Sandbox Code Playgroud)
在 xmodmap 键规范中,键发送的字符 withMode_switch
在=
符号后的第三列中,在第四列中带有Mode_switch
+ Shift
。(前两列用于没有修饰符的键和Shift
。)您可以使用keysym
指令重新绑定现在发送的键,n
而不管其键码:
keysym n = n N ntilde Ntilde
Run Code Online (Sandbox Code Playgroud)
右侧的名称实际上是键符名称。您可以在 中找到这些列表
/usr/include/X11/keysymdef.h
,例如,该行#define XK_Ntilde 0x00d1
表示有一个Ntilde
对应于 Unicode 字符 U+00D1 的键符。有些字符没有键名;您可以改用 unicode 编号。
! U+2030 is PER MILLE SIGN, U+2031 is PER TEN THOUSAND SIGN
keysym 5 = 5 percent U2030 U2031
Run Code Online (Sandbox Code Playgroud)
请注意,如果您在 ~2009–2011 年份的系统上移动修饰符,您可能会遇到X_SetModifierMapping
错误。通常,但并非总是如此,使用clear Lock
可以解决该错误。