XFree86


PC-UNIXの世界においてGUI環境はXFree86が定番となっております。
ここではATI Rage128系のグラフィックチップに関する設定を述べます。
Rage128はそれまでのMach64サーバで対応しないため、XFree66-3.3.5までは
Accelerated-Xのお世話になる必要がありました。しかし、FreeBSDにおいては
ELF化の遅れ、fxtvでオーバーレイ表示ができないなどの問題がありました。
 

XFree86-3.3.6

このバージョンからRage128にSVGAサーバで正式に対応しました。
しかし、私の環境では hw_cursorやテキストスクロールで問題が発生
しました。XFree86-4.0.1のr128ドライバを参考にして修正したのが
r128.tar.gz (45kB) です。
xc/programs/Xserver/hw/xfree86/vga256/drivers/r128 を入れ替え、
make Worldまたは、
make Makefiles; make includes; make all
を実行すれば新しいXF86_SVGAができます。
Rage128Pro への対応は挫折しました。
自宅のマシンは既に Rage128Pro + XFree86-4.0.1 に移行してしまったので
3.3.6のサポートはあまりできません。

XFree86-4.0.1

Rage128系に関してはこちらのほうが対応が進み、パフォーマンスも大幅
に向上しています。Rage128Proにも対応しています。
しかし全体的には3.3.6程は枯れてなく、私のところでは
・仮想コンソール切り替えから復帰後、マウスとの通信が切れる
・fxtvでフルスクリーンにしようとするとマウスとの通信が切れる
・Gtkのtextboxで文字幅とカーソル位置がずれる
といった問題を確認しています。マウスは若干不安定です。

Xvideo
4.0系列からXサーバの拡張機能として、ビデオキャプチャー機能が一部
サポートできるようになりました。
GATOSプロジェクトでRage Theatreによるビデオ機能のサポートが進められて
います。最新版はここにあります。ドライバモジュールは共通に使えるよう
になっていますから、/usr/X11R6/lib/modules/drivers/r128_drv.o をLinuxでつくられ
たr128_drv.o に入れ替えるだけで問題なく動作します。
当然自前でコンパイルできますが、その場合 xc/config/cf/FreeBSD.cfで
#define BuildXF86DRI  YES
となっている必要があります。
この機能はドライバアーカイブに付属のmpeg2playやXawtvで使えます。

XFree86-4.0.2

unicode関係で開発者間で紛争があるようですが、4.0.1に比べでフォント幅と
カーソルのバグがfixされています。マウスのトラブルは相変わらず・・・
r128ドライバはatiドライバとsource treeで同じdirectoryになり、Xvideoが大幅に
向上したようです。
GATOSプロジェクトはここに移転し、4.0.2用のドライバati.2の開発が進んで
います。4.0.1から大幅に書き換えられて、theatre chipドライバなどが
モジュール化されています。実は、私の環境では新しいドライバでVideo In
をXawtvで見ようとすると、同期のとれていない状態になってしまいます。
そこで、4.0.1を参考に、r128_video.cを修正しました。
Xvideo  の機能や安定性は向上している感じです。
 

Wheel Mouse

Xでホイールを使うにはボタンの個数が5であると認識される必要があります。
XFree86-3.3.6の場合、XF86Configで
Section "Pointer"
   Protocol        "Microsoft"
   Device          "/dev/sysmouse"
   Buttons        5
EndSection
とします。
XFree86-4.0.1の場合は同じくXF86Configで
Section "InputDevice"
 Identifier  "Mouse0"
 Driver      "mouse"
 Option      "Protocol" "auto"
 Option      "Device" "/dev/sysmouse"
 Option      "Buttons" "5"
EndSection
としてやります。

実際のXアプリで用いる例ですが、
Muleの場合、~/.emacs で
(global-set-key [mouse-4] 'scroll-down)
(global-set-key [mouse-5] 'scroll-up)
を追加します。
ktermの場合は ~/.Xdefaultsで
KTerm*vt100*translations:#override\
        <Btn4Down>:        scroll-back(1,halfpage)\n\
        <Btn5Down>:        scroll-forw(1,halfpage)\n\
一番肝心なNetscapeでは同じく ~/.Xdefaultsで
Netscape*globalTranslations: #override \n\
        <Btn4Down>:                     LineUp() LineUp() LineUp() LineUp() refresh() \n\
        <Btn5Down>:                     LineDown() LineDown() LineDown() LineDown() refresh() \n\
! ~Shift ~Meta ~Alt ~Ctrl<Btn4Down>: LineUp() LineUp() LineUp() refresh()
! ~Shift ~Meta ~Alt ~Ctrl<Btn5Down>: LineDown() LineDown() LineDown() refresh()
! Shift ~Meta ~Alt ~Ctrl<Btn4Down>: forward()
! Shift ~Meta ~Alt ~Ctrl<Btn5Down>: back()
こんな感じ。とりあえず有効なのは最初の2行だけ。

光学マウスに換えてから、WWWブラウジングなどでグリグリやったり
していると、mousedが応答しなくなる現象が発生するようになりました。
mousedにHUPシグナルを送ってやれば回復するのですが・・・
というわけで、それを行うコマンドを書いてみました。
   main.c.gz
適当に名前を付けて、rootにset-user-IDしてください。
WindowManagerのキーボードショートカットに登録すると便利です。
 

VJE-Delta

日本語入力にはVACSのVJE-Delta Ver.3.0 を使用していますが、それについて
ここに書いておきます。
インストールは ports/japanese/vje30 を用いると良いでしょう。
vjeaccをJDK-1.1.8対応にしてくれます。実際にvjeaccで文字入力を使うには
swing.jar が必要です。ダウンロードはこちら
ports/java/jfc でインストールできます。
うまくいくとこんな感じ。
文字入力

VJEを使うための環境変数の設定は、~/.cshrcの場合
setenv  LANG ja_JP.EUC
setenv  XMODIFIERS @im=vje
setenv  TK_KCPROTO      xim
最後の行は日本語化されたTk8.0のためのものです。
Netscapeは、~/.Xdefaults で
Netscape*inputMethod:              vje
とします。これはひょっとしたら最近はいらないかもしれません。
初期の vjed にはメモリリークを起こすという問題があるので、
公式サイトからアップデートをゲットして入れ替えましょう。

Window Maker

XのWindow Managerとしては Window Makerを愛用しています。
ここでthemeがゲットできます。
0.60.1以降のバージョンで日本語の文字化けが発生する場合、
~/GNUstep/Defaults/WMGLOBA で
   SystemFont = "-*-helvetica-medium-r-normal-*-%d-*-*-*-*-*-iso8859-1,
-*-mincho-medium-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-*,
-*-fixed-medium-r-normal-*-%d-*-*-*-*-*-*-*";
   BoldSystemFont = "-*-helvetica-bold-r-normal-*-%d-*-*-*-*-*-iso8859-1,
-*-gothic-bold-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-*,
-*-fixed-medium-r-normal-*-%d-*-*-*-*-*-*-*";
   DoubleClickTime = 250;
   MultiByteText = YES;
というふうに、MultiByteText = YES; を追加します。

Copyright(c)  2000  DragonX. All rights reserved.
戻る