keyboard: custom rows overrides in moderows attribute
[sheet.git] / nethack.eng.inc.pl
1 use utf8;
2
3 {
4 title => 'NetHack',
5 version => '1.2',
6 description => [
7         "Keyboard overview sheet for the NetHack console roguelike game,",
8         "describing the default controls.",
9 ],
10 intro => "Command bindings for version 3.6.1 of the vanilla NetHack game.",
11 keywords => [qw' nethack rogue game controls '],
12 rows => [3, 2, 1, 0],
13 moderows => '4321-421',
14
15 key => {
16         'b' =>   "step left down\nnumpad 1",
17         'j' =>        "step down\nnumpad 2",
18         'n' =>  "step right down\nnumpad 3",
19         'h' =>        "step left\nnumpad 4",
20         'l' =>       "step right\nnumpad 6",
21         'y' =>     "step left up\nnumpad 7",
22         'k' =>          "step up\nnumpad 8",
23         'u' =>    "step right up\nnumpad 9",
24
25         'B' =>     "go left down\nshift numpad 1",
26         'J' =>          "go down\nshift numpad 2",
27         'N' =>    "go right down\nshift numpad 3",
28         'H' =>          "go left\nshift numpad 4",
29         'L' =>         "go right\nshift numpad 6",
30         'Y' =>       "go left up\nshift numpad 7",
31         'K' =>            "go up\nshift numpad 8",
32         'U' =>      "go right up\nshift numpad 9",
33
34         '^b'=>    "run left down\nnumpad 5 1",
35         '^j'=>         "run down\nnumpad 5 2",
36         '^n'=>   "run right down\nnumpad 5 3",
37         '^h'=>         "run left\nnumpad 5 4",
38         '^l'=>        "run right\nnumpad 5 6",
39         '^y'=>      "run left up\nnumpad 5 7",
40         '^k'=>           "run up\nnumpad 5 8",
41         '^u'=>     "run right up\nnumpad 5 9",
42
43         'g' => "run until interest",
44         'm' => "m<>ove blind\nno pickup",
45         'M' => "go far",
46         'G' => "g any<>where\nfollow branches",
47
48         '?' => "help menu",
49         '+?'=> "more help",
50         '/' => "explain symbol",
51         '&' => "tell com<>m<>and",
52         '<' => "climb up ladder",
53         '>' => "desc<>ent ladder",
54         '.' => "rest (noop)",
55         '_' => "travel to",
56
57         '+2'=> "two<>weapon toggle",
58         'a' => "apply tool",
59         'A' => "remove all armor",
60         '^a'=> "redo comm<>and\nAgain",
61         '+a'=> "adjust inv<>ent<>ory",
62         'c' => "close door",
63         'C' => "call monster",
64         '^c'=> "panic quit",
65         '+c'=> "chat",
66         'd' => "drop item",
67         'D' => "drop items",
68         '^d'=> "kick",
69         '+d'=> "dip",
70         'e' => "eat food",
71         'E' => "en<>grave",
72         '+e'=> "weapon skills\nEnhance",
73         'f' => "fire quiver",
74         'F' => "fight monster",
75         '+f'=> "force lock",
76         'i' => "invent<>ory",
77         'I' => "invent<>ory part",
78         '+i'=> "invoke object",
79         '+j'=> "jump",
80         '+l'=> "loot",
81         '+m'=> "mons<>ter abil<>ity",
82         '+n'=> "name item<>(s)",
83         'o' => "open door",
84         'O' => "options",
85         '^o'=> "overview levels",
86         '+o'=> "offer sacrifice",
87         'p' => "pay bill",
88         'P' => "put on",
89         '^p'=> "repeat message",
90         '+p'=> "pray",
91         'q' => "drink\nQuaff",
92         'Q' => "quiver ammo",
93         '+q'=> "exit game\nQuit",
94         'r' => "read scroll",
95         'R' => "put off\nRemove accessory",
96         '^r'=> "redraw",
97         '+r'=> "rub object",
98         's' => "search secrets",
99         'S' => "save game",
100         '+s'=> "sit down",
101         't' => "throw<>/shoot",
102         'T' => "remove armor",
103         '^t'=> "teleport",
104         '+t'=> "turn undead",
105         '+u'=> "untrap",
106         'v' => "version",
107         'V' => "verbose version",
108         '+v'=> "compile details",
109         'w' => "wield weap<>on",
110         'W' => "wear armor",
111         '+w'=> "wipe face",
112         'x' => "swap weapons\nXchange",
113         'X' => "explore mode",
114         '^x'=> "show stats",
115         'z' => "zap wand",
116         'Z' => "cast spell",
117         '^z'=> "suspend game",
118
119         ':' => "look here",
120         ';' => "look else<>where",
121         ',' => "pick up",
122         '@' => "toggle pick<>up",
123         '^' => "show trap",
124         ')' => "show weapon",
125         '[' => "show armor",
126         '=' => "show rings",
127         '"' => "show amulet",
128         '(' => "show tools",
129         '*' => "show equip<>ment",
130         '$' => "count gold",
131         '+' => "list spells",
132         '\\'=> "discover<>ed obj<>ects",
133         '`' => "types ident<>if<>ied",
134         '!' => "shell escape",
135         '#' => "more comm<>ands",
136
137         'DB' => 'drop blessed',
138         'DU' => 'drop uncursed',
139         'DC' => 'drop cursed',
140         'DX' => 'drop unknown',
141         'Da' => 'drop all',
142         'Di' => "invent<>ory",
143         'Du' => 'drop unpaid',
144         'Dm' => 'drop any',
145         'D%' => 'drop more',
146
147         'I*' => 'list gems',
148         'Iu' => 'list unpaid',
149         'Ix' => 'list billed',
150         'I$' => 'count money',
151         'IB' => 'list blessed',
152         'IU' => 'list uncurs<>e<>d',
153         'IC' => 'list cursed',
154         'IX' => 'list un<>know<>n',
155 },
156
157 mode => {
158         '' => 'normal gameplay',
159         'I' => 'inventory type',
160         'D' => 'drop item type',
161 },
162
163 flag => {
164         g2 => [direction => "Direction to move to or target a command (<motion>)."],
165         g3 => [move      => "Other character movement."],
166         g4 => [act       => "Direct action command: takes a turn."],
167         g6 => [info      => "Informational command: shows/does something without ending the turn."],
168         g7 => [invertory => "Display invertory menu."],
169         g8 => [menu      => "Enters some other menu."],
170
171         arg  => ["key<arg>"  => "Commands with a dot need at least one argument afterwards."],
172         argi => ["key<argi>" => "Asks for an inventory item."],
173         argm => ["key<argm>" => "Requires a direction afterwards."],
174 },
175
176 def => {
177         '' => {
178                 'b' => 'g2',
179                 'j' => 'g2',
180                 'n' => 'g2',
181                 'h' => 'g2',
182                 'l' => 'g2',
183                 'y' => 'g2',
184                 'k' => 'g2',
185                 'u' => 'g2',
186
187                 'B' => 'g3',
188                 'J' => 'g3',
189                 'N' => 'g3',
190                 'H' => 'g3',
191                 'L' => 'g3',
192                 'Y' => 'g3',
193                 'K' => 'g3',
194                 'U' => 'g3',
195
196                 '^b'=> 'g3',
197                 '^j'=> 'g3',
198                 '^n'=> 'g3',
199                 '^h'=> 'g3',
200                 '^l'=> 'g3',
201                 '^y'=> 'g3',
202                 '^k'=> 'g3',
203                 '^u'=> 'g3',
204
205                 'g' => 'g3 argm',
206                 'm' => 'g3 argm',
207                 'M' => 'g3 argm',
208                 'G' => 'g3 argm',
209
210                 '?' => 'g8 mode?', #help
211                 '+?'=> 'g8',
212                 '/' => 'g6 arg mode/', #whatis
213                 '&' => 'g6 arg',
214                 '<' => 'g2', #up
215                 '>' => 'g2', #down
216                 '.' => 'g2', #rest
217                 '_' => 'g3 argM', #travel
218
219                 '+2'=> 'g4', #twoweapon
220                 'a' => 'g4 argi', #apply
221                 'A' => 'g4', #armor
222                 '^a'=> 'g4', #again
223                 '+a'=> 'g6', #adjust
224                 'c' => 'g4 argm', #close
225                 'C' => 'g4 arg', #call
226                 '^c'=> 'g6',
227                 '+c'=> 'g4 arg', #chat
228                 'd' => 'g4 argi', #drop
229                 'D' => 'g4 arg modeD', #Drop
230                 '^d'=> 'g4 argm', #kick
231                 '+d'=> 'g4 argi', #dip
232                 'e' => 'g4 argi', #eat
233                 'E' => 'g4 argi', #engrave
234                 '+e'=> 'g4', #enhance
235                 'f' => 'g4 argm', #fire
236                 'F' => 'g4 argm', #fight
237                 '+f'=> 'g4', #force
238                 'i' => 'g7', #invent
239                 'I' => 'g7 arg modeI', #Invent
240                 '+i'=> 'g4 argi', #invoke
241                 '+j'=> 'g4', #jump
242                 '+l'=> 'g4', #loot
243                 '+m'=> 'g4', #monster
244                 '+n'=> 'g7 arg', #name
245                 'o' => 'g4 argm', #open
246                 'O' => 'g8 modeO', #options
247                 '^o'=> 'g6',
248                 '+o'=> 'g4 argi', #offer
249                 '+O'=> "=^o", #overview
250                 'p' => 'g4', #pay
251                 'P' => 'g4 argi', #puton
252                 '^p'=> 'g6', #prevmsg
253                 '+p'=> 'g4 arg', #pray
254                 'q' => 'g4 argi', #quaff
255                 'Q' => 'g4 argi', #quiver
256                 '+q'=> 'g6', #quit
257                 'r' => 'g4 argi', #read
258                 'R' => 'g4 argi', #remove
259                 '^r'=> 'g6', #redraw
260                 '+r'=> 'g4 argi', #rub
261                 's' => 'g4', #search
262                 'S' => 'g6', #save
263                 '+s'=> 'g4', #sit
264                 't' => 'g4 argm', #throw
265                 'T' => 'g4 argi', #takeoff
266                 '^t'=> 'g4', #'port
267                 '+t'=> 'g4', #turn
268                 '+u'=> 'g4', #untrap
269                 'v' => 'g6',
270                 'V' => 'g6', #history
271                 '+v'=> 'g6', #version
272                 'w' => 'g4 argi', #wield
273                 'W' => 'g4 argi', #wear
274                 '+w'=> 'g4', #wipe
275                 'x' => 'g4', #xchange
276                 'X' => 'g6', #explore
277                 '^x'=> 'g6', #show
278                 'z' => 'g4 argm', #zap
279                 'Z' => 'g4 argi', #Zap
280                 '^z'=> 'g6', #suspend
281
282                 ':' => 'g6', #look
283                 ';' => 'g6 argM', #farlook
284                 ',' => 'g4', #pickup
285                 '@' => 'g6',
286                 '^' => 'g6 argm', #trap_id
287                 ')' => 'g7', #seeweapon
288                 '[' => 'g7', #seearmor
289                 '=' => 'g7', #seerings
290                 '"' => 'g7', #seeamulet
291                 '(' => 'g7', #seetools
292                 '*' => 'g7', #seeall
293                 '$' => 'g6', #seegold
294                 '+' => 'g7', #seespells
295                 '\\'=> 'g7', #known
296                 '`' => 'g7', #knownclass
297                 '!' => 'g6', #sh
298                 '#' => 'g8',
299         },
300
301         'D' => {
302                 "\e" => 'g8 mode', # static reset button, even though it's not (officially) in the game
303
304                 'B' => 'g4',
305                 'U' => 'g4',
306                 'C' => 'g4',
307                 'X' => 'g4',
308                 'a' => 'g4',
309                 'i' => 'g6',
310                 'u' => 'g4',
311                 'm' => 'g4 argi',
312                 '%' => 'g4 arg',
313         },
314
315         'I' => {
316                 "\e" => 'g8 mode',
317
318                 '*' => 'g6',
319                 'u' => 'g6',
320                 'x' => 'g6',
321                 '$' => 'g6',
322                 'B' => 'g6',
323                 'U' => 'g6',
324                 'C' => 'g6',
325                 'X' => 'g6',
326         },
327 },
328 }