(2012-10-23)私は最新のUbuntu 12.04 LTSでも相変わらず下記の設定でLinux上でThumbSenseに似た操作を実践しています。
(2009-5-6)別ページにSSDを使用する際のTipsを記述しました。
- [F2キー] = 右クリック
- [F3キー] = 中クリック
- [無変換キー] = 左クリック
スクロールはSynapticsを使います。最近のディストリであれば自動設定されることが多いと思います。場合によってはgsynapticsやksynaptics等を自分でインストールし、/etc/hal/fdi/policy/shmconfig.fdiを設置する必要があったりします。←Ubnutu9.10では設置の必要がないことを確認しました。また一部のLinuxでSynapticsが使えないノートにはこの対処方法が使えるかもしれません。
元々Xには任意のキーにマウスのボタンと同じ機能を持たせられる機能が備わっているので、特別なソフトウェアをインストールする必要ありません。せいぜい場合によってはOS標準のxkbsetパッケージをインストールする必要があるくらいです。
設定手順(Ubuntu8.10以降,Fedora 10以降等のXOrg7.4以降を採用したディストリ用)
この場合は、デスクトップシステムがGNOMEであれKDEであれ、xkbsetパッケージをインストールした上で以下のようなスクリプトをログイン時に自動実行されるように「セッション」に登録するだけです。一応の手順としてはまずは手動でmousekey3.shを実行し、必要コマンドの存在確認や設定の効果を先に確認します。その後ログアウト・ログインして自動実行の動作確認をおこなえばいいと思います。
※セッション(ディストリによっては自動起動するアプリと訳されていることもある)はログイン時の自動実行に関する設定をおこなうアプリケーションで、通常どのディストリビューションでもメニューの中のユーザ毎の設定をおこなうアプリケーションが集まっている辺りにあります。必要であれば少し図が古いですがここを参考にして下さい。
[mousekey3.sh]
#!/bin/sh xmodmap -e 'keycode 102 = Pointer_Button1' xmodmap -e 'keycode 68 = Pointer_Button3' xmodmap -e 'keycode 69 = Pointer_Button2' xmodmap -e 'keycode 70 = F2' xset -r 102 xset -r 68 xset -r 69 # turn mousekeys on and expiry (timeout) off xkbset m xkbset exp =m
上をコピペしてファイルを作成するか、下のファイルをダウンロードして使用して下さい。もちろん実行属性を付けて下さい。
ダウンロード mousekey3.sh
上で記述しているキーコードはjp106キーボードである限り多分変更する必要はないと思いますが、必要であれば自分でxevコマンドで自分の環境でのキーコードを調べて書き変えて下さい。またxset -rの行は古いXOrgでは必須ですが、それ以外では実は必要ありません。
もし、ご自分が使用しているディストリビューションにxkbsetパッケージやxkbsetコマンドが存在しない場合もあきらめる必要はありません。小さなコマンドに過ぎないのでここからソースをダウンロードして簡単にコンパイルできます。もしくは他のディストリビューションからバイナリを持ってきても大概問題なく動作します。
(2010-5-4追記)Ubuntu 10.04 もこの手順で設定可能です。しかーし、もしかすると私の環境だけかもしれませんが、私の環境ではUbuntu 10.04のタッチパッド周辺に不具合があり、ポインタが飛びまくります。このページの手法を実践する場合には大問題です。早く直って欲しいです。
(2010-5-11追記)興味ある人にだけ伝えるメモ:以下の2種類の操作がUbuntu 10.04でマウスカーソルが飛ぶ操作です。「(1)タッチパッドに触れた状態で(エミュレートで生成された)マウスボタン(実際にはキー)を押す」。「(2)タッチパッドから手を離した状態で(エミュレートで生成された)マウスボタン(実際にはキー)を押下し、その状態を保ったままタッチパッドに触れる」。ただし一度目では飛びません。二度目以降で飛びます。また(実際の)マウスを一度使うと異常な状態がリセットされるらしく、その後は再び一度目とカウントすることになります。当方の手持ち環境で調べたところ、1450x1050(Mobility Radeon M6)環境だとカーソルが(-100,-30)くらい(斜め左上に)飛びます。1280x800(GMA 4500MHD)だと(-100,0)くらい(水平に左側に)飛びます。1280x768(852GM)環境だと画面右下端まで飛びます。全ての環境で発生するわけではありません。先の2環境で画面を1024x768に変更すると発生しなくなります。明らかに言えることはカーソル座標を再設定する際の誤りだということです。
設定手順(openSUSE 11.2等、この上↑の設定でうまくいかないディストリ用)
実はこちらの手順の方が正攻法です。上の手順では1ファイルだけで設定をおこなっていますが、こちらの手順では2ファイルを使用します。
.Xmodmapファイルをホームディレクトリ直下に置きます。設置後最初にログインした際に反映させるか問われます。もちろん反映させて下さい。
[~/.Xmodmap]
keycode 102 = Pointer_Button1 keycode 68 = Pointer_Button3 keycode 69 = Pointer_Button2 keycode 70 = F2
上をコピペしてファイルを作成するか、下のファイルをダウンロードして使用して下さい。
ダウンロード .Xmodmap
こちらの手順では自動実行させるアプリとしてmousekey-enable.shを使用して下さい。
[mousekey-enable.sh]
#!/bin/sh # turn mousekeys on and expiry (timeout) off xkbset m xkbset exp =m
上をコピペしてファイルを作成するか、下のファイルをダウンロードして使用して下さい。もちろん実行属性を付けて下さい。
ダウンロード mousekey-enable.sh
※openSUSEにはxkbsetコマンドがありません。私はいつもUbuntuからxkbsetコマンドを持ってきます。もちろんソースからコンパイルすることも簡単です。
設定手順(XOrg7.3以前を採用したディストリでGNOME以外もしくはGNOME2.22以降をデスクトップシステムとして採用している場合(Ubuntu8.04,openSUSE11.1も含まれる))
間違えないように念を押しておきますが、Ubuntu8.10以降,Fedora 10以降は上の項を見て下さい。
xkbsetパッケージをインストールした上で以下のようなスクリプトをログイン時に自動実行されるように「セッション」に登録して下さい。一応の手順としてはまずは手動でmousekey2.shを実行し、必要コマンドの存在確認や設定の効果を先に確認します。その後ログアウト・ログインして自動実行の動作確認をおこなえばいいと思います。
※セッション(ディストリによっては自動起動するアプリと訳されていることもある)はログイン時の自動実行に関する設定をおこなうアプリケーションで、通常どのディストリビューションでもメニューの中のユーザ毎の設定をおこなうアプリケーションが集まっている辺りにあります。必要であれば少し図が古いですがここを参考にして下さい。
[mousekey2.sh]
#!/bin/sh xmodmap -e 'keycode 131 = Pointer_Button1' xmodmap -e 'keycode 68 = Pointer_Button3' xmodmap -e 'keycode 69 = Pointer_Button2' xmodmap -e 'keycode 70 = F2' xset -r 131 xset -r 68 xset -r 69 # turn mousekeys on and expiry (timeout) off xkbset m xkbset exp =m
上をコピペしてファイルを作成するか、下のファイルをダウンロードして使用して下さい。もちろん実行属性を付けて下さい。
ダウンロード mousekey2.sh
上で記述しているキーコードはjp106キーボードである限り多分変更する必要はないと思いますが、必要であれば自分でxevコマンドで自分の環境でのキーコードを調べて書き変えて下さい。またxset -rの行は古いXOrgでは必須ですが、それ以外では実は必要ありません。
もし、ご自分が使用しているディストリビューションにxkbsetパッケージやxkbsetコマンドが存在しない場合もあきらめる必要はありません。小さなコマンドに過ぎないのでここからソースをダウンロードして簡単にコンパイルできます。もしくは他のディストリビューションからバイナリを持ってきても大概問題なく動作します。
設定手順(この上↑の手順でうまくいかないディストリ用)
上の手順では1ファイルだけで設定をおこなっていますが、こちらの手順では2ファイルを使用します。
.Xmodmapファイルをホームディレクトリ直下に置きます。設置後最初にログインした際に反映させるか問われます。もちろん反映させて下さい。
[~/.Xmodmap]
keycode 131 = Pointer_Button1 keycode 68 = Pointer_Button3 keycode 69 = Pointer_Button2 keycode 70 = F2
上をコピペしてファイルを作成して下さい。
こちらの手順では自動実行させるアプリとしてmousekey-enable.shを使用して下さい。
[mousekey-enable.sh]
#!/bin/sh # turn mousekeys on and expiry (timeout) off xkbset m xkbset exp =m
上をコピペしてファイルを作成するか、下のファイルをダウンロードして使用して下さい。もちろん実行属性を付けて下さい。
ダウンロード mousekey-enable.sh
設定手順(XOrg7.3以前を採用したディストリでGNOME2.20以前をデスクトップシステムとして採用している場合)
以下の手順を実行後、再ログインすると機能が使用できます。再ログインする前に効果を確認する場合は手動でmousekey.shを実行して下さい。
ここではFedora Core 5での設定例を紹介しますが、GNOME(※1)であれば、Linux、Solaris等、OSを問わず(※2)、本機能が使用できます。
※1: 私はGNOME2.4以降で本機能を使用しています。
※2: Solaris 10 でも動作確認しています。
(1)スクリプトの準備
以下の内容のスクリプトを用意しておきます。
ここでは$HOME/bin/mousekey.shに保存することにします。実行属性もつけておきます。
[mousekey.sh]
#!/bin/sh xmodmap -e 'keycode 131 = Pointer_Button1' xmodmap -e 'keycode 68 = Pointer_Button3' xmodmap -e 'keycode 69 = Pointer_Button2' xmodmap -e 'keycode 70 = F2' xset -r 131 xset -r 68 xset -r 69
(2)1のスクリプトをログイン時に自動実行するようにセッションに登録します
このようになります。
※GNOMEのバージョンによっては、オプションタブの「ログイン時にスプラッシュ・スクリーンを表示する」のチェックを外した方が良い場合があります。
(3)マウスキー機能を有効にします
再ログインすると、機能が使用できます。
運用上のTips
(2007-7-13追加) マウスキー機能は、本来は常用するものではないと想定されて設計されている為、何らかのキーボード関係の設定を変更した際には必ず勝手にオフになってしまいます。その場合は再度オンにした後、一旦ログアウトして下さい。この作業をおこなわないと、次に起動した時に再度オフになってしまいます。
本ページの手法は、(thumbsenseにも同じことが言えますが)良好な使い心地を持つタッチパッド(タッチパッドのボタンは除く)と同時に使ってこそ、大きな価値が生まれます。
SynapticsはALPS製タッチパッドにも対応しています。Synapticsを導入できる環境であれば是非とも、まずSynapticsを導入して下さい。そしてSynapticsを最適に調整して下さい。
調整が済んだSynapticsと本ページの手法を合わせると、私自身の主観ですが、外付けのマウスを越える使い勝手が得られます。
(2007-7-17追加) 本ページの方式を採用すると実質的に左手のパームレストが非常に広くなる為、左手が楽です。私自身はWindowsのthumbsenseを使っている時も本ページの方式の方がいいなあと思うほどです。
ファイルブラウザ(nautilus)上で複数ファイルを選択する際には左手の小指で(Aキーの横の)[ctrlキー]や[shiftキー]を押します。私自身としては良い使い勝手だと思います。
SynapticsタッチパッドがWindowsでは使えているのにLinuxでは使えない、一部のノート用の対処方法
カーネル2.6を採用しているLinux全てに共通の対処方法です。
rc.local(ディストリによってはboot.local)に以下のコードを記述するだけです。
DEVDIR=/sys/bus/serio/devices for i in 1 2 3 4 5 6 7 do if test -f "${DEVDIR}/serio$i/protocol"; then if test "`cat ${DEVDIR}/serio$i/protocol`" = "PS/2"; then echo -n "psmouse" > ${DEVDIR}/serio$i/drvctl echo -n "psmouse" > ${DEVDIR}/serio$i/drvctl break fi fi done
このページは、フレッド マシェルさんのXFree86 におけるマウスボタンのキーボードへのマッピング方法と、ThumbSenseを参考にして作成しました。
この場を借りてお礼を申し上げます。