README.menu (3485B)
1 2 w3m のメニューについて 3 (2002/11/27) 坂本 浩則 4 hsaka@mth.biglobe.ne.jp 5 6 [1] キー操作 7 8 ・一般的なもの 9 10 HELP, INS キー : メニューの立ち上げ 11 HELP, INS キー, C-c, : メニューの消去 12 RET(C-m, C-j), SPC, →キー : 選択 13 BS(C-h), DEL(C-?), ←キー : 戻る 14 C-n, j, ↓キー : 下の項目へ 15 C-p, k, ↑キー : 上の項目へ 16 J : 項目を上にスクロール 17 K : 項目を下にスクロール 18 C-a : 先頭の項目へ 19 C-e : 最後の項目へ 20 C-f, C-v : 次ページの項目へ 21 C-b, M-v : 前ページの項目へ 22 C-s, / : 項目を下に向かって検索 23 C-r, ? : 項目を上に向かって検索 24 n : 次の項目を検索 25 N : 前の項目を検索 26 C-z : サスペンド 27 28 # INS は通常 ^[[2~ ですが ^[[L(コンソール), ^[[E(PocketBSD) にも 29 バインドしてあります。 30 31 MenuKeymap, MenuEscKeymap, MenuEscBKeymap, MenuEscDKeymap (menu.c) 32 で定義 33 34 ・個別のメニュー用 35 36 MenuItem 構造体 (menu.h) の char *keys に設定(複数可能) 37 上記のキー操作に上書きされます。 38 39 [2] マウス 40 41 ボタン3 : メニューの立ち上げ 42 43 立ち上げ後 44 45 ボタン1/3 (項目) : 選択 46 ″ (枠,MENU_NOP) : 何もしない 47 ″ (枠外) : 戻る(メニューの消去) 48 ″ ( : ) : 次ページまたは前ページの項目へ 49 (長いメニューの場合) 50 ″ (ドラッグ) : スクロール 51 52 [3] メニューのカスタマイズ 53 54 ~/.w3m/menu にメニューを定義できます。 55 メニューは、 56 57 menu MENU_ID 58 項目 59 : 60 end 61 62 として設定します。各項目には、 63 64 func LABEL FUNCTION KEYS [DATA] コマンド実行 65 popup LABEL MENU_ID KEYS サブメニュー立ち上げ 66 nop LABEL 何もしない(セパレータやタイトル) 67 68 を設定可能です。 69 例は menu.default や menu.submenu を見てください。 70 設定できるコマンド(FUNCTION)は README.func を見てください。 71 MENU_ID として "Main" はメインメニューに、"Select" はバッファ選択 72 メニューに、"SelectTab" はタブ選択メニューに予約されています。 73 KEYS はバインドするキーで複数指定可能です。 74 DATA が設定されていればコマンド(FUNCTION)の引数として使われます。 75 76 [4] 開発について 77 78 メニュールーチンの例は mainMenu(), optionMenu() を見れば分かると思います。 79 このルーチンと以下の MenuItem 構造体を定義すれば、ほとんどのメニューは、 80 設定できると思います。 81 82 MenuItem 構造体 (menu.h) 83 84 struct { 85 int type; /* タイプ */ 86 char *label; /* ラベル */ 87 int *variable; /* VALUE_MENU の場合に設定する変数 */ 88 int value; /* VALUE_MENU の場合に設定する値 */ 89 void (*func)(); /* 選択された時に実行する関数 */ 90 struct _Menu *popup; /* サブメニュー */ 91 char *keys; /* バインドするキー(複数可能) */ 92 } MenuItem; 93 94 タイプ type は以下のものが使用できます。 95 96 MENU_NOP (1) : なにもしない。選択もできない。 97 (タイトルやセパレータ用) 98 MENU_FUNC (2) : 関数を実行 99 MENU_VALUE (4) : 変数(*variable)に値(value)を設定 100 MENU_POPUP (8) : サブメニューを立ち上げる 101 102 MENU_FUNC と MENU_VALUE は (MENU_FUNC | MENU_VALUE) と 103 設定することで両方の動作をします。(変数設定が先です) 104 105 設定例は、MainMenuItem (menu.c) や new_option_menu() を見てください。 106