为什么 Debian 上的美国国际键盘布局不同?

为什么 Debian 上的美国国际键盘布局不同?

编辑:我意识到这个“问题”不仅存在于 Ubuntu 中,而且存在于 Debian 本身中,而 Ubuntu 只是继承了它,所以我从 Ask Ubuntu 迁移了这个问题


我断断续续地使用 Linux 已有 10 年了,最近我花更多时间使用 OSX。

但是,我仍然记得一开始我会选择美国国际键盘布局,它的输出与 Windows 键盘布局(以及最近的 OSX 美国国际布局)完全相同。

然而,几年前,当我安装 Ubuntu 时,我注意到变音符号不再被打印(ç 或 Ç)。这是以下键的组合:' + c。相反,我得到的是 ć 字母。

它是什么时候开始发生的,为什么与其他操作系统上的行为有所不同?更让我不解的是,竟然还有“美国国际替代”键盘布局,打印出一模一样的按键!那么,它可以替代什么呢?

这已被报告为 Canonical 的错误(现在找不到链接),但键盘布局从未变回我所期望的。我知道将其修复为我需要的解决方法,但我只是想知道为什么/何时它变得不同。

答案1

概括

  1. 如果您使用的是 Ubuntu,它可能在 2005 年左右发生了变化,当时默认字符集从 ISO 8859-1 更改为 UTF-8。
  2. 美国另类国际添加了一些死键。

死键设置取决于您的区域设置和字符集。

例如:

  • en_US.UTF-8定义于/usr/share/X11/locale/en_US.UTF-8/Compose
  • ISO 8859-1定义于/usr/share/X11/locale/iso8859-1/Compose

如果您使用 来查看它们grep,您会发现存在差异:

$ grep '<dead_acute> <c>' /usr/share/X11/locale/en_US.UTF-8/Compose 
<dead_acute> <c>                    : "ć"   U0107 # LATIN SMALL LETTER C WITH ACUTE

$ grep '<dead_acute> <c>' /usr/share/X11/locale/iso8859-1/Compose
<dead_acute> <c>            : "\347"    ccedilla

即:

  • Latin1 编码:', c=ç
  • UTF-8 编码:', c=ć

git 日志 ((en_US.UTF-8) (ISO8859-1)) 表明至少从 2004 年起就一直如此。


美国国际和美国另类国际之间的区别定义在/usr/share/X11/xkb/symbols/us

也就是说,美国另类国际布局添加了这些额外的 AltGr 死键:

  • dead_macron:在 AltGr 减号上
  • dead_breve:在 AltGr-parenleft 上
  • dead_abovedot:在 AltGr 周期
  • dead_aovering:在 AltGr-0 上
  • dead_doubleacute:在 AltGr-equal 上(因为已经使用quotedbl)
  • dead_caron:无 AltGr(AltGr-shift-逗号)
  • dead_cedilla: 在 AltGr 逗号上
  • dead_ogonek:在 AltGr 分号上
  • dead_belowdot:在 AltGr 下划线上(AltGr 移位减号)
  • dead_hook:关于 AltGr 问题
  • dead_horn:在 AltGr-plus 上(AltGr-shift-equal)
  • dead_diaeresis:在 AltGr 冒号上(Alt-shift-分号)

例如:

  • 美国国际:AltGr+ -=¥
  • 美国另类国际:AltGr+ -, a=ā

UTF-8 成为默认编码:

  • Red Hat 8.0“Psyche”,2002 年 9 月 30 日发布参考
  • Ubuntu 5.04“hoary”,2005 年 4 月 8 日发布参考
  • Debian 4.0“etch”,2007 年 4 月 8 日发布为“稳定版”参考文献1 参考文献2

答案2

补充 Vítor Souza 的答案

使用美国国际键盘布局操作系统语言为英语并拥有美丽的变音符

要使英语能够ç/Ç完美地工作('c-> cedilla ),无需更改撰写文件。所要做的就是使用LC_CTYPE包含以下定义的语言环境进行设置:

<dead_acute> <c>            : "\347"    ccedilla.

例如 pt_BR.UTF-8(巴西葡萄牙语 / Português Brasileiro)。

X键盘图:

# setxkbmap -layout us -variant intl

/etc/locale.conf

# nano /etc/locale.conf
LANG=en_US.UTF-8
LANGUAGE="en_US"
LC_CTYPE=pt_BR.UTF-8

更新区域设置

# source /etc/profile

对于 tty:

设置正确的键盘映射、字体和字体映射,例如。

# nano /etc/vconsole.conf
KEYMAP=us-acentos
FONT=ter-114n
FONT_MAP=8859-1

答案3

http://disi.unitn.it/~vitorsouza/linux/ubuntu-linux-10-10-maverick-meerkat/http://disi.unitn.it/~vitorsouza/linux/ubuntu-linux-10-04-lucid-lynx/:

变音符号问题:

一些好心的人认为重音 c (“ć”) 比带有变音符的 c (“ç”) 更重要,因此在带有死键的国际键盘中按 ' + c 的默认行为现在是“ć”。由于我是巴西人而不是罗马尼亚人或其他什么人,这绝对让我感到困扰。 ' + c 曾经用于输出“ç”。

要修复它,请以 root 身份编辑该文件/usr/lib/gtk-2.0/2.10.0/gtk.immodules,找到这一行:

"cedilla" "Cedilla" "gtk20" "/usr/share/locale" "az:ca:co:fr:gv:oc:pt:sq:tr:wa"

并在 :wa 之后添加 :en,所以看起来像这样:

"cedilla" "Cedilla" "gtk20" "/usr/share/locale" "az:ca:co:fr:gv:oc:pt:sq:tr:wa:en"

针对 Ubuntu 12.10 进行编辑(来源):

要编辑的 gtk.immodules 文件位于:

/usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/gtk.immodules或者/usr/lib/i386-linux-gnu/gtk-2.0/2.10.0/gtk.immodules


编辑 Debian Wheezy(可能还有其他 gtk 3 的东西)

现在需要编辑的文件是

/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules.cache

gtk20现在行中的 是,但在最后gtk30添加:en是一样的。


要修复非 GTK 应用程序的问题,请以 root 身份编辑该文件/usr/share/X11/locale/en_US.UTF-8/Compose并将 ć 的所有实例更改为 ç,将 Ć 的所有实例更改为 Ç。

当您升级系统并将配置文件恢复为其原始内容时,您可能需要不时地重复一项或两项操作。

答案4

这是对的补充维托·苏萨的回答

在Xfce Quantal(Xubuntu 12.10,Mint 14 Xfce)中无法通过已经提到的方法解决这个问题(见下文)。有效的是安装ibus包及其依赖项。

来源- 更准确地说这里.)


旧的解决方案对我不起作用:在 Ubuntu 12.10 中,该文件gtk.immodules具有不同的位置:

/usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/gtk.immodules

或者

/usr/lib/i386-linux-gnu/gtk-2.0/2.10.0/gtk.immodules

(我的来源这里.)

相关内容