試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

Mandriva Linux 2009.1での一部キーの割り当てがおかしい件とその対処

Mandriva Linuxのバージョンが2009.1になったので上げてみたのだが、Xサーバがハードウェア抽象化レイヤ(HAL:Hardware Abstraction Layer)の情報を利用するようになった関係で日本語キーボードに関する設定の扱いが変わり、一部のキーの割り当てがおかしくなってしまっている。
色々調べてみた結果、他の環境において既に同じ問題が発生して解決した方々の情報が色々と見つかったので、それを参考にして下のような設定を行うことによりこの問題は解決した。
下のファイルは存在しないので以下の内容で作成する。なお、既定の設定内容は/usr/share/hal/fdi/policy/10osvendor/10-x11-input.fdiに書かれている。
ファイル名: /etc/hal/fdi/policy/10-x11-input.fdi

<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
  <device>

    <!-- KVM emulates a USB graphics tablet which works in absolute coordinate mode -->
    <match key="input.product" contains="QEMU USB Tablet">
       <merge key="input.x11_driver" type="string">evdev</merge>
    </match>

    <!-- FIXME: Support tablets too. -->
    <match key="info.capabilities" contains="input.mouse">
      <merge key="input.x11_driver" type="string">mouse</merge>
      <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
             string="Linux">
        <merge key="input.x11_driver" type="string">evdev</merge>
      </match>
    </match>

    <match key="info.capabilities" contains="input.keys">
      <!-- If we're using Linux, we use evdev by default (falling back to
           keyboard otherwise). -->
      <merge key="input.x11_driver" type="string">keyboard</merge>
      <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
             string="Linux">
        <merge key="input.x11_driver" type="string">evdev</merge>
      </match>
      <!-- Use jp106 keyboard -->
      <merge key="input.x11_options.XkbRules" type="string">xorg</merge>
      <merge key="input.x11_options.XkbLayout" type="string">jp</merge>
      <merge key="input.x11_options.XkbModel" type="string">jp106</merge>
    </match>
  </device>
</deviceinfo>

下は元ファイルとの差分。「+」のある行が挿入されることを示している。

$ diff -u /usr/share/hal/fdi/policy/10osvendor/10-x11-input.fdi /etc/hal/fdi/policy/10-x11-input.fdi
--- /usr/share/hal/fdi/policy/10osvendor/10-x11-input.fdi
+++ /etc/hal/fdi/policy/10-x11-input.fdi
@@ -24,6 +24,10 @@
              string="Linux">
         <merge key="input.x11_driver" type="string">evdev</merge>
       </match>
+      <!-- Use jp106 keyboard -->
+      <merge key="input.x11_options.XkbRules" type="string">xorg</merge>
+      <merge key="input.x11_options.XkbLayout" type="string">jp</merge>
+      <merge key="input.x11_options.XkbModel" type="string">jp106</merge>
     </match>
   </device>
 </deviceinfo>

設定変更を反映するにはOSの再起動を行ってもよいが、HALのデーモンとディスプレイマネージャ(グラフィカルログイン画面)の両方を再起動してもよい。

$ sudo /etc/init.d/haldaemon restart
$ sudo /etc/init.d/dm restart
(ここでログアウトされてログイン画面になる)

参考URL:

  • www.noppi.jp/diary/?date=20090414 (リンク切れ)

使用したバージョン:

  • xorg-server 1.6.1
  • HAL 0.5.12rc1