几年前, “xmodmap” 用于更改 XFree 下的键盘表,这是一个通常名为 /usr/X11/lib/X11/xinit/.Xmodmap 的配置文件,通过您的 .xinitrc
或 /etc/X11/xinit/xinitrc
得到支持
为了转换正确的控制台表,我们使用 “mk_modmap”,它与 kbd 存档一起提供,通常安装在 /usr/lib/kbd/keytables 中
希望自定义其 xmodmap 表的用户使用 “xkeycaps” 程序。
然后 XFree 2.1 及更高版本识别了由 “loadkeys” 管理的键盘布局,理论上 xmodmap 变得不必要了。
但是 XFree 3.1 提供的 “COMPOSE” 键管理有点令人失望,从 “loadkeys” 继承的表几乎没有用处。
因此,有必要继续使用 xmodmap,这是标准的实用程序软件,允许强制 X 服务器将鼠标/键盘事件与字符关联。
在 XFree 3.2 及更高版本下,“xkb” 使 xmodmap 彻底过时。
但是,关于即将到来的 XFree 版本将不再支持死键的传言得到了证实!!!
在 X 联盟的 X11 发行版中,也就是直接来源于它的 XFree86 中,不再存在通用的死键管理机制,或者近似的解决方案,这些方案迫使人们也删除 xkb 或修改程序库!
每个程序都应该很好地管理死键,而不是信任 X 来完成这项任务。
实际上,管理死键并不复杂,只需在 Motif 程序中使用正确的函数 XmbLookupString(),而不是 XLookupString()。
多么复杂的故事!
因此,它们仅对 “国际化” 的 X 客户端有效,也就是说,这些客户端自行管理与不同国家语言的数据输入方法相关的问题。
当人们想要输入包含重音字母的文本,而使用的客户端没有国际化时,这非常令人困扰!
输入
cp fr-latin9.xmod /usr/X11R6/lib/X11/xinit/Xmodmap
cp fr-latin9.xmod ~/.Xmodmap
输入
cp fr-latin9 /usr/X11R6/lib/X11/xkb/symbols
然后编辑您的 XF86Config
,以便在 “Keyboard” 部分中添加相应的 xkb 行
Section "Keyboard"
Protocol "Standard"
AutoRepeat 500 30
LeftAlt Meta
RightAlt ModeShift # Important pour Alt-gr, mais dans les
# versions récentes de XFree, AltGr et
# RightAlt sont synonymes.
ScrollLock Compose # Pour faire des caractères spéciaux.
# Utiliser sinon une des 3 touches des
# nouveaux claviers 105 touches...
RightCtl Control # Garder la touche normale
XkbKeycodes "xfree86"
XkbRules "xfree86"
XkbTypes "default"
XkbCompat "default"
XkbSymbols "fr-latin9(pc105)"
XkbGeometry "pc(pc105)"
XkbModel "pc105"
EndSection
对于这个 Xkb 部分,有些人更喜欢
XkbKeymap "xfree86(fr-latin9)"
XkbKeycodes "xfree86"
XkbSymbols "en_US(pc101)+fr-latin9"
XkbGeometry "pc(pc101)"
当然,根据您的键盘,将 “fr” 替换为 “cn”、“be”、“ch” 或 “usx”……
获得 8 位字符的另一种方法
在 /usr/X11R6/lib/X11/locale/iso8859-1/Compose
中,可以找到两个字符和一个结果之间的 “对应” 表;这两个字符在按下组合键时被 “混合”:例如;
COMPOSE suivi de � e � puis � ^ �
很有可能给您 ê,包括相反的顺序(“^” 然后 “e”)
但是要使用组合键,您必须将其分配给一个键!
建议的参数设置在 XF86Config 中,使其对应于在 X 下无用的 “滚动锁定” 键,通过命令
ScrollLock Compose
在 Keyboard 部分中。
注意,在 Linux 控制台模式下,此键很有用(用于临时阻止虚拟控制台),而 “打印屏幕” 或 “Print Screen” 键没有任何用处,因此被分配给 “Compose”。
Thomas Quinot <Thomas.Quinot(à)cuivre.fdn.fr> 因此向您提供了他修改后的 libX11
,它以对所有客户端透明的方式管理死键。
它还允许将未知的组合序列视为字符对来处理,例如
~ + / = ~/
要使用它
libX11.so.6.1
;/usr/X11R6/lib/
中;ldconfig
;XF86Config
的 Keyboard
部分中使用 XkbDisable
选项禁用 XKB 扩展。
就我个人而言,我建议您不要修改 libX11,忘记 xmodmap 和 xkb + latin9 文件的替代方案,等待 X 联盟对死键政策的另一次更改(或者将国际化选项添加到您的程序的源代码中。)
目前,如果您没有 /usr/X11R6/lib/X11/xkb/symbols/
目录,则表示您没有使用 xkb:因此请获取更新版本的 X window!
如果没有 xkb,XFree 将默认回退到您为 Linux 使用 loadkeys 的键盘配置。
但是,转换并不完美,我建议您最好避免使用此选项,以及旧的键盘管理器 Xmodmap
。
也可能在没有任何 xkb 命令的情况下,XFree 会将您视为 7 位键盘的用户!
因此,应该使用适合 xkb 的表。
我建议您选择我维护更新的 latin9
表,它比 latin1
版本更新,允许使用多种改进,这些改进在 linux-console 下的键盘部分中详细介绍,以便尽可能舒适并更适用,因为它们由法语使用者维护。
它们受益的众多改进弥补了许多程序的缺陷。
例如,某些 Motif 程序(如 Netscape (tm))还不知道如何管理死键……因此无法在比利时和法国键盘上键入 ê 或 î,因为死键 “抑音符” 是获得这些字符的唯一方法!
“fr-latin9” 通过提供替代解决方案来解决此问题:AltGr (元音) 允许获得带有抑音符的元音,AltGr+Shift (元音) 允许获得带有分音符的元音!
例如
此技巧也适用于 cedilla c
因此,即使在最坏的情况下,如果没有死键起作用,我们仍然可以访问所有带重音的元音,大写和小写!
您还将在其中找到法式引号(“« »”),物理学中使用的符号(ß、å、delta、phi …)、货币符号(日元、美分)或版权符号(tm
、©)以及其他语言的字母(Ø、Æ …)。
所有这些符号都可以通过 AltGr (字母) 获得,例如 AltGr (b) 给出 ß,AltGr (r) 给出 tm
,AltGr (y) 给出日元……
为了简单地记住这一切,例如输入
more /usr/lib/kbd/keytables/i386/azerty/fr-latin9.map
至于 latin1 和 latin9 之间的选择……由您决定!
一个建议:如果您有时间,请尝试一个,然后再尝试另一个。
拥有与 latin 9 兼容的键盘表很好,但是如果没有合适的字体,您将永远看不到此标准中添加的字符。
因此,有必要使用转换实用程序 “bdftopcf”,它在某种程度上允许编译提供的字符字体。
将自己放置在您检索到的存档的目录中,然后在 root 下,例如为 Xlat9-10x20.bdf 或另一个 bdf 输入
bdftopcf Xlat9-10x20.bdf > Xlat9-10x20-lat9.pcf
gzip Xlat9-10x20-lat9.pcf
mv Xlat9-10x20-lat9.pcf.gz /usr/X11R6/lib/X11/fonts/misc
mkfontdir /usr/X11R6/lib/X11/fonts/misc
这会创建一个文件 “Xlat9-10x20-lat9.pcf”,必须使用 gzip 对其进行压缩,然后我们获得文件 “Xlat9-10x20-lat9.pcf.gz”,该文件必须放置在适当的目录中,为此,字符字体的索引将被更新。
然后,将 latin9 组合表添加到 X 的默认组合中,特定于 iso 8859-1
cat XCompose-lat9 >> /usr/X11R6/lib/X11/locale/iso8859-1/Compose
我们对 ISO 8859-1 执行 cat 操作,因为 X 无法识别 ISO 8859-15 latin9。
从那里,重新启动 X 或在其普通用户帐户下输入
xset +fp /usr/X11R6/lib/X11/fonts/misc
如果您使用 xmodmap,请启动
xmodmap ~/.Xmodmap
要选择 latin9 字体,请启动 xfontsel 并查找 iso8859-15 编码。
或更简单地说,输入
grep Xlat9-10x20.pcf /usr/X11R6/lib/X11/fonts/misc/*
然后将第二个参数用作字体名称,例如使用 rxvt、xiterm、aterm 或 wterm
aterm -fn -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso8859-15
这将启动一个使用 latin9 字体之一的 X 终端。