Kanru’s 探險日誌

當發現美好的事物時,所要做的第一件事,就是把它分享給所有人

Archive for the ‘hal’ tag

Xorg 1.5 XInput Hotplug

leave comments »

之前寫過 Xorg 1.4 XInput Hotplug,提到 xorg, evdev 可以利用 hal 自動偵測硬體載入 driver 與設定參數,而即將 release 的 Xorg 1.5 又新增了一些可以在 hal policy 裡設定的參數:

  • input.x11_driver 可以設定這個 device 要使用的 driver,對應到 xorg.conf 的 Driver 選項
  • input.x11_options.

如今我的 /etc/hal/fdi/policy/10-x11-input.fdi 長這樣:


<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
  <device>
      <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></p>

<pre><code>&lt;match key="info.capabilities" contains="input.keys"&gt;
    &lt;merge key="input.x11_options.XkbRules" type="string"&gt;base&lt;/merge&gt;
    &lt;!-- If we're using Linux, we use evdev by default (falling back to
    keyboard otherwise). --&gt;
    &lt;merge key="input.x11_driver" type="string"&gt;keyboard&lt;/merge&gt;
    &lt;merge key="input.x11_options.XkbModel" type="string"&gt;pc105&lt;/merge&gt;
    &lt;match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
        string="Linux"&gt;
        &lt;merge key="input.x11_driver" type="string"&gt;evdev&lt;/merge&gt;
        &lt;merge key="input.x11_options.XkbModel" type="string"&gt;evdev&lt;/merge&gt;
    &lt;/match&gt;
    &lt;merge key="input.x11_options.XkbVariant" type="string" /&gt;
    &lt;merge key="input.x11_options.XkbLayout" type="string"&gt;dvorak&lt;/merge&gt;
    &lt;merge key="input.x11_options.XkbOptions" type="string"&gt;ctrl:nocaps&lt;/merge&gt;
&lt;/match&gt;
&lt;match key="info.capabilities" contains="input.touchpad"&gt;
    &lt;merge key="input.x11_driver" type="string"&gt;synaptics&lt;/merge&gt;
    &lt;merge key="input.x11_options.Protocol" type="string"&gt;auto-dev&lt;/merge&gt;
    &lt;merge key="input.x11_options.SHMConfig" type="string"&gt;on&lt;/merge&gt;
    &lt;merge key="input.x11_options.LeftEdge" type="string"&gt;1100&lt;/merge&gt;
    &lt;merge key="input.x11_options.RightEdge" type="string"&gt;5800&lt;/merge&gt;
    &lt;merge key="input.x11_options.TopEdge" type="string"&gt;1600&lt;/merge&gt;
    &lt;merge key="input.x11_options.BottomEdge" type="string"&gt;4200&lt;/merge&gt;
    &lt;merge key="input.x11_options.HorizEdgeScroll" type="string"&gt;on&lt;/merge&gt;
&lt;/match&gt;
</code>

我的 /etc/X11/xorg.conf 只剩下必要的:


Section "Device"
    Identifier  "i915gm"
    Driver      "intel"
EndSection</p>

<p>Section "Screen"
    Identifier  "Default Screen"
    Device      "i915gm"
    DefaultDepth    24
    SubSection "Display"
        Modes       "1280x768"
        Virtual     1280 1792
    EndSubSection
EndSection

X 啟動的 log 如下:


(II) config/hal: Adding input device SynPS/2 Synaptics TouchPad
(II) LoadModule: "synaptics"</p>

<p>(II) Loading /usr/lib/xorg/modules/input//synaptics_drv.so
(II) Module synaptics: vendor="X.Org Foundation"
        compiled for 1.4.99.906, module version = 0.15.0
        Module class: X.Org XInput Driver
        ABI class: X.Org XInput driver, version 2.1
(II) Synaptics touchpad driver version 0.15.0
(<strong>) Option "Device" "/dev/input/event8"
(</strong>) Option "SHMConfig" "on"
(<strong>) Option "LeftEdge" "1100"
(</strong>) Option "RightEdge" "5800"
(<strong>) Option "TopEdge" "1600"
(</strong>) Option "BottomEdge" "4200"
(<strong>) Option "HorizEdgeScroll" "on"
(--) SynPS/2 Synaptics TouchPad touchpad found
(</strong>) SynPS/2 Synaptics TouchPad: always reports core events
(II) XINPUT: Adding extended input device "SynPS/2 Synaptics TouchPad" (type: MOUSE)
(--) SynPS/2 Synaptics TouchPad touchpad found

未來各 distro 可以提供預設的 fdi 檔,常見的 input device 都可以隨插即用 :)

Written by Kanru Chen

October 4th, 2008 at 7:58 pm

Posted in 爬網探險

Tagged with , ,