XFree86 におけるマウスボタンの
キーボードへのマッピング方法

By Fred Maciel

English language version

はじめに

このべ一ジでは,マウスボタンのキーボードへのマッピング方法を説明します。この設定で,さもなければ役に立たない 漢字変換キーや Windows キーを上手く使ってキ一ボード操作を楽にすることができます。

動機について

ラップトップのマウスパッドでキーボードとマウスの間で腕を動かずに操作ができることは非常に便利だと思います。しか し,私のラップトップでは(この写真の とおりに)ボタンはキーボードと離れており不愉快です。一方,日本語キーボ一ドなので変換,無変換,ひらがな等のキ一があります。では,これらのキ一をマ スウボタンにすればと考えました。

Windows では私は Keylay を使ってこのマッピングをしました。 その結果,操作がかなり楽になった。まず,キーは近くにあるだけでなく,ボタンよリソフトです(手,手首などの障害も避けられるかもしれません)。そし て,ミドルボタンができました。そして,ボタンを押さなくて振動を弱めることで,ボタンの下にあるハ一ドディスクの寿命を延ばすかもしれません。

Windows ではボタンのマッピングがすぐできましたが,XFree86 では同じことが大変でした。X は“Mousekeys”という,マウスのボタンと移動をキーにマッピングするための機能がありますが,バグがあって,説明書がなく,設定が難しいです。 このべ一ジでは,Mousekeys の基本と設定方法を説明します。ボタンだけについて説明しますが,このページの最後に他の機能の説明へのリンクがあります。

Mousekeys について

X キーマッピングなので,期待どおりにキーにマッピングできるシンボル(keysyms)があリます。マウスボタンに関する主なシンボルは:

この他には普通のキーにマッピングにない,機能全体をオン/オフする「コントロール」があります。そしてタイムアウトも あります(Mousekeys をオフにすることを忘れて共用端末を離れたときに役に立ちます)。

設定

まず,ボタンにマッピンブしたいキーのキーコードを調べる必要があります(「xev」というアプリケ一ションで調べられ ます)。次の例に私のキーボードの変換,無変換,ひらがなキ一のキーコード(131,129,120)を使います。ところで, Windows とメニューキ一のキーコードは 115,116,117 だと思いますが,念のために確認して下さい。

Mousekeys は X Keyboard Extension (Xkb) の機能なので,XF86Config で Xkb がイネーブルされていることを確認して下さい(デフォールトはイネ一ブルです)。

次にキーのシンボルを設定します。私は .xinitrc で,xmodmap で次の行をファイルから読み出します。 これでキーをボタン,シフト+キーでボタンロック/アンロックをマッピングします。

keycode 131 = Pointer_Button1
keycode 129 = Pointer_Button2
keycode 120 = Pointer_Button3

上記の設定は,Mousekeys をオンにするときに有効になります。オン/オフコントロールはデフォールトで Shift-Numlock にマッピングされており,テストのためにこれらのキーでオン/オフできます。ログインしたときに自動的にオンにするた めにxkbsetFreeware AccessX のどれかをご利用できます。私は xkbset の方を使っているので,私の .xinitrc に次の行があります:

# turn mousekeys on and expiry (timeout) off
xkbset m
xkbset exp =m

ところで,私は Mousekeys をオンにしているので,デフォールトの設定(移動とボタンをキーパッドにマッピングすること)も有効になります。

バグ

XFree86 4.0.2 まで,ボタンにマッピングされたキーの入力繰り返し(オートリピート)をオフできないというバグがあります。これはクリックには問題になりませんが,ド ラッグを不可能にします。4.0.3 ではこのバグが修正されました。XFree 4.0.2 以前をご利用であれば,下記のようにシフト+キーを Pointer_Drag に設定して,ドラッグを可能にする対策があります(但し, メニューでのシフト+マウスクリックが難しくなります)。

keycode 131 = Pointer_Button1 Pointer_Drag1
keycode 129 = Pointer_Button2 Pointer_Drag2
keycode 120 = Pointer_Button3 Pointer_Drag3

Gnome 2.2 では,アクセシビリティ設定で Mousekeys をオンにすることができます。しかし,バグのため Slowkeys を一緒にオンにします。ちなみに, KDE の Control Center に Mousekeys の設定がありますが, まだテストしていません。

リンク

Mousekeys についての説明は“The X Keyboard Extension: Library Specification”にあります。XFree86 Mousekeys シンボルは /usr/X11R6/lib/X11/xkb/compat/mousekeys ファイルにあります。

Stephen Montgomery-Smith 氏のページは AccessX を説明します(これは X のユーザ補助機能であり,Mousekeys はその一つです)。そして本人は xkbset という MouseKeys,StickyKeys などの Xkb 機能を設定するプログラムを作成しました。そして,本人は 3.3.6 and 4.0.x に使える Mousekeys バグ修正があります。

Dan Linder 氏のページに AccessX の説明,Freeware AccessX(AccessX 機能を設定するプログラム)ともう一つの Mousekeys バグ修正があ ります。

Windows キーを有用にする方法についてのもう一つのページがあります。

感謝

Stephen Montgomery-Smith 氏に,XFree86 に採用されたバグ修正を感謝します。Dan Linder 氏と Ivan Pascal 氏に質問の答えなどを感謝します。

終わりに

上記の全ての内容に関してコメント,指摘や貢献がありましたら,ご連絡下さい

(home)