设置西班牙语 eñe 字母的键

设置西班牙语 eñe 字母的键

如何将西班牙语 eñe 字母映射到组合键?什么应用程序适合此目的(xmodmapxbindkeys、 ...)?

当我按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第六个位置)。AltGrShift

如果这可行的话你可以让它在登录后自动运行

答案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'

相关内容