So-net無料ブログ作成

halにおける日本語キーボード+αオプション (FreeBSD 8.2R、2011/06/11) [X]

XOrg 7.4よりhalが必須となり、キーボードのレイアウトやオプションをhalで指定するようになりました。今までCtrlとCAPSを入れ替えて使っていた人や、Alt+Ctrl+BackSpaceのDon't Zapを有効化していた人にとっては大変困ったことになっていました。しかもWebで情報収集するとページによって記述がバラバラで、何を信じて良いのか分かりません。(私も困りました)

こんなところ(http://people.freedesktop.org/~dkukawka/hal-spec-git/hal-spec.html#device-properties-input-keys)を見ると、”input.xkb.options (strlist) ”の属性をごにょごにょと、と書いていますがそうなるように変更してもキーマップは反映されど、肝心のオプションは反映されず。
一方、こんなところ(http://cgit.freedesktop.org/xorg/xserver/tree/config/x11-input.fdi)を見ると、Legacy Keys "input.xkb.options"なんて表記も。

    Keys Supported:
        Key "input.x11_options.<option name>" (string)
            This allows you to specify arbitrary options to pass to the driver.
            Anything you would normally specify in xorg.conf goes here. So, for
            option "Mode" in xorg.conf, you would specify the key name of
            "input.x11_options.Mode". 
そのページには上記のように記載されており、x11_optionsを使うのが正しそう。ちなみにhalへの情報の反映はlshalで見えるので、最終的に期待する結果は以下のようになればOKです。(設定変更したらhaldの再起動を忘れずに)
athlon# lshal
udi = '/org/freedesktop/Hal/devices/usb_device_dc6_9811_noserial_if0'
  freebsd.device_file = '/dev/ukbd0'  (string)
  freebsd.driver = 'ukbd'  (string)
  input.x11_driver = 'kbd'  (string)
  input.x11_options.XkbLayout = 'jp'  (string)
  input.x11_options.XkbModel = 'jp106'  (string)
  input.x11_options.XkbOptions = {'ctrl:nocaps', 'terminate:ctrl_alt_bksp'} (string list)
  input.x11_options.XkbRules = 'xorg'  (string)

というわけで、設定を煮詰めた結果、以下のように記述すれば期待した動作をすることが分かりました。
athlon# cat 20-x11-input.fdi
<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
  <device>
    <match key="info.capabilities" contains="input.keys">
      <merge key="input.x11_options.XkbRules" type="string">xorg</merge>
      <merge key="input.x11_options.XkbModel" type="string">jp106</merge>
      <merge key="input.x11_options.XkbLayout" type="string">jp</merge>
      <merge key="input.x11_options.XkbOptions" type="strlist">ctrl:nocaps</merge>
       <append key="input.x11_options.XkbOptions" type="strlist">terminate:ctrl_alt_bksp</append>
    </match>
  </device>
</deviceinfo>

タグ:Xorg

Xvfb + x11vnc on FreeBSD [X]

クライアントGUI環境をリモートから操作したいと思っていろいろ調べてます。Windowsで言うリモートデスクトップみたいな感じですね。で、XDMCPやらXvncやら実現方法はあるのですが、いずれも却下で。なぜならビットマップフォントを綺麗に扱うには、別途Xフォントサーバを設定しないといけないからです。
まぁ、最近はXft2+fontconfigによるラスタフォント管理が普及しており、Xフォントサーバを立てなくても綺麗にフォントが見えるようになっています。でも、常にそういうアプリケーションだけを使うとは限らないですからね。

とまあ調べているとx11vncなるものが。これはXDMCP等とは仕組みが違い、本当にX上で表示されている画面を転送するだけのものです。だから実機でログインし、x11vncを起動させれば表示されている画面そのままがリモートで見えるようになります。もちろんXフォントサーバも不要です。

ここでもう1ステップ踏み出しましょう。実機でログインしなくても、Xvfbで仮想的にXを立ち上げ、さらにその中にウィンドウマネージャを起動させ、x11vncで接続すれば全てを仮想環境にまとめることができませんか? さくっと以下のようにすれば実現したいことはできます。
setenv DISPLAY :0
Xvfb :0 -screen 0 1152x864x24 &
twm &
x11vnc -display :0 -geometry 1152x864 -forever

はい、失敗でした。そもそもXvfbがXフォントサーバを必要とするようで。XDMCP等と変わらないですね…
タグ:Xorg

XOrg 7.4 for FMV-BIBLO(FMVNB55HV) その2 [X]

vesaドライバで1024x768表示ができなかった理由が分かりました。Hsyncを設定していないのでデフォルトの値が使用されており、その範囲が合わずに1024x768表示ができていなかっただけのようです。
(II) VESA(0): Total Memory: 511 64KB banks (32704kB)
(II) VESA(0): Monitor0: Using default hsync range of 31.50-37.90 kHz
(II) VESA(0): Monitor0: Using default vrefresh range of 50.00-70.00 Hz
(II) VESA(0): Monitor0: Using hsync range of 31.50-37.90 kHz
(II) VESA(0): Monitor0: Using vrefresh range of 50.00-70.00 Hz
(II) VESA(0): Not using built-in mode "1024x768" (hsync out of range)

とは言ってもCRTでないので、適切な値というのがありません。とりあえず、以下のように適当に書いたところ、vesaドライバで無事1024x768表示ができるようになりました。
Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
        HorizSync    31.5-50.0
        Option      "DPMS"
EndSection

タグ:Xorg

XOrg 7.4 for FMV-BIBLO(FMVNB55HV) その1 [X]

FreeBSDは長くサーバとしてしか使っていませんでしたが、久々にクライアント環境を構築してみます。今回の対象は2004年に購入したFMVです。グラフィックチップは「ATI Radeon RS200 Mobility IGP 340M」です。
さてさて、XOrg 7.4からはマウスやキーボードの制御がhal依存となったそうですが、これが最初の難関です。FreeBSDの場合、/usr/ports/UPDATINGなどを参考にすると、rc.confに以下が必要になります。halに制御させるので、mousedは起動しないようにします。
# rc.conf
hald_enable="YES"
dbus_enable="YES"
moused_enable="NO"
moused_nondefault_enable="NO"

次にxorg.confでは、rgbパスが不要になったこと、halに制御を任せるのであればServerFlagsに以下の記載をするのと、InputDeviceのデバイスを/dev/psmにすることです。
# xorg.conf
Section "ServerFlags"
    Option "AllowEmptyInput"  "off"
    Option "AutoAddDevices"   "off"
EndSection

Section "InputDevice"
    #Option     "Device" "/dev/sysmouse"
    Option      "Device" "/dev/psm0"
EndSection

後は既存のxorg.confがほぼそのまま流用できるようです。
…が。うちのFM-Vの場合、radeonドライバだとX終了時にフリーズしてしまうようなのです。vesaドライバではフリーズしなくなりますが、画面サイズが800x600になってしまいます。どうしましょう?
タグ:Xorg

Xfce4 文字コード [X]

結局、ウィンドウマネージャとしてXfce4を使うことに落ち着きそうです。
私は文字コードはEUC-JP派なのですが、Xfce4でもEUC-JPで普通に使えているんですよね。ただ、一部の文字(今日のワンポイントチップ等)が真っ白で何も表示されないという問題を除いて。まぁ、だいたいの想像はついていたので文字コードをja_JP.UTF-8にしたところばっちり表示されるようになりました。
世の中Unicodeになりつつあるのでしょうか? あんないけてない文字コード…
タグ:Xorg

TrueTypeフォントでない人のためのxorg.conf? [X]

最近はTrueType形式等のアウトラインフォントがすっかり主流となりましたが、ウィンドウマネージャによってはまだまだラスタフォントを主流に使っているという人は多いのではないでしょうか。何より軽いですしね。
最新のXOrgだとどうか分からないのですが、XFree86 4.x 時代、ラスタフォントの表示が汚くなるという現象に遭遇したことがあります。例えば、そのラスタフォントは14ポイントのフォントを持っているにも拘わらず、わざわざ12ポイントのフォントを拡大表示して14ポイントを表示しているように見えるのです。
この問題については、XFree86.conf中の各エントリに以下のようにunscaluedを加えることによって直りました。以下のように記述することにより、miscフォントのunscaled(スケーリングしない)をサーチして該当ポイントのフォントサイズがない場合に限り、フォントを拡大縮小して表示させるという意味合いになります。
※とは言え、X.Org 7.4からは明示的なコンフィグファイルが不要になったらしいので、もしかしたらこの書き方は過去の物かもしれません


FontPath     "/usr/local/lib/X11/fonts/misc/:unscaled"
FontPath     "/usr/local/lib/X11/fonts/misc/"


タグ:Xorg

FreeBSD on VMWare用 xorg.conf [X]

VMWare用 xorg.conf をさくっと仕上げてみましたが、こんなものでしょうか?
私好みの、「A」の左はCtrlキー仕様になっております。
※X.Org 7.4からは明示的なコンフィグファイルが不要になったらしいので、もしかしたらこの書き方は過去の物かもしれません


> cat /etc/X11/xorg.conf
Section "ServerLayout"
        Identifier     "X.org Configured"
        Screen      0  "Screen0" 0 0
        InputDevice    "Mouse0" "CorePointer"
        InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Files"
        RgbPath      "/usr/local/share/X11/rgb"
        ModulePath   "/usr/local/lib/xorg/modules"
        FontPath     "/usr/local/lib/X11/fonts/JP_TTF/"
        FontPath     "/usr/local/lib/X11/fonts/CID/"
        FontPath     "/usr/local/lib/X11/fonts/TTF/"
        FontPath     "/usr/local/lib/X11/fonts/TrueType/"
        FontPath     "/usr/local/lib/X11/fonts/webfonts/"
        FontPath     "/usr/local/lib/X11/fonts/Type1/"
        FontPath     "/usr/local/lib/X11/fonts/misc/:unscaled"
        FontPath     "/usr/local/lib/X11/fonts/misc/"
        FontPath     "/usr/local/lib/X11/fonts/local/:unscaled"
        FontPath     "/usr/local/lib/X11/fonts/local/"
        FontPath     "/usr/local/lib/X11/fonts/cyrillic/"
        FontPath     "/usr/local/lib/X11/fonts/100dpi/:unscaled"
        FontPath     "/usr/local/lib/X11/fonts/100dpi/"
        FontPath     "/usr/local/lib/X11/fonts/75dpi/:unscaled"
        FontPath     "/usr/local/lib/X11/fonts/75dpi/"
EndSection

Section "Module"
        Load  "extmod"
        Load  "record"
        Load  "dbe"
        Load  "glx"
        Load  "GLcore"
        Load  "xtrap"
        Load  "dri"
        Load  "freetype"
        Load  "type1"
EndSection

Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "kbd"
        Option "XkbRules"    "xorg"
        Option "XkbModel"    "jp106"
        Option "XkbLayout"   "jp"
        Option "XkbOptions"  "ctrl:nocaps"
EndSection

Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option      "Protocol" "auto"
        Option      "Device" "/dev/sysmouse"
        Option      "Buttons" "5"
        Option      "Emulate3Buttons" "no"
EndSection

Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
#       Option      "DPMS"
EndSection

Section "Device"
        Identifier  "Card0"
        Driver      "vmware"
        VendorName  "VMware Inc"
        BoardName   "[VMware SVGA II] PCI Display Adapter"
        BusID       "PCI:0:15:0"
EndSection


Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        SubSection "Display"
                Viewport   0 0
                Depth     24
                Modes     "1024x768"
        EndSubSection
EndSection


タグ:Xorg

DISPLAY変数 [X]

Xアプリケーションの出力をリモートPCに飛ばすには、DISPLAY変数を設定する必要があります。
書式は DISPLAY=[ホスト名]:[ディスプレイ番号].[スクリーン番号]

ディスプレイ番号は、物理的なディスプレイを指し、0から採番されます。(普通はディスプレイ1台しかないので、0ですよね)
また、スクリーン番号とはxorg.confのスクリーン番号に対応しているようです。つまりマウスやキーボードの組を複数持っていると番号を変える必要があるようです。普通はここも0になります。
タグ:Xorg