如要将 PS/2-HIL 转换器用于使用非美国英语任何语言的键盘,除连接转换器外,您还需要执行其他几个步骤。在这些步骤执行之前,转换器在解释字符输入时将采用缺省的美国英语键盘布局。下面的步骤将把正确的键映射- 对应于您的键盘布局 - 安装到 ITE 系统控制台或 Xserver 中。
如果您的大部分键盘输入是通过 X Windows 系统进行的,您就无须担心是否在 ITE 中安装了正确的键映射供 ITE 控制台使用。相反,如果大部分键盘输入是通过系统控制台进行的,您就无须执行对应于 X Window 系统的指令。两种情况下,都不会妨碍到系统执行两个指令集。不过,如上面提到的那样,在执行下面的指令之前,将通过美国英语键盘布局解释键盘输入。
 |
 |  |
 |
 | 注释:下面所有示例中,都会显示一个 root 用户提示符 (#)。不过,除非特别指明,用户不一定必须是 root 用户才能执行这些命令。 |
 |
 |  |
 |
| 键盘布局 |
 |
在下面所有的示例中,<language> 指的是对应于您的键盘布局的语言的名称。如想看到所有可用键盘映射的列表,请执行:# /usr/contrib/bin/X11/keymap_ed -l并找到形式为 PS2_<language> 的布局。
如果上面的 keymap_ed -l 命令的输出显示的键映射形式为 HIL_PS2_DIN_<language>,您可能需要考虑使用此布局而非上面提到的 PS2_<language> 布局。通常情况下,HIL_PS2_DIN_<language> 布局应是类似的 PS2_<language> 布局的超集。HIL_PS2_DIN_<language> 布局一般会包含一些附加的映射,这样组合键序列就可以正常使用。如果 keymap_ed -l 的输出未显示任何 HIL_PS2_DIN_<language> 键盘映射,这些映射将在以后的 Xserver 修补程序中出现。
如果确实想用形式为 HIL_PS2_DIN_<language> 的键盘映射,请用该名称代替在本文档后面部分出现的所有 PS2_<language>。不过,使用形式为 HIL_PS2_DIN_<language> 的布局就不能使用基于语言环境的键映射更改一节中的指令来加载想要的键映射。
 |
 |  |
 |
 | 注释: 形式为 PS2_DIN_<language> 的布局对于这些步骤来说是不正确的。 |
 |
 |  |
 |
| 在 X Windows 系统中使用键盘 |
 |
本节中的指令是供在公用桌面环境 (CDE) 中使用的。不过,其他使用窗口的系统可通过类似的过程进行调整。
当 Xserver 开始使用连接到 PS/2-HIL 转换器的键盘时,它也采用缺省的美国英语键盘布局。使用 X Windows 系统时如想将此映射变为另一种语言,则在会话开始后,必须执行下面的命令:
# /usr/contrib/bin/X11/keymap_ed -i PS2_<language>
其中, <language> 对应于您想用的键盘语言。(更多信息请参见上面的“键盘布局”。)
CDE 提供了上面这一步的自动执行机制。这些机制免得您在开始每个会话时都执行此命令。您可以改变会话启动脚本,以便登录时能自动看到此更改。
如果采用自动方法,您可以选择在“每用户”、“基于语言环境”或“全局”基础上进行此更改。在“每用户”基础上安装此新的键映射,意味着只有那些选择此方法的用户会受影响(也就是说,只有那些在会话启动脚本中做此更改的用户才会在登录是看到此“新”的键映射)。基于语言环境的更改取决于登录到 CDE 桌面时选择的语言环境。使用“全局”方法意味着所有通过 X Window 系统登录到用户会话的用户都可以看到此新的键映射。
| “每用户”键映射更改 |
 |
如要在每用户基础上进行此更改(也就是说,只有那些做此更改的用户才能使用 PS2_<language> 这一键映射,每个用户都必须修改他/她的 $HOME/.dtprofile 文件以包括下面这一命令:
/usr/contrib/bin/X11/keymap_ed -i PS2_<language>
其中,<language> 对应于您想用的键盘语言。(更多信息请参见上面的“键盘布局”。)
正如上面提到的,只有那些对 $HOME/.dtprofile 文件作了补充的用户才能在登录到 CDE 会话时自动看到此新的键映射。
| 基于语言环境的键映射更改 |
 |
改变键盘布局的另一方法是,让在登录到 CDE 桌面时选择的语言环境来确定键映射。这样可以保证只有选择了特定语言环境的用户才能看到键盘映射的改变。所以,此方法可以用作一个中间解决方案,它介于上面提到的“每用户键映射更改”和下文将要讨论的“全局键映射更改”之间。此外,此方法可以保证在提示您输入用户名和口令前键映射是正确的。结果是,在输入名称和口令时,您不必再担心美国英语键盘和您的键盘之间的区别。
为定制您的 CDE 环境以适应基于语言环境的键映射更改,您需要到系统的根级访问权限。此修改可以利用 CDE 的 Xlangsetup 控制脚本,该脚本在 dtlogin 启动时和在用户从 dtlogin 屏幕上的选项 -> 语言菜单上选择一种语言环境时执行。选择一种语言时, Xlangsetup 脚本将运行,以确定它是否应该为您选择的语言安装新的键盘映射。
为开始此定制过程,请将 Xlangsetup 脚本的缺省版本复制到“定制”区域:
# cp /usr/dt/config/Xlangsetup /etc/dt/config/Xlangsetup
# chown bin:bin /etc/dt/config/Xlangsetup
下一步,编辑“case”语句以包括对应于您键盘语言的语言环境。在下面的示例中,我们添加的是对德语键盘的支持。此例中,我们想让 de_DE.roman8 和 de_DE.iso88591 语言环境使用德语键映射。下面是 Xlangsetup 脚本的一个片段:
#
# Check the new language
#
case "$NEW_LANG" in
iw_IL.iso88598)
L=Hebrew
;;
ru_RU.iso88595)
L=Russian
;;
...
sl_SI.iso88592)
L=SerboCroatian
;;
*) # Get the default keymap that was saved to disk
$KEYMAP_ED -g $SAVED_KEYMAP_FILE
RC="$?"
if [ $RC -eq 1 ]
...
esac |
在“case”语句结束处的“*”条件选择前面,添加正确的德语键盘条件选择:
sl_SI.iso88592)
L=SerboCroatian
;;
de_DE.roman8 | de_DE.iso88591) ## New
L=German ## New
;;
## New
*) # Get the default keymap that was saved to disk
$KEYMAP_ED -g $SAVED_KEYMAP_FILE
RC="$?"
if [ $RC -eq 1 ]
...
esac |
现在,当您从 dtlogin 屏幕上的“选项 -> 语言”菜单上选择 de_DE.roman8 或 de_DE.iso88591 时,您开始会话时使用的将是映射到德语键盘布局的键盘。如上所述,此映射在 dtlogin 初始化时发生,所以此新映射即使在您输入名称和口令时也有效。
| 全局键映射更改 |
 |
如想在全局基础上作此更改,您必须有到系统的根级访问权限,因为您需要在某一目录中创建一个文件,普通用户没有在此目录中创建新文件的权限。
首先要执行:
# cd /usr/dt/config/Xsession.d
在此目录下,您会看到几个具有下面形式的文件:
00xx.<name>
在用户名称和口令被 dtlogin 接受后,这些脚本在会话启动期间按数值顺序执行。在“缺省”脚本执行过后,您很可能需要执行此新脚本,所以请选择比此目录下其他脚本的数值高的数值。此例中,脚本将命名为 0099.keymap。如果您为您的环境选择了另外一个脚本名称,请在后面的示例中用此名称替换 0099.keymap。
第二步,在此目录 (/usr/dt/config/Xsession.d) 中创建新文件(此例中文件名称为 0099.keymap),其中包括:
#!/usr/bin/ksh
/usr/contrib/bin/X11/keymap_ed -i PS2_<language>
上例中,<language> 对应于您想用的键盘语言。(更多信息请参见上面的“键盘布局”。)
第三步,确保此脚本有适当的权限:
# chown bin:bin 0099.keymap
# chmod 555 0099.keymap
完成此步后,所有通过 CDE 登录的用户都将自动看到想要的键映射。
在“每用户”和“全局”这两种情况下,直到用户成功输入他/她的名称和口令以开始用户会话后,键映射更改才生效。所以,用户名称和口令必须以对应于美国英语键盘映射的方式输入。
| 配置韩语键盘的专用指令 |
 |
如果您在使用韩语键盘布局,添加到 .dtprofile 脚本或 0099.keymap 脚本的命令将会与上面的不同,因为 PS2_Korean 键映射不存在。所以对缺省加载的 PS2_US_English 键映射必须作一个小的改动。要做到这一点,请修改您已熟悉的同一脚本(在“每用户”模式下是 .dtprofile,在“全局”模式下是 0099.keymap),使之包括下列内容:
/usr/bin/X11/xmodmap - << EOF
keycode 8 = Ext16bit_R Ext16bit_L
remove Control = Control_R
EOF
应使用此命令而非上面示例中用到的任何 keymap_ed 命令。