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