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

Pab*_*blo 12 debian keyboard

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


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

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

然而,几年前当我安装 Ubuntu 时,我注意到 cedilla 不再打印(ç 或 Ç)。这是以下键的组合:' + c。相反,我得到的是 ? 信。

它是什么时候开始发生的,为什么与其他操作系统上的行为不同?更让我困惑的是,甚至还有一种“美国国际替代品”键盘布局,它打印出完全相同的键!那么,它有什么替代品呢?

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

Mik*_*kel 19

概括

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

死键设置取决于您的语言环境和字符集。

例如:

  • 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
Run Code Online (Sandbox Code Playgroud)

即:

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

git 日志 (( en_US.UTF-8 ) ( iso8859-1 )) 显示它至少从 2004 年开始就是这样。


美国国际和美国替代国际之间的区别在 中定义/usr/share/X11/xkb/symbols/us

即,美国替代国际布局添加了这些额外的 AltGr 死键:

  • dead_macron:在 AltGr-minus 上
  • dead_breve:在 AltGr-parenleft 上
  • dead_abovedot:在 AltGr 期间
  • dead_abovering:在 AltGr-0 上
  • dead_doubleacute:在AltGr-equal(因为已经使用了quotedbl)
  • dead_caron:关于 AltGr-less (AltGr-shift-comma)
  • dead_cedilla:在 AltGr-逗号上
  • dead_ogonek:在 AltGr-分号上
  • dead_belowdot:在 AltGr-下划线(AltGr-shift-minus)上
  • 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