« [iPhone][Jailbreak]iPhone用のmicroSD Text Readerを作ってみた | Main | [iPhone][Jailbreak]SmartScreen用Widget、BookmarkLauncher »

2009.11.10

[NetWalker]窓使いの憂鬱をNetWalkerで動かす

前口上

NetWalkerのキーボードが議論を呼んでますね。
こんなキーボードでも使っていれば慣れますが、Linux ZaurusよろしくいろんなところでNetWalkerを使おうとすると、微妙に不満が出てきます。

親指タイプがしにくいことへの不満が一つ。
物理的な問題よりは、親指タイプには不可欠のmodifier keyのsticky key設定への不満の方が勝ります。

Ubuntu標準のアクセシビリティ機能(AccessX)として「スティッキー・キー」があり、これを有効にすれば一応役目を果たすのですが、二度押しするとロックがかかってしまい、大抵において意図しないところでロックが暴発してイライラすることになります。

「スティッキー・キー」はアクセシビリティの機能ですのでこれでいいわけですが、親指タイプ向きではないといえます。

非標準の、親指タイプ向きの挙動のsticky key化の手法はほかに無いものかと調べて、kiwanamiさんの「[Ubuntu]Sticky Shift / SandS」を試してみましたが、デフォルトではkbd_drv.soは使われておらず、最初から入っているkbd_drv.soを使うようにするだけでゴミが入力されまくる症状が出たので諦めました。

結果として理想に近いsticky keyを実現できたのが「私家版 窓使いの憂鬱 Linux & Mac (Darwin) 対応版」です。 「本家・窓使いの憂鬱」は元々Windows向けのキーボードドライバですが、Linux向けに移植されたものがあるのです。
arm linux向けのバイナリはありませんが、コンパイルしたらNetWalkerでも動きました。

「窓使いの憂鬱」の動作にはuinput.koというカーネルモジュールが必要ですが、これは安藤神の「NetWalkerのカーネルとローダブルモジュールのビルド」を見てビルドしました。

NetWalkerに「窓使いの憂鬱」を導入すると、ロックがかからないsticky keyのみならず、操作性改善の余地が大きくなります。

この辺のものをまとめたものをdebにしたので使ってみてください。

窓使いの憂鬱インストール

すいませんが無保証人柱向けということでお願いします。

3Gモデム対応ツールのインストール

3Gモデム対応ツール」をインストール。
無関係のように思えますが、これは実質カーネルの入れ換えで、窓使いの憂鬱で必要なuinput.koを使う上で、この手順が必要となります。ご自分でビルドしたカーネルに入れ替えている方は、そのカーネルで使えるuinput.koをお使いになればよいかと思います。

必要なパッケージのインストール

ターミナルで、以下のように入力して必要なパッケージをインストール。

sudo aptitude install libboost-regex1.34.1
wget http://bit.ly/1OHpUQ
sudo dpkg -i mayu-0.11-araneo_2.6.28.15_armel.deb

/etc/init.d/mayuの編集

/etc/init.d/mayu を編集し、「USER=」の後を自分のユーザ名に変更。

sudo gedit /etc/init.d/mayu

~/.mayuの用意

/usr/local/share/mayu/dot.mayu を~/.mayu としてコピー。

cp /usr/local/share/mayu/dot.mayu ~/.mayu

/etc/init.d/mayu実行時パスワード不要化

visudoコマンドで/etc/init.d/mayuの起動でパスワード入力を不要にする。

sudo visudo

末尾に以下を追記。

ユーザ名 ALL=(ALL) NOPASSWD: /etc/init.d/mayu

mayu自動実行に関する設定

/etc/gdm/PreSession/Defaultにmayuの自動起動を記述。

sudo gedit /etc/gdm/PreSession/Default

下記を/etc/gdm/PreSession/Defaultの末尾fiとexit 0の間に追記する。

sudo /etc/init.d/mayu start

動作テスト

~/.mayu末尾に以下のように追記します。

# Sticky Shift
mod !!shift
key *IC-S-LShift = &EditNextModifier(S-)
key *IC-S-RShift = &EditNextModifier(S-)

# Sticky Ctrl
mod control -= LCtrl
mod control -= RCtrl
mod !!control
key LCtrl = &EditNextModifier(C-)
key RCtrl = &EditNextModifier(C-)

# Sticky Alt
mod alt -= LAlt
mod alt -= RAlt
mod !!alt
key LAlt = &EditNextModifier(A-)
key RAlt = &EditNextModifier(A-)

以下のようにして窓使いの憂鬱をフォアグラウンドで起動。

sudo /etc/init.d/mayu loadtest

特に、不審なエラーメッセージが出ていなければ、別なターミナルなどで「Shift」、「A」と順次押し(同時押しではなく)してみる。大文字の「A」が入力されれば、一応動作OK。

ここで起動したmayuの終了はCtrl-Cでできます。

再起動してみて、当初から窓使いの憂鬱が起動して効能を発揮していればインストールは終了。

窓使いの憂鬱起動スクリプト(/etc/init.d/mayu)の使い方

スタート

sudo /etc/init.d/mayu start

ストップ

sudo /etc/init.d/mayu stop

再起動

sudo /etc/init.d/mayu restart

テスト

sudo /etc/init.d/mayu loadtest

start/stop/restartだと、設定でエラーが出てても分からないので、固まるまではさきほどの通り「sudo /etc/init.d/mayu loadtest」でテストしてCtrl-Cで停止、を繰り返すといいと思います。

カスタマイズ

後で記号入力等について追記予定。

設定は、本家のものが流用できます。非常に多機能。ただし、関数は使えないです。

窓使いの憂鬱 - README

SandS (Space and Shift)

Space単体では空白入力、Space+何か、ではSpaceがShiftであるかのように振る舞います。

mod shift += !!SPACE

AでCtrlも兼ねる

mod control += !!A

A押しながら何か、でCtrl+何か、になります。
A単体だと「A」のままです。欠点はCtrl+Aが入力できないこと。 Qに設定すれば、他との競合はあまり気にしないでいいかな。 もう一つの欠点はSticky Shift等との共存ができないらしいこと(情報募集)。

キーシーケンス

複数手順をまとめて入力できます。

keyseq $TEST = h e l l o Space w o r l d Left Left
key H = $TEST

上記の例ではHを押すと「hello world」と入力され、カーソルはrとlの位置に行くと思います。

参考サイト

以下の記事を参考にさせていただきました。 起動スクリプトはそのままパクりました。 ありがとうございます。

NetWalkerのカーネルとローダブルモジュールのビルド - Android Zaurusの日記

Ubuntu で窓使いの憂鬱使う方法 - 地獄の猫日記

Linux/Ubuntu/窓使いの憂鬱をインストール -俺の基地

パッケージの内容物について

後で追記。

|

« [iPhone][Jailbreak]iPhone用のmicroSD Text Readerを作ってみた | Main | [iPhone][Jailbreak]SmartScreen用Widget、BookmarkLauncher »