使用死键禁用美国国际上的一些死键

Rub*_*ten 6 keyboard input-language

在 Windows 上,我真的习惯于使用死键(荷兰语键盘都使用带有死键的 US International),但是,在 Windows 上,键入'+s将产生's,而在 Ubuntu 上,它会创建?,这不是我所使用的字符远程熟悉。其他不接受引号或字符重音的字母,例如t,在我space输入引号后手动按下或按t两次按钮之前不会打印

有没有办法在 Ubuntu 上获得类似 Windows 的行为?

小智 1

坟墓有两个键符号,gravedead_grave,默认dead_grave设置为 ` 键。xmodmap 可用于更改它,并且默认情况下应该在 Ubuntu 中(使用 arch install xorg-xmodmap)。

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

xmodmap -e "keycode  49 = grave notsign grave notsign brokenbar notsign brokenbar notsign"
Run Code Online (Sandbox Code Playgroud)

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

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

keycode  49 = grave notsign grave notsign brokenbar notsign brokenbar notsign
Run Code Online (Sandbox Code Playgroud)

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

xmodmap -pke | grep dead
Run Code Online (Sandbox Code Playgroud)

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

xmodmap -pke >> ~/.Xmodmap
Run Code Online (Sandbox Code Playgroud)

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


小智 0

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

\n

这就是死键的所有定义所在。输入一系列像这样的行:

\n

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

\n

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

\n

<dead_acute> <S> : "\xc5\x9a" U015A # 带锐音的拉丁文大写字母 S

\n

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

\n

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

\n

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

\n

这应该会给你你想要的 MS-Win 国际美国键盘行为,所以你可以输入“'最好的祝愿,'他没有说。”,只需在关闭单引号后额外按一次空格键逗号之后,因为您已将“'B”映射到“'B”,将“'t”映射到“'t”,而不是映射到只有语言学家才会使用的意外内容。

\n

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

\n

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

\n