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


11

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


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

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

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

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

据报道,这是回溯到Canonical的错误(现在找不到链接),但是键盘布局从未变回我期望的样子。我知道可以解决该问题的变通方法,但是我只想知道为什么/何时变得不同。


2
您可以使用AltGr+ 输入c-cedilla ,。但是何时/是否/为什么改变了,我不知道。
Mikel

感谢您的评论。我已标记了问题,因此可以在此处移动/合并。我仍然相信这里是正确的地方,因为该行为似乎是从Debian继承的。
巴勃罗(Pablo)

Answers:


17

摘要

  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_abovering:在AltGr-0上
  • dead_doubleacute:等于AltGr(已使用quotedbl)
  • dead_caron:在不使用AltGr的情况下(AltGr-shift-逗号)
  • dead_cedilla:在AltGr逗号上
  • dead_ogonek:在AltGr分号上
  • dead_belowdot:在AltGr下划线(AltGr-shift-减)上
  • dead_hook:关于AltGr问题
  • dead_horn:在AltGr-plus上(AltGr-shift-等于)
  • 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“蚀刻”,发布为“稳定”,2007年4月8日参考1 参考2

我希望我有多于一票可以得到这个答案。
penguin359

值得注意的<dead_acute> <c>çć如果您的语言环境是pt_BR ,则会重新映射到(而不是)。参见:/usr/share/X11/locale/pt_BR.UTF-8/Compose
DenilsonSáMaia,2014年

4

补充VítorSouza的答案

使用美国国际键盘布局英文 OS语言,并拥有优美的塞迪利亚风格

要使英语ç/Ç工作得很好('c-> cedilla),无需更改撰写文件。必须要做的是LC_CTYPE使用包含此定义的语言环境来设置:

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

就像pt_BR.UTF-8(巴西葡萄牙语/葡萄牙葡萄牙语)。

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

OP并不是在问如何解决它,而是为什么首先要这样做。否则,我会投票赞成。
凌晨

@strugge,你是对的。但是续集正在做,相对于OP,Mikel很好地回答了。
Geyslan G. Bem 2013年

如果有人认为此答案有帮助,请进行设置。
Geyslan G. Bem 2014年

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曾经一次输出“ç”。

要修复此问题,请以根用户身份编辑文件/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应用程序也进行修复,请以根文件/usr/share/X11/locale/en_US.UTF-8/Compose进行编辑,并用ç更改所有ć实例,并用Ç更改所有Ć实例。

在升级系统时,您可能需要不时重复执行一项或两项操作,这会使配置文件恢复其原始内容。


为了防止包管理器踩到您的更改,您可以运行(以root用户身份)dpkg-divert /usr/lib/gtk-2.0/2.10.0/gtk.immodules。然后,软件包系统将写入gtk.immodules.distrib。要撤消此操作,请将--remove标志添加到同一命令,然后将.distrib文件复制到原始文件上。有关更多信息,man dpkg-divert
詹德(Jander)

在ubuntu 12.10中,文件具有不同的位置:/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

0

这是对VítorSouza的回答的补充。

在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

(我的来源在这里。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.