编辑:我意识到这个“问题”不仅存在于 Ubuntu 中,而且存在于 Debian 本身中,而 Ubuntu 只是继承了它,所以我从 Ask Ubuntu 迁移了这个问题
我断断续续地使用 Linux 已有 10 年了,最近我花更多时间使用 OSX。
但是,我仍然记得一开始我会选择美国国际键盘布局,它的输出与 Windows 键盘布局(以及最近的 OSX 美国国际布局)完全相同。
然而,几年前,当我安装 Ubuntu 时,我注意到变音符号不再被打印(ç 或 Ç)。这是以下键的组合:' + c。相反,我得到的是 ć 字母。
它是什么时候开始发生的,为什么与其他操作系统上的行为有所不同?更让我不解的是,竟然还有“美国国际替代”键盘布局,打印出一模一样的按键!那么,它可以替代什么呢?
这已被报告为 Canonical 的错误(现在找不到链接),但键盘布局从未变回我所期望的。我知道将其修复为我需要的解决方法,但我只是想知道为什么/何时它变得不同。
答案1
概括
- 如果您使用的是 Ubuntu,它可能在 2005 年左右发生了变化,当时默认字符集从 ISO 8859-1 更改为 UTF-8。
- 美国另类国际添加了一些死键。
死键设置取决于您的区域设置和字符集。
例如:
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 成为默认编码:
答案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并将 ć 的所有实例更改为 ç,将 Ć 的所有实例更改为 Ç。
当您升级系统并将配置文件恢复为其原始内容时,您可能需要不时地重复一项或两项操作。