Linux 上是否有模仿 Windows 行为的美国国际键盘布局?

Joe*_*oey 16 linux gnome keyboard-layout international

我习惯于使用美国国际作为我的键盘布局。但是,Windows 和 Linux 之间的实现似乎有很大不同(在我的情况下,Gnome – 很可能是 GTK 问题,因为 GTK 在 Windows 上的行为相同)。

布局使用死键,例如,诸如', ", ^, &c 之类的键。允许轻松输入带有变音符号的字符。在 Windows 上,按下一个死键,然后按下一个没有关联的键会导致死键的字符(与空格配对时)和第二个键的字符。示例:按下"a产生“ä”,然而,按下's产生“'s”,因为'和没有配对s

现在,有一种叫做英语的语言,它经常使用这两个字符,因为它可以在 Windows 上正常工作,只需像往常一样输入它们,现在对我来说是肌肉记忆。这让我想到了我的问题:

在Linux(和GTK在Windows上),还有就是用于配对's(其中许多人),造成?(这反过来,导致我经常打字“了吗?”)。所以输入“it's”需要我在最后输入',         , s

还有一些我习惯的其他组合不起作用。其中包括对于不存在的对根本没有结果。键入“Id”的结果是“I”。两次击中其中一个键会导致非间距变音符号,这打破了我通过首先键入两个引号(现在导致非间距重音符号或长音符号)来键入字符串的习惯。

长话短说:无附带的美国国际布局出现的以功能等同于Windows -是否有任何的工作相同?或者有机会以这种方式配置它吗?虽然输入带有尖锐重音或非间距变音符号的 s 可能很好,但这些对我来说并不是很常见的需求。

Gil*_*il' 7

一种可能性是避免使用死键并使用 Compose 键键入带重音的字母。例如,键入Compose " a以输入ä。您必须选择一个包含Compose按键的键盘布局选项;一个常见的选择是右键左侧的Ctrl键(我认为 Windows 称之为Menu)。的优点Compose是您可以在不更改主要布局的情况下输入许多花哨的字符。缺点是重音字母需要按三次而不是两次。

或者,您可以通过.XCompose在您的主目录中创建一个名为(注意 CApitalization)的文件并列出您想要的组合来配置死键的效果。就像是:

包括“/usr/share/X11/locale/en_US.UTF-8/Compose”

<dead_acute> <space> : "'" 撇号
<dead_acute> <感叹> : "'!"
<dead_acute> <quotedbl> : "'\""
# 等等...
<dead_acute> <a> : "á"
<dead_acute> <b> : "'b"
# 等等...

语法相当简单: 左边的键序列:变成""了右边的字符串:。右边多出的词就是这一系列键对应的keysym(即键名);这不是很重要。从 a#到行尾的任何内容都将被忽略。

如果您的发行版将其放在不同的位置,请将第一行更改为指向系统文件。您可以查看此文件以获取更多语法示例。<Multi_key>Compose密钥的另一个名称。

在左侧,<尖括号之间的名称>是键符。您可以在/usr/include/X11/keysymdef.h(此文件位于开发包中,例如x11proto-core-dev在 Ubuntu 上)中找到键符列表。

是的,这是很多打字,但是您应该能够通过复制粘贴大块keysymdef.h并进行一些巧妙的批量替换来自动化大部分工作。由于“\x dd ”语法,您可以重用右侧的十六进制代码来制作右侧字符串,这将有所帮助:turn eg

#define XK_exclam 0x0021 /* U+0021 感叹号 */

进入

<dead_acute> <exclam> : "'\x21"

最后,您可以设置带有死键和Compose键的键盘布局。作为德国人,您可能只设置"为死键。如果你要走这条路,最简单的选择是使用 GUI 设置一个没有死键的键盘和一个死键.Xmodmap文件,包含类似的内容

keysym 撇号 = 撇号 dead_quotedbl


yms*_*yms 6

目前有一个 github repo 提供了一个 .deb 文件来解决这个问题:

Windows™ 美国国际 XCompose for Linux

正如其他答案所建议的那样,它基于自定义的 .XCompose 文件。

从该页面(Ubuntu/Debian):

sudo apt-add-repository -y ppa:rael-gc/utils
sudo apt update
sudo apt install win-us-intl
im-config -n uim
Run Code Online (Sandbox Code Playgroud)

注销并登录。如果这不起作用,请尝试重新启动系统。