VAIO ノートのジョグダイヤルを Linux から使う

[NEW] jdmouse-2.0.0 was released!!!

You can get from jdmouse-2.0.0.tar.gz And formatted readme is here.

New features are


It seems to increase links from foreign language web pages.

This program is an usage example of sonypi driver. It can handle jogdial events and Fn keys, capture button... And it translates jogdial events into wheel mouse events. (New sonypi driver has this function, so you don't have to use this program for this purpose.)

This program has hard-coding parameters, less configurable by commandline or config file... Because I love KISS, Keep It Simple and Stupid.

If you were unsatisfied by this program, hack it. I agree this program and derived programs are distributed under GPL license.

HAVE FUN!

Links from Foreign Language Webs

白爛大雜燴
A blog written in Chinese. There is a patch for i810switch. (I don't understand what it is. sorry.)
Projects
He refered my program and made a new ruby script. He complained, "docs are in Chinese". But this web is written in Japanese, not Chinese. The word `Chinese' means `mysterious language', it is true for him :)

[NEW] jdmouse-2.0.0 リリース

気が向いたので作りなおしてみました. jdmouse-2.0.0.tar.gzから入手でき ます. あと,マニュアルはこちら

新機能としては

といったところです.

ちなみに私の VAIO U3 では

という感じにセットアップできています.


なお(仮名)さんのパッチが公開 こちらで公開されています.

linux-2.4.21 では jdmouse が不要に.
sonypi のオプションで useinput=1(これがデフォルト)を指定すると,ジョグダイヤルのシーケンスがホイールマウスのイベントに変換され,/dev/input/mice で参照できます. つまり,USB マウスが使用できる環境であれば,sonypi ドライバを組み込むだけでジョグダイヤルがホイールになります. なお,ジョグダイヤルのクリックは真ん中ボタン (button2) に割り当てられおり,ホイールマウスとのホイールと同様に使うことができます.

GTK 対応版を追加
mano 氏 <mano@ac3.mopera.ne.jp> 提供のものです.

[昔の NEW] jdmouse 新バージョンリリース!!
使われている方がポチポチとおられるようなので,いじってみました. 主な変更点は,

[昔の NEW] デバイスのマイナー番号について,追加. 多分,これで話のつじつまは合っていると思いますが,もし間違っていたら教えて下さい.

あと,C 言語版については,コピーライト表示もちょっと追加してみました. これで再配布には問題ないかなぁ.

ことの起こり

ある日,いつものごとく,linux kernel の追っ掛けにいそしんでいると, `Sony Vaio Programmable I/O Control Device support' なんていうエントリを発見. ドキュメントを読んでいると,ジョグダイヤルや CAPTURE ボタン・Fn+ファンクションキーなんかのイベントを読み取れるらしい.

というわけで, X 上でジョグダイヤルをホイールマウスのホイールのように使えるようにしてみました.

概要

  1. デバイスファイルからのジョグダイヤルのイベントを
  2. perl のフィルタプログラムでホイールの上下イベントに変換して
  3. FIFO に投げてやる
  4. X のほうでは,XInput 拡張でこのイベントを拾ってやる

ダウンロード

ドキュメント

linux/Documentation/sonypi.txt

カーネル付属のドキュメントです. sonypi デバイスドライバの設定は,詳しくはこちらを参考にしてください.

jdmouse の readme

詳しく書き直してみました.

カーネルの config

CONFIG_SONYPI=m

/etc/modules.conf

alias char-major-10-250 sonypi
options sonypi minor=250 camera=1

他のサイトに jdmouse の記述について「デバイスファイルのマイナー番号は 63」というのがありますが,それはおそらく modules.conf (と depmod)で,minor= 設定がされていないものと思われます. 私としては,250 〜 255 のいずれかの値に設定することをお勧めします. どのマイナー番号が使われているかは,/proc/misc を参照して下さい(もちろん,空いている番号を指定するのですよ).

sonypi.c のソースを見る限りでは,minor= の設定がない場合は,マイナー番号はダイナミック割り当てを用いるようです. このため,明示的にマイナー番号が割り当てられない場合は,カーネルのバージョンアップ等で別のマイナー番号が割り当てられることがあるかもしれません.

と,脅しをかけてみたけど,それほど心配するほどのことでもないと思います. 「カーネルをバージョンアップしたら動かなくなった」とかいう場合は,こういうあたりを参考に.

デバイスファイルと FIFO の作成

mknod /dev/sonypi c 10 250 と実行して,デバイスファイルを作成してやります.

あと,mkfifo /dev/jdmouse と実行して,FIFO も作成してやります.

XF86Config の設定

XFree86 4.x の場合です. まず,ServerLayout セクションに 1 行追加してやります.

Section "ServerLayout"
       …
       InputDevice    "Mouse99" "SendCoreEvents"        # この行追加
       …
EndSection

あと,InputDevice セクションが並んでるあたりに以下のエントリを追加してやります.

Section "InputDevice"
       Identifier  "Mouse99"
       Driver      "mouse"
       Option      "Device" "/dev/jdmouse"
       Option      "Protocol" "IMPS/2"
       Option      "ZAxisMapping" "4 5"
       Option      "AlwaysCore"
EndSection

sonypi ドライバの変更

私の C1XE では,CAPTURE ボタン深押し→半離しで,なぜか SONYPI_EVENT_PKEY_P1 というイベントが発生してしまう. で,つらつらっとドライバのソースを眺めていたら,この原因がわかったので,修正.

というわけで,パッチをこしらえてみた. linux-2.4.19 用です.

まぁ,とりあえず,そういう,その程度の不具合なので,パッチを当てなくても命に別状もないし,jdmouse 側でも対処はしているのだが,気になる方はどうぞ.

リンク

S-JOG
ジョグダイヤルハンドラ. こっちのほうがラウンチメニューとか,ボリューム調整のポップアップとか出て,結構華やか. jdmouse の方が,プログラムサイズの面では圧倒的に軽いので…と負け惜しみしてみる.
VAIO PCG-SRX3E/BD で Linux
どうも見ていると,マイナー番号 63 番説の震源地はここなのかなぁ. ま,いっか.
Kondara MNU/Linux 2.1 on Sony VAIO SRX7
前の会社のバイトくん(から正社員になってた)wakaski くん
nao_wada の日記
スラッシュドット ジャパンの日記スペース.

Linux のお部屋のもくじ
いまいくんのページのもくじ
2005 年 3 月 24 日更新
imai@jr0bak.homelinux.net