使用死键禁用美国国际机场上的某些死键

使用死键禁用美国国际机场上的某些死键

在 Windows 上,我非常习惯使用死键(荷兰键盘都使用带死键的美国国际键盘),但是在 Windows 上,键入'+s会产生's,而在 Ubuntu 上,它会创建ś,这不是我熟悉的字符。其他不接受引号或字符重音的字母,例如,只有在我键入引号后手动按下或按下按钮两次后t才会打印spacet

有什么方法可以在 Ubuntu 上获得类似 Windows 的行为吗?

答案1

grave 有两个键符,gravedead_grave,默认dead_grave设置为 ` 键。可以使用 xmodmap 来更改它,它应该默认在 Ubuntu 中(使用 arch install xorg-xmodmap)。

要将其从默认值更改dead_gravegrave,请运行:

xmodmap -e "keycode  49 = grave notsign grave notsign brokenbar notsign brokenbar notsign"

其余的值是各种修饰符,例如第二个是shift。

如果您希望它是永久的,请创建~/.Xmodmap,然后添加:

keycode  49 = grave notsign grave notsign brokenbar notsign brokenbar notsign

如果您遇到任何其他死键问题,请运行:

xmodmap -pke | grep dead

它会给你一个死键列表。或者你可以运行:

xmodmap -pke >> ~/.Xmodmap

然后,您将获得键盘按键及其符号值的完整列表.Xmodmap,这样可以轻松地将您的死键和任何其他键更改为您喜欢的任何自定义布局。

答案2

是的,我有一个编程解决方案。答案在 /usr/share/X11/locale/iso8859-1/ 和 /usr/share/X11/locale/en_US.UTF-8/ 下的 Compose 文件中。

这就是所有死键的定义。输入如下一系列行:

<dead_acute> <S> : “'S” # 撇号然后是拉丁大写字母 S

而不是 en_US.UTF-8/Compose 中的条目,即:

<dead_acute> <S> : “Ś” U015A # 带尖音符的拉丁大写字母 S

还要为每一个其他字母(大写字母和小写字母)创建线条,默认情况下这些线条根本没有定义,因此不会执行任何操作:

<dead_acute> <b> : "'b" # 撇号然后是拉丁小写字母 b

将所有这些更改放入名为 .XCompose 的文件中,点 ex compose,注意大写,位于您的主目录中。如果您复制整个文件并只编辑这些行,删除旧行,则无需包含母文件,但如果您只将更改放入 .XCompose,则需要在文件顶部放置一个包含行,引用您的代码行将替换的系统文件。语法的工作方式是每行都取代冒号前具有相同代码的上一行,并将该字符串重新定义为新行,而哈希 # 之后的所有内容将被忽略为注释。这是您随心所欲地制作它的机会。作为测试,我将 <dead_acute> <1> 设置为“XCompose 1.0”,这样我就可以立即看到我的代码是否在我的 .XCompose 文件中被调用。

这样应该就可以获得所需的 MS-Win 国际美国键盘行为,这样您就可以输入“ 'Best wishing,' he didn't say. ”,只需要在逗号后的右单引号后多按一次空格键即可,因为您已经将“'B”映射到“'B”,将“'t”映射到“'t”,而不是只有语言学家才会使用的意外内容。

此外,您可能必须将键盘处理程序更改为“xim”,而不是 Linux 安装的默认设置。有一篇文章介绍如何执行此操作。“xim”使用 Compose/.XCompose 文件。

现在,如果我只知道如何关闭那些让我抓狂的智能引号就好了。

相关内容