plamo5.2->X window

X window

ハードウェア構成

大雑把ですが、以下のような感じです

Xorg

設定ファイル(/etc/X11/xorg.conf)を生成しておかなくても $startx で起動することができます。 ただし、キーボード英語キーボード扱いのままだったりするので、xfplamconfig を使って設定ファイルを手作業で作っておきます。

# xfplamoconfig

radeon HD 3450

xorg.confを xfplamconfigで生成すると、ディスプレイドライバは ati になりました。

最初から入っているドライバのうち、ati 以外に radeonドライバ、radeonhdドライバが使えるらしいです。 しかし、Xのログ(/var/log/Xorg.0.log)を見ると、atiドライバを指定したときも結果としてradeonドライバを使っているようです。

従って、xorg.conf では、radeonドライバを指定するようにしました。

Section "Device"
        ...
        # Driver      "ati"
        Driver      "radeon"
        # Driver      "radeonhd"
        ...
EndSection

Monitor

xorgのmonitorセクションです。1920x1200の液晶ディスプレイです。

Section "Monitor"
        Identifier   "Monitor0"
        HorizSync    31.5 - 137.0
        VertRefresh  54.5 - 75.5
	Option "DPMS"

EndSection

Modeline行は、無くてもよいようです。

fluxbox

使ってみました

参考ページは こちら[fluxbox文書]。 設定ファイルの書式なども載ってます。

ショートカットキー

~/.fluxbox/keys を書き換えます

ルートメニュー

最初にfluxboxを立ち上げるとき(or インストールの時(?))にシステムの中を検索して、使えそうなプログラムを登録してくれるみたいです。 このメニューを元に取捨選択して書き換えてあげればいいと思います。

~/.fluxbox/menu を書き換えます

壁紙メニュー

以下のようにすると、directory 内のファイルをメニュー内で列挙してくれて、選ぶと壁紙にしてくれるようになります。

[wallpapermenu](directory){command}

ルートメニューに画像ファイルのファイル名をズラリと列挙されても困るので、 サブメニューを作ってこのなかで列挙されるようにします。

[submenu] (wallpaper)
      [wallpapermenu] (~/work/images/wallpaper) {}
[end]

壁紙

$ fbsetbg コマンドを使います

起動時に壁紙を設定する

~/.fluxbox/init にコマンドを登録します。 ...
session.screen0.rootCommand:
...
とあるところに、fbsetbg -l コマンドを登録します。 ...
session.screen0.rootCommand: fbsetbg -l
...

テーマの壁紙を使わない

~/.fluxbox/initで壁紙を設定してもテーマの壁紙が優先されるので、各テーマの壁紙設定を無効にします。

~/.fluxbox/overlay でテーマの壁紙設定を強制的に上書きします background: none

壁紙の設定が保存されない

$ fbsetbg -l で前回の壁紙を貼ってくれるはずなのですが、うまくいきませんでした。

fbsetbg コマンドはシェルスクリプトなのですが、普通に壁紙を貼ったときには ~/.fluxbox/lastwallpaper に記録を残すように出来ています。 $ fbsetbg -l は、この記録から同じ壁紙を読み込みます。

この記録は、fbsetbgコマンドから呼び出している壁紙を貼るコマンドの返り値を見て、エラーでないと判断された時に記録を残すようになっています。

壁紙を貼るコマンドは、fbsetbgが持っているリストから使えるものを適当に選んで使ってくれるのですが、結果として選ばれたコマンド( display )の返り値が不味かったらしく、記録を残してくれていませんでした。

リストを見ると、別途インストール済みのqivやxvが挙げられていたので、リストからdisplayを外してしまいました。

修正前 wpsetters="${wpsetters:=Esetroot wmsetbg feh hsetroot chbg display qiv xv xsri xli xsetbg}" # broken icewmbg'
修正後 wpsetters="${wpsetters:=Esetroot wmsetbg feh hsetroot chbg qiv xv xsri xli xsetbg}" # broken icewmbg, display'

タブレットを使う

plamo 5.2では初期状態のままでタブレットが使える状態になっていますので、マウスの代わり程度なら何もすることはありません。

初期設定ではマウスエミュレーションの扱いになっていますが、もう少し設定してあげることで筆圧機能だとか、gimpで消しゴム機能だとかを使うことができます。

手元で使っているのは、wacom CTE-650 (BAMBOO)です。 A6サイズのCTE-450 でも同じだと思います。 また、旧製品のFavo(CTE-640, CTE-450)でもほぼ同じだと思います。 (英語圏での製品名は graphireです。udevinfoで得られる識別名(ATTRS{name})が、graphire になります。)

カーネルでの認識

カーネルに認識されていると、起動時にメッセージが出ます。dmesgで確認してみましょう。

$ dmesg | grep acom
[    4.008933] usb 4-1: Manufacturer: Wacom Co.,Ltd.
[    4.016262] input: Wacom BambooFun 6x8 as /devices/pci0000:00/0000:00:12.1/usb4/4-1/4-1:1.0/input/input14
[    4.019005] usbcore: registered new interface driver wacom

デバイス名を分ける

初期状態では、マウスとタブレットが共に /dev/psaux というデバイス名を共用しています。

ただし、Xのログ( /var/log/Xorg.log )を覗いてみると、ちゃんと別々のデバイスとして認識されていることがわかります。

...
[ 8372.537] (II) config/udev: Adding input device Wacom BambooFun 6x8 (/dev/input/event11)
[ 8372.537] (II) config/udev: Adding input device Wacom BambooFun 6x8 (/dev/input/mouse0)
[ 8372.538] (II) config/udev: Adding input device ATEN DVI DL KVMP (/dev/input/mouse1)
※ KVM切替器を使っているため、マウスは KVMP になっています。
...

例えば # cat /dev/input/event11 を実行して、タブレットを操作すると何やら出力されて「反応してるんだな」ということがわかります。

この event11 や mouse0 等のデバイス名は抜き差しすると変わってしまうことがあるので、 デバイスファイル名を常に同じにするように、udevで設定します。

/etc/udev/rules.d/ に 10-local.rulesと云うファイルを作成します。 中には以下のようなテキストを書き込んでおきます。

#  Wacom tablet
DRIVERS=="wacom", KERNEL=="event*", SYMLINK+="wacom"
# kvm-mouse
KERNEL=="mouse*", ATTRS{name}=="*KVM*", SYMLINK+="kvmmouse"

今回は、タブレットを/dev/wacom、マウスを/dev/kvmmouseに割り当てるように指定しています。

※udevについては こちら とか、 こちら

udevを介さない時点では、/dev/input/event?のどれか(?は数字)であって、起動してみないとどれになるかわからない(デバイスの抜き差しをしない限りは、毎回同じ値になるみたいですが)状態ですが、。 udevを設定することでデバイスファイルの名前を指定できるので、つねに同じデバイスファイル名を介してアクセス出来ることになります。

なお、/dev/input/by-id/ 以下にも、わかりやすい(若干ハードウェア寄りの)名前のついたシンボリックリンクも生成されているので、event? の何れが、マウスだったりタブレットだったりと言うのは判別しやすくなっています(これもudevで生成されています)。

Xのドライバを組み込む

/usr/lib/xorg/modules/input/ に wacom_drv.so が導入済みになっています。

とりあえず xorg.conf を設定してみます。

(関連コマンドがセットアップされていないようです。後でセットアップしなおします)

Xの設定

xorg.conf内のServerLayoutセクションにinputdeviceを追加します。

InputDevice "Stylus0" "SendCoreEvents"
InputDevice "Eraser0" "SendCoreEvents"
InputDevice "Cursor0" "SendCoreEvents"

stylusがペン、eraserが消しゴム、cursorがマウス代用機能です

同じく xorg.conf に上記に対応するInputDeviceセクションを追加します。


Section "InputDevice"

    #Option "TopX" "150"
    #Option "TopY" "200"
    #Option "BottomX" "16500"
    #Option "BottomY" "11950"
	Identifier  "Stylus0"
	Driver      "wacom"
	Option	    "Type" "stylus"
	Option	    "Device" "/dev/wacom"
	Option	    "Mode" "Absolute"
	Option	    "KeepShape" "Off"
    #Option "USB" "On"
EndSection

Section "InputDevice"

    #Option "TopX" "150"
    #Option "TopY" "200"
    #Option "BottomX" "16500"
    #Option "BottomY" "11950"
	Identifier  "Eraser0"
	Driver      "wacom"
	Option	    "Type" "eraser"
	Option	    "Device" "/dev/wacom"
	Option	    "Mode" "Absolute"
	Option	    "KeepShape" "Off"
    #Option "USB" "On"
EndSection

Section "InputDevice"

    #Option "TopX" "150"
    #Option "TopY" "200"
    #Option "BottomX" "16500"
    #Option "BottomY" "11950"
	Identifier  "Cursor0"
	Driver      "wacom"
	Option	    "Type" "cursor"
	Option	    "Device" "/dev/wacom"
	Option	    "Mode" "Relative"
	Option	    "KeepShape" "Off"
    #Option "USB" "On"
EndSection

また、udevの設定でマウスのデバイスファイルを指定したので、これも反映させます。


Section "InputDevice"
	Identifier  "Mouse0"
	Driver      "mouse"
	Option	    "Protocol" "IMPS/2"
	#Option	    "Device" "/dev/paaux"
	Option	    "Device" "/dev/kvmmouse"
        #Option      "Emulate3Buttons"
        #Option      "Emulate3Timeout" "50"
        #Option      "Resolution" "256"
	Option	    "ZAxisMapping" "4 5"
EndSection

GIMPでの設定

[環境設定]→[入力デバイス]→[追加された入力デバイスの設定]で設定します。

ここで、stylus0, eraser0 等が出てこなかったら、xinputが有効になっていないということのようです。

plamo5.2でセットアップされる gtk+2 が対応していないようで、gimpでも筆圧感知が使えません (xinputを有効化せずにビルドしていると思われます)。 筆圧感知が使えると、タブレットの消しゴム機能も使えたりして便利なのですが、、、

gtk+2の再セットアップ

gtk+2 をビルドしてセットアップし直します。

実は、gtk+2をビルドし直さなくても、$ xinput enable で済んだりするんじゃないかという気が。。。どうなんでしょう?

依存関係が難しそうなので、同じバージョンのものを入れることにします。 まずは、gtk+2 のバージョンを調べてみます。

$ pkg-config --modversion gtk+-2.0

で、同バージョンのソースアーカイブを落としてきてビルド。 xinputを有効にするオプションをつけます。

$ ./configure --with-xinput=yes
$ make
# make install
# ldconfig

※ ところが、make の途中でエラーになってしまいました。

エラーメッセージを見て追いかけてみると、ドキュメント生成のところで、db2htmlコマンドの仕様が違っているようで、 $ db2html xxxx.sgml で 大量のhtmlファイルが生成されるのですが、plamo5.2 は *.htmlをその場に展開してしまう仕様。一方、gtk2の想定しているのは、xxxxディレクトリを作ってその中に*.htmlを展開される想定になっているようです。

今回はドキュメント生成の必要がないので、この処理を飛ばすことにしました。

./configure のオプションが見つからなかったのですが、./cofigure のなかで db2htmlコマンドの有無を判定して、環境変数HAVE_DOCBOOK をスイッチすることで、ドキュメント生成(する|しない)ようになっていたので、環境変数を強制上書きすることでドキュメント生成を回避しました。

(configure(抜粋))
...
##if $DB2HTML; then
#  HAVE_DOCBOOK_TRUE=
#  HAVE_DOCBOOK_FALSE='#'
##else
  HAVE_DOCBOOK_TRUE='#'
  HAVE_DOCBOOK_FALSE=
##fi
...

調整

調整用コマンド類は別途導入する必要があるみたいです。 (今のところ、上記の設定で事足りているので使っていません。

linux wacom project で配布されているドライバに同梱されています。 アーカイブを解凍して、何もオプションを付けずにビルドすると、調整用コマンドが生成されます。 (wacom_drv.soも生成されます。)

おもな設定コマンドは以下のもの

xidumpは廃止されたようです

xsetwacomの使いかたは、とりあえず こちらを参照。

筆圧調整はこんな感じ

$ xsetwacom set stylus PressCurve 0 15 80 100
らしいのですが、具体例は、実際に使ったら書きます

udevの設定について

udevinfoコマンド(# udevadm info)で調べて ruleファイルを書きます。

ruleファイルのテストは udevtest(# udevadm test [class])を使います。

タブレット

タブレットはKVM切替器を介さずに、直接接続しています。

タブレットからの入力は、dmesgにそれらしい表示があるので、参考にします。


# udevadm info -a -p /sys/class/input/event12

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:12.1/usb4/4-1/4-1:1.0/input/input15/event12':
    KERNEL=="event12"
    SUBSYSTEM=="input"
    DRIVER==""

  looking at parent device '/devices/pci0000:00/0000:00:12.1/usb4/4-1/4-1:1.0/input/input15':
    KERNELS=="input15"
    SUBSYSTEMS=="input"
    DRIVERS==""
    ATTRS{name}=="Wacom BambooFun 6x8"
    ATTRS{phys}==""
    ATTRS{uniq}==""
    ATTRS{properties}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:12.1/usb4/4-1/4-1:1.0':
    KERNELS=="4-1:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="wacom"
    ATTRS{bInterfaceClass}=="03"
    ATTRS{bInterfaceSubClass}=="01"
    ATTRS{bInterfaceProtocol}=="02"
    ATTRS{bNumEndpoints}=="01"
    ATTRS{supports_autosuspend}=="1"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{bInterfaceNumber}=="00"

  looking at parent device '/devices/pci0000:00/0000:00:12.1/usb4/4-1':
    KERNELS=="4-1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{devpath}=="1"
    ATTRS{idVendor}=="056a"
    ATTRS{speed}=="12"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{busnum}=="4"
    ATTRS{devnum}=="2"
    ATTRS{configuration}==""
    ATTRS{bMaxPower}=="80mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="80"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="0"
    ATTRS{bcdDevice}=="0116"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{version}==" 2.00"
    ATTRS{urbnum}=="18318"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="Wacom Co.,Ltd."
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="0018"
    ATTRS{bDeviceClass}=="00"
    ATTRS{product}=="CTE-650"

  looking at parent device '/devices/pci0000:00/0000:00:12.1/usb4':
    KERNELS=="usb4"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{devpath}=="0"
    ATTRS{idVendor}=="1d6b"
    ATTRS{speed}=="12"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{authorized_default}=="1"
    ATTRS{busnum}=="4"
    ATTRS{devnum}=="1"
    ATTRS{configuration}==""
    ATTRS{bMaxPower}=="0mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="3"
    ATTRS{bcdDevice}=="0312"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{serial}=="0000:00:12.1"
    ATTRS{version}==" 1.10"
    ATTRS{urbnum}=="38"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="Linux 3.12.5-plamoSMP ohci_hcd"
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="0001"
    ATTRS{bDeviceClass}=="09"
    ATTRS{product}=="OHCI PCI host controller"

  looking at parent device '/devices/pci0000:00/0000:00:12.1':
    KERNELS=="0000:00:12.1"
    SUBSYSTEMS=="pci"
    DRIVERS=="ohci-pci"
    ATTRS{irq}=="16"
    ATTRS{subsystem_vendor}=="0x105b"
    ATTRS{broken_parity_status}=="0"
    ATTRS{class}=="0x0c0310"
    ATTRS{consistent_dma_mask_bits}=="32"
    ATTRS{dma_mask_bits}=="32"
    ATTRS{local_cpus}=="ff"
    ATTRS{device}=="0x4398"
    ATTRS{enable}=="1"
    ATTRS{msi_bus}==""
    ATTRS{local_cpulist}=="0-7"
    ATTRS{vendor}=="0x1002"
    ATTRS{subsystem_device}=="0x0e0f"
    ATTRS{d3cold_allowed}=="0"

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""

ATTRS{name}=="Wacom BambooFun 6x8" とあるので、タブレットを受けていることがわかります。

ここでもう一つ

こちらも Wacom BambooFun 6x8 とありますので、タブレットからの入力を受けています。先ほどと異なるのは、出力がマウスエミュレーションとなっていることです。


# udevadm info -a -p /sys/class/input/mouse0/

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:12.1/usb4/4-1/4-1:1.0/input/input15/mouse0':
    KERNEL=="mouse0"
    SUBSYSTEM=="input"
    DRIVER==""

  looking at parent device '/devices/pci0000:00/0000:00:12.1/usb4/4-1/4-1:1.0/input/input15':
    KERNELS=="input15"
    SUBSYSTEMS=="input"
    DRIVERS==""
    ATTRS{name}=="Wacom BambooFun 6x8"
    ATTRS{phys}==""
    ATTRS{uniq}==""
    ATTRS{properties}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:12.1/usb4/4-1/4-1:1.0':
    KERNELS=="4-1:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="wacom"
    ATTRS{bInterfaceClass}=="03"
    ATTRS{bInterfaceSubClass}=="01"
    ATTRS{bInterfaceProtocol}=="02"
    ATTRS{bNumEndpoints}=="01"
    ATTRS{supports_autosuspend}=="1"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{bInterfaceNumber}=="00"

  looking at parent device '/devices/pci0000:00/0000:00:12.1/usb4/4-1':
    KERNELS=="4-1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{devpath}=="1"
    ATTRS{idVendor}=="056a"
    ATTRS{speed}=="12"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{busnum}=="4"
    ATTRS{devnum}=="2"
    ATTRS{configuration}==""
    ATTRS{bMaxPower}=="80mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="80"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="0"
    ATTRS{bcdDevice}=="0116"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{version}==" 2.00"
    ATTRS{urbnum}=="18318"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="Wacom Co.,Ltd."
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="0018"
    ATTRS{bDeviceClass}=="00"
    ATTRS{product}=="CTE-650"

  looking at parent device '/devices/pci0000:00/0000:00:12.1/usb4':
    KERNELS=="usb4"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{devpath}=="0"
    ATTRS{idVendor}=="1d6b"
    ATTRS{speed}=="12"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{authorized_default}=="1"
    ATTRS{busnum}=="4"
    ATTRS{devnum}=="1"
    ATTRS{configuration}==""
    ATTRS{bMaxPower}=="0mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="3"
    ATTRS{bcdDevice}=="0312"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{serial}=="0000:00:12.1"
    ATTRS{version}==" 1.10"
    ATTRS{urbnum}=="38"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="Linux 3.12.5-plamoSMP ohci_hcd"
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="0001"
    ATTRS{bDeviceClass}=="09"
    ATTRS{product}=="OHCI PCI host controller"

  looking at parent device '/devices/pci0000:00/0000:00:12.1':
    KERNELS=="0000:00:12.1"
    SUBSYSTEMS=="pci"
    DRIVERS=="ohci-pci"
    ATTRS{irq}=="16"
    ATTRS{subsystem_vendor}=="0x105b"
    ATTRS{broken_parity_status}=="0"
    ATTRS{class}=="0x0c0310"
    ATTRS{consistent_dma_mask_bits}=="32"
    ATTRS{dma_mask_bits}=="32"
    ATTRS{local_cpus}=="ff"
    ATTRS{device}=="0x4398"
    ATTRS{enable}=="1"
    ATTRS{msi_bus}==""
    ATTRS{local_cpulist}=="0-7"
    ATTRS{vendor}=="0x1002"
    ATTRS{subsystem_device}=="0x0e0f"
    ATTRS{d3cold_allowed}=="0"

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""

マウスエミュレーションでは、本来のタブレットの使い方になりません。

つまり、マウスエミュレーション(/dev/input/mouse0)ではなく、タブレットのイベント出力(/dev/input/event12)が /dev/wacom になるようにルールを書く必要があるのです。

このため、タブレットに関する ルールの要点は次のようにしました。

  1. DRIVERS=="wacom"(wacomなのでタブレット)
  2. KERNEL=="event*"(mouseでなくeventを選ぶ)
  3. デバイスファイル名は wacom

.ruleの内容は、 DRIVERS=="wacom", KERNEL=="event*", SYMLINK+="wacom" としました。

マウス

一方、このマウスエミュレーションの出力が /dev/psauxに流れているようなので、マウスの動きだけを反映するデバイスファイルが必要になりました。

マウスに関しても/dev/input/event?/dev/input/mouse?の2つが使えるのですが、マウスとして使うので、/dev/input/mouse?が選ばれる必要があります。

KVM切替器

マウスはKVM切替器を介していますが、本体にはUSB接続するので、二つのモードを持っています。

このため、マウスは一つでも複数のデバイスファイルが生成されます。

切替えによりマウスの切断が発生すると、Xのマウスカーソルからマウスが切り離される(デバイスファイルが消える?)のですが、再切替えでマウスの接続が発生してもマウスカーソルには接続できず操作できないままになってしまいました。

このため、エミュレーションマウスを選んでデバイスファイルへのリンクを作成する必要がありました。

このため、.ruleの内容は、次のようにしました。

KERNEL=="mouse*", ATTERS{name}=="*KVM*", SYMLINK+="kvmmouse"

また、USBマウス + モード(B)の状態で起動すると、エミュレーションマウスのデバイスファイルが存在しないことになります。手堅くトラブルを回避するには、PS/2マウスを使用するのがよいでしょう。

udevinfo の出力を示します。


# udevadm info -a -p /sys/class/input/mouse1/

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3.4/1-3.4.1/1-3.4.1:1.1/input/input17/mouse1':
    KERNEL=="mouse1"
    SUBSYSTEM=="input"
    DRIVER==""

  looking at parent device '/devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3.4/1-3.4.1/1-3.4.1:1.1/input/input17':
    KERNELS=="input17"
    SUBSYSTEMS=="input"
    DRIVERS==""
    ATTRS{name}=="ATEN DVI DL KVMP"
    ATTRS{phys}=="usb-0000:00:12.2-3.4.1/input1"
    ATTRS{uniq}==""
    ATTRS{properties}=="0"

  looking at parent device '/devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3.4/1-3.4.1/1-3.4.1:1.1':
    KERNELS=="1-3.4.1:1.1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usbhid"
    ATTRS{bInterfaceClass}=="03"
    ATTRS{bInterfaceSubClass}=="01"
    ATTRS{bInterfaceProtocol}=="02"
    ATTRS{bNumEndpoints}=="01"
    ATTRS{supports_autosuspend}=="1"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{bInterfaceNumber}=="01"

  looking at parent device '/devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3.4/1-3.4.1':
    KERNELS=="1-3.4.1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{devpath}=="3.4.1"
    ATTRS{idVendor}=="0557"
    ATTRS{speed}=="12"
    ATTRS{bNumInterfaces}==" 2"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="6"
    ATTRS{configuration}==""
    ATTRS{bMaxPower}=="100mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="0"
    ATTRS{bcdDevice}=="0100"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{version}==" 1.10"
    ATTRS{urbnum}=="46732"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="ATEN"
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="2213"
    ATTRS{bDeviceClass}=="00"
    ATTRS{product}=="DVI DL KVMP"

  looking at parent device '/devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3.4':
    KERNELS=="1-3.4"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{devpath}=="3.4"
    ATTRS{idVendor}=="0557"
    ATTRS{speed}=="12"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="5"
    ATTRS{configuration}==""
    ATTRS{bMaxPower}=="100mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="4"
    ATTRS{bcdDevice}=="0100"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{version}==" 1.10"
    ATTRS{urbnum}=="28"
    ATTRS{ltm_capable}=="no"
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="8021"
    ATTRS{bDeviceClass}=="09"

  looking at parent device '/devices/pci0000:00/0000:00:12.2/usb1/1-3':
    KERNELS=="1-3"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="01"
    ATTRS{devpath}=="3"
    ATTRS{idVendor}=="0409"
    ATTRS{speed}=="480"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="2"
    ATTRS{configuration}==""
    ATTRS{bMaxPower}=="100mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="4"
    ATTRS{bcdDevice}=="0100"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{version}==" 2.00"
    ATTRS{urbnum}=="29"
    ATTRS{ltm_capable}=="no"
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="005a"
    ATTRS{bDeviceClass}=="09"

  looking at parent device '/devices/pci0000:00/0000:00:12.2/usb1':
    KERNELS=="usb1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{devpath}=="0"
    ATTRS{idVendor}=="1d6b"
    ATTRS{speed}=="480"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{authorized_default}=="1"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="1"
    ATTRS{configuration}==""
    ATTRS{bMaxPower}=="0mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="6"
    ATTRS{bcdDevice}=="0312"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{serial}=="0000:00:12.2"
    ATTRS{version}==" 2.00"
    ATTRS{urbnum}=="109"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="Linux 3.12.5-plamoSMP ehci_hcd"
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="0002"
    ATTRS{bDeviceClass}=="09"
    ATTRS{product}=="EHCI Host Controller"

  looking at parent device '/devices/pci0000:00/0000:00:12.2':
    KERNELS=="0000:00:12.2"
    SUBSYSTEMS=="pci"
    DRIVERS=="ehci-pci"
    ATTRS{irq}=="17"
    ATTRS{subsystem_vendor}=="0x105b"
    ATTRS{broken_parity_status}=="0"
    ATTRS{class}=="0x0c0320"
    ATTRS{companion}==""
    ATTRS{consistent_dma_mask_bits}=="32"
    ATTRS{dma_mask_bits}=="32"
    ATTRS{local_cpus}=="ff"
    ATTRS{device}=="0x4396"
    ATTRS{uframe_periodic_max}=="100"
    ATTRS{enable}=="1"
    ATTRS{msi_bus}==""
    ATTRS{local_cpulist}=="0-7"
    ATTRS{vendor}=="0x1002"
    ATTRS{subsystem_device}=="0x0e0f"
    ATTRS{d3cold_allowed}=="1"

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""

tsushiro.s, 2003-2014. [→戻る]