X11-big-cursor MINIHOWTO X WINDOW SYSTEM でマウスカーソルを大きくして使う方法 Joerg Schneider V2, 1997 年 8 月 11 日 宮田 忍 (Shinobu MIYATA) 1997 年 11 月 19 日 このドキュメントは X window system 上のマウスカーソルを拡大して使う方 法を記述しています。 ______________________________________________________________________ 目次 1. 導入 2. この文章について 3. 方法 4. 注意と限界 5. 技術的議論 6. さらにマウスカーソルを見やすくする、その他のアイデア 7. 関連した情報 7.1 フォントサーバの使い方 7.1.1 フォントサーバのセットアップ 7.2 フォントの bdf ソースの入手法 ______________________________________________________________________ 1. 導入 普通の X マウスカーソルが追いづらい人々にはそれなりの理由があります: o 解像度の低い LCD のノート型パソコンで X を使う方 o 普通のモニタで、例えば 1600x1280 のような高解像度を使う方 o 普通のハードウェアですら視覚的に問題のある方 どの場合に対してもマウスカーソルを拡大して使えると助かるでしょう。理想 としては、この作業はどのマウスカーソルも自動的に拡大する、一つの X の プログラムによってなされるべきでしょう。 私の知識においては、そのようなユーティリティは単純には書けません。とい うのも、X のプロトコルにはマウスカーソルを追跡するような機能が備わって いないからです。以下の ``技術的議論'' において詳細を述べるとします。 しかしながら、もし、多少一般的でないゴール設定をするならば、以下の方法 が考えられます: カーソルフォントのなかに、普通のマウスカーソルのセットがあります (xfd -fn cursor とすることで、見ることが出来ます)。ほとんどのプログラムはこ れらを使いますので、拡大化したものをこれらと置き換える、というのが基本 的な考え方です。 2. この文章について この MINIHOWTO は 私の、視覚的に問題のある同級生の一人に、 X 上のマウ スカーソルの拡大化を尋ねられたことから書き始めたものです。まず方法を見 つけて、初版を仕上げました。ここに記述されている方法論は良く知られては いないようですので、Linux に全く特化していませんが Linux MINIHOWTO と いう形でまとめ、公開しました。その他の MINIHOWTO は Linux Documentation Project (LDP) に見る ことが出来ます。 この文章のマスター は SGML/linuxdoc 形式で管理されています。このお蔭で、 自動的に、html、text、 LaTeX、DVI、PostScript、GNU info の各形式に容易 に変換されて提供されています (master とおなじディレクトリに置かれてい ます)。 この文章の日本語訳は宮田 忍 が行な い、 に置かれて います。 3. 方法 以下に詳細を示します。もし bdfresize パッケージをコンパイルするのを避 けたければ、Step 3 を飛ばし、拡大化したフォントを、作る代わりに the Net から入手することも出来ます。 1. カーソルフォントのソース、cursor.bdf を例えば のような X の配布先より入手する。(もしそこになければ archie で探すか、 my copy から 入手可能です。) 2. bdfresize パッケージを、例えば、 (や my copy ) から入手しインストールする。 zcat bdfresize-1.4.tar.Z | tar xf - cd bdfresize-1.4 xmkmf make Linux 上ならば、 make CCOPTIONS='-include /usr/include/bsd/bsd.h' clean all とする必要があるかもしれません。 3. 拡大化したカーソルフォント用のディレクトリをつくり、インストールす る。 (以下の例では拡大化ファクタを2として行ないます) mkdir $HOME/fonts bdfresize -f 2 cursor.bdf | bdftopcf >$HOME/fonts/cursor2.pcf mkfontdir $HOME/fonts 拡大化ファクタ 1.5、2、2.5、3、4、5、6、7、8、そして 16のカーソルフォ ント を作り ましたので、bfdresize を使いたくない場合には ダウンロードして $HOME/fontsに置いて下さい。 4. 自分の .xinitrc もしくは .xsession ファイルの内容を変更する: (カー ソルを使う) X クライアントすべてに先んじて以下の命令が実行されるよ うにします。 xset +fp $HOME/fonts xsetroot -cursor_name X_cursor 5. X のセッションから抜け、X を再起動する。 以上です。--これでマウスカーソルがすべて 2 倍になったはずです。 4. 注意と限界 o X サーバ、特にハードウェアにマウスカーソルを依存している場合には、 マウスカーソルを拡大化できる大きさに限度があるかも知れません。それ ら以外ならばそのような限界はありません。例えば、XF86_S3 3.3 ならば (遅いものの) 512x512 サイズのマウスカーソルが動きます。 o 拡大化されたカーソルフォントの名前は、元のものと同じものでなければ なりません(cursor というフォントの名前のことで、ファイル名は問題で はありません) -- この点は、bdfresize がフォントの名前を変えないので 問題ありません。 o 新しいカーソルフォントのディレクトリは、フォントパスのなかでは本来 のものよりも前に来なくてはなりません -- この点は xset +fp で解決し ます(この動作の逆は xset fp+ です)。 o $HOME/fonts/ の中身の変更は mkfontdir $HOME/fonts; xset fp rehash の実行後に立ち上がる X のクライアントに (更に正確に述べるならば、そ れも、新たに作られたカーソルに対して) のみ反映します。 o xset +fp path は X-Terminal では作動しないかも知れません。この場 合、もし X-Terminal にサポートされているならばフォントサーバが使え ますし、 (see the section ``フォントサーバの使い方'')、もしく は、(一般的にはあなたのシステム管理者のみが可能ですが) 他の方法で X-Terminalにフォントをインストールすることができます。 o olcursor や decw$cursor、そして、あなたが出会うだろう他のフォントに 対しても今回と同じ手法が取れます。 o bcfresize で作られたカーソルフォントは、大きく拡大されると特に、滑 らかな形をしていません。誰かが、ある共通のサイズに関してもっと見た めの良い手作りのものを用意すれば良いのですが。。。 5. 技術的議論 自動的にカーソルを拡大化する、X プログラムを書くことは可能でしょうか? (部分)解 1 XTEST 拡張から、XTestCompareCursor を使うのです。どのウインドウ に対して、マウスポインタは"既知の"カーソルセット (例えばカーソル フォント)とそのウインドウのカーソルの比較に入ります。もしカーソ ルが見つかれば、それを拡大化したものに置き換え、見つからなければ そのままにするか、普通のカーソルに置き換えます。この方法は XTest 拡張の有効なもののみで実現されます。 解 2 XCreate*Cursor Xlib 関数に対するすべての要求を中断し、その他の要 求は変えずに本来の X サーバに中継する代理 X サーバを書くことで す。そこで、XCreate*Cursor の要求が拡大化されたカーソルを使うよ うに変更させるのです。 この代理サーバは、例えば:1. のような新しいディスプレイをつくり出 します。このディスプレイに接続するすべてのクライアント、例えば xterm -display :1 は本来のサーバ、通常 :0、に表示され、そのマウ スカーソルが自動的に拡大されるのです。しかし、:0 に接続したクラ イアントのマウスカーソルは変わらないのです。 6. さらにマウスカーソルを見やすくする、その他のアイデア マウスカーソルを追いやすくする、もっと簡単な X プログラムのアイデアを 挙げるとします。 o ホットキーが押された時、ポインタの位置に 0.5 秒間何か (大きなカーソ ルや小さいウインドウ、形付けられたウインドウ)を表示する。 o XRecolorCursor を用いて 0.1 秒毎にマウスカーソルの色を変える。 さらに苛酷なプロジェクトとしては mouse trails a la windoze、すなわち、 マウスが移動し、マウスカーソルが別の位置に示される必要がある場合、元の 位置のマウスはすぐには消えず、少し遅れて消える、というものです。マウス トレイルは X サーバの中では多分よく実行されるものですが X のクライアン トとしてこれを実現するのも可能でしょうし、代理サーバとしてならばもっと 良いかも知れません (``技術的議論'' で詳細を御覧下さい)。 7. 関連した情報 7.1. フォントサーバの使い方 フォントサーバとは、簡単なプロトコルで X11 のフォントセットを提供する ネットサービスです。どのフォントを提供しているのか、もしくは、要求に応 じてどのフォントのビットマップデータを供給するかを調べることができま す。 ファイルシステム上のフォントを探す代わりに、手の加えられたカーソルフォ ントを X サーバに提供するフォントサーバを使いたくなるかも知れません。 この方法は、共通のファイルシステムを共用していない数台のマシンを使って いたり、フォントサーバのプロトコルを理解できる X ターミナルを使ってい るならば、特に手頃でしょう。 フォントサーバのプログラムと関連したツールは X11R5 とその distribution (AFAIK) にあります。 7.1.1. フォントサーバのセットアップ fs(1) や fslsfonts(1) (もしくは X11R6 の xfs(1) や xfslsfonts) のマ ニュアルページを読んで、挑戦して下さい。難しくはないでしょう。例え ば、some.host.edu というホスト上の 7100 番ポートでサーバを動かすのであ れば、 fslsfonts -server some.host.edu:7100 というコマンドでセットアップを試みることができます。実際にサーバを使う 時は、 xset +fp tcp/some.host.edu:7100 を発行し、エラーメッセージがなければ良いでしょう。 7.2. フォントの bdf ソースの入手法 もし、フォントサーバを立ち上げたのならば、フォントサーバについて来る fstobdf を使えばよいのです。 代わりに、getbdf を実行して、インストールされている X11 のフォントから bdf ファイルをダンプすることもできます。