如何将西班牙语 eñe 字母映射到组合键?什么应用程序适合此目的(xmodmap
、xbindkeys
、 ...)?
当我按Caps Lock+时n,它应该输入ñ
当我按Caps Lock+时N,它应该输入Ñ
我想在不切换键盘布局的情况下执行此操作;我只想使用英文键盘布局。
答案1
不完全是你想要的,但Caps Lock
你可以使用AltGr
:
AltGr+n 生产ñ
AltGr+N 生产Ñ
要获得此xmodmap
功能,您必须知道生成N
.这可以通过以下方式完成:
xmodmap -pke | grep "n N n N"
在那里你可能会得到类似的东西:keycode 57 = n N n N n N
。这意味着键码57
代表n密钥。
然后,您重新映射此键码,以生成ñ
and Ñ
:
xmodmap -e "keycode 57 = n N n N ntilde Ntilde"
=
(使用此命令,当您与 组合键入该键时,会产生后的第五个位置,而当和一起按下时,会产生AltGr
第六个位置)。AltGr
Shift
如果这可行的话你可以让它在登录后自动运行。
答案2
这个答案解释了如何使用 xmodmap 进行设置。将下面的配置片段放入 中~/.Xmodmap
,然后运行xmodmap <~/.Xmodmap
以应用它们。根据您的发行版和设置,~/.Xmodmap
可能会在您登录时自动加载,或者您可能需要xmodmap
从~/.xinitrc
或显式调用~/.xsession
,或者您可能需要配置桌面环境以应用~/.Xmodmap
。
X 有一个名为 的键符号(即抽象键名称)Mode_switch
。在美国以外的拉丁文字语言的大多数键盘映射中,此键符号绑定到标记为 的键AltGr,该键替换了正确的Alt键。您可以选择映射Mode_switch
到不同的键,例如Caps Lock。在 PC 键盘上,键码(硬件发送的)Caps Lock是 66,因此将其绑定更改为Mode_switch
,并从中删除大写锁定修饰符:
keycode 66 = Mode_switch
clear Lock
您还需要将修饰符与 关联起来Mode_switch
。有 5 个自定义修饰符,Mod1
通过Mod5
;任何一个都可以,但必须有一个。运行xmodmap -pm
以查看正在使用哪些修饰符,并选择 5 个未使用的修饰符之一,然后将如下行添加到您的.Xmodmap
:
add Mod3 = Mode_switch
在 xmodmap 键规范中,键发送的字符 withMode_switch
位于=
符号后的第三列,而Mode_switch
+则Shift
位于第四列。 (前两列适用于不带修饰符和带有 的键Shift
。)您可以使用keysym
指令重新绑定现在发送的键,n
无论其键码如何:
keysym n = n N ntilde Ntilde
右侧的名称实际上是键符号名称。您可以在 中找到这些的列表
/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
请注意,如果您在 ~2009–2011 年份的系统上移动修饰符,您可能会遇到X_SetModifierMapping
漏洞。通常,但并非总是,使用clear Lock
可以解决该错误。
答案3
如果您不介意大写锁定不再用作“大写锁定”键,则可以使用 重新将其映射到“altgr-like”状态xmodmap -e 'keysym Caps_Lock = ISO_Level3_Shift'
。