よたらぼ
自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。

June 16, 2002 [おもひで]

[Tools] はやりのインターネットキーを使う

昨日も書いたんだけど、最近のキーボードはWWWやメール用のボタンがついてくるよね。こいつをX-Windowで使ってみる方法がわかったのでメモっておく。

Window Managerはsawfish version 0.38(GNOME環境)、XはXFree86-4.1.0、キーボードはLogicool Deluxe Access 109 Keyboard ik-26だ。このキーボードは「WWW」「メール」「検索」ボタンがついてるので今回はこれを使う。

まず、xevを使ってそのボタンがどのように定義されているか確認する。KeyPressイベントのところを参照する。
KeyPress event, serial 24, synthetic NO, window 0x2e00001,
    root 0x3d, subw 0x0, time 2000773075, (78,59), root:(983,539),
    state 0x0, keycode 178 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 1 characters:  ""
 
KeyPress event, serial 24, synthetic NO, window 0x2e00001,
    root 0x3d, subw 0x0, time 2000776819, (78,59), root:(983,539),
    state 0x0, keycode 236 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 1 characters:  ""
 
KeyPress event, serial 24, synthetic NO, window 0x2e00001,
    root 0x3d, subw 0x0, time 2000777264, (78,59), root:(983,539),
    state 0x0, keycode 229 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 1 characters:  ""

上記を見ると、それぞれ178, 238, 229にkeycodeが割り当てられているが、keysymは定義されていない(NoSymbol)ということがわかる。
通常、Xのアプリケーションはkeycodeではなくkeysymの方を使用するのでこれを割り当てる必要がある。具体的には~/.Xmodmapに以下の情報を追加する。

keycode 178 = XF86WWW
keycode 236 = XF86Mail
keycode 229 = XF86Search

この右辺値は/usr/X11R6/lib/X11/XKeysymDBから選ぶ。 余談だが、XKeysymDBを見ると現存するキーの割り当ては全て定義されているみたい、知らんかった。

上記を設定したら、もう一度Xを再立ち上げ(ログアウトして再度ログインすればOK)する。

(追記:xmodmap ~/.Xmodmapの方が良いね by kjanaさんのツッコミ)

んで、xevの結果。

KeyPress event, serial 24, synthetic NO, window 0x2c00001,
    root 0x3d, subw 0x0, time 2001652414, (70,54), root:(852,288),
    state 0x0, keycode 178 (keysym 0x1008ff2e, XF86WWW), same_screen YES,
    XLookupString gives 0 characters:  ""
 
KeyPress event, serial 24, synthetic NO, window 0x2c00001,
    root 0x3d, subw 0x0, time 2001652646, (70,54), root:(852,288),
    state 0x0, keycode 236 (keysym 0x1008ff19, XF86Mail), same_screen YES,
    XLookupString gives 0 characters:  ""
 
KeyRelease event, serial 24, synthetic NO, window 0x2c00001,
    root 0x3d, subw 0x0, time 2001652276, (70,54), root:(852,288),
    state 0x0, keycode 229 (keysym 0x1008ff1b, XF86Search), same_screen YES,
    XLookupString gives 0 characters:  ""

無事、keysymが割り当てられていればOK。

最後にSawfishの設定。本当はGNOMEコントロールセンタ(のsawfish-ui)から登録する方法を見つけたかったんだけど、結局、挫折。かわりに ~/.sawfishrcに設定を書くことで解決した。

(bind-keys global-keymap
   "XF86WWW" '(system "/usr/bin/galeon -w&")
   "XF86Mail" '(system "/usr/bin/sylpheed&")
   "XF86Search" '(system "/usr/bin/galeon -w http://www.google.com/&")
)

見ればわかると思うんだけど、WWWボタンでgaleonが、メールボタンでsylpheedが、検索ボタンでgaleon+googleが起動する。 一度ログアウトして再ログインで無事動作するようになった。めでたしめでたし。

#誰かGNOMEコントロールセンタから登録する方法知ってたら教えて!

[Tools] Sawfishつづき

さくさんのツッコミを見て再度コントロールセンタから設定できないかどうかチャレンジしてみたら簡単にできた。なははは。

そんなわけで、.sawfishrcの設定は不要だね。

  1. GNOMEコントロールセンタを起動
  2. ツリーの中から、GNOMEコントロールセンタ→Sawfishウィンドウマネージャ→ショートカットを選ぶ
  3. 右側の設定内容のところで、有効エリア:Globalを設定
  4. 追加ボタンをクリック
  5. 取り込みボタンをクリックすると Pless Key ...と出るのでインターネットキーをクリック
  6. コマンドの一覧から Run shell commandを選択
  7. 下側にCommand:欄が出るので、そこに/usr/bin/galeon -nとか、/usr/bin/sylpheedとか起動したいアプリケーションを記述する

実は、5.まではわかってたんだけど、6.のやり方(選択の仕方)がわからなかった....つーか一覧を一個ずつ見ていかなかったのが敗因だな(^^;)。

[Tools] galeon -n/-w

上記のgaleon -wは galeon -nの方が良いかな。まぁ、好みだろうけど。

  1. -nオプション
    galeonがすでに起動されている場合は、すでにあるGaleonウィンドウに新規タブを開く
  2. -wオプション
    galeonがすでに起動されている場合は、すでにあるGaleonプロセスで新規ウインドウを開く

本日のツッコミ(全5件) [ツッコミを入れる]
さく (June 16, 2002 17:00)

最近GNOMEから離れてしまったので記憶が怪しくなりますが、コントロールセンターのウィンドウマネージャ設定から、WM固有の設定が呼び出せたと思います。その中にショートカット設定ってないですか? キーを「取り込」む機能があったよーか気がします。

きた (June 16, 2002 18:03)

GNOMEコントロールセンター経由以外にも,rootウィンドウで中ボタン押すとSawfishの設定メニューが出てきませんでしたっけ?
# 最近GNOME使ってないのでちょっと自信なし.

むとぽん (June 16, 2002 18:10)

さくさん:
えーっとそこまでは気づいたのですが、そこからgaleonとかを呼び出す指定をどうすれば良いのかなぁと(^^;)。
きたさん:
GNOMEコントロールセンタから表示する設定メニューと同じ内容がメニューになって出てきますね。

kjana (June 16, 2002 23:37)

「一度 logout して login」なんていうめんどうくさいことしなくても
`xmodmap ~/.Xmodmap' だの登録してあればメニューから reload なり
restart なり選ぶだのしたらよいのにと思います....

むとぽん (June 16, 2002 23:44)

あうぅ。確かに(汗。


編集