Called by the system between frames for both key up and key down events.
(int key, boolean down, int time)
| 301 | * Called by the system between frames for both key up and key down events. |
| 302 | */ |
| 303 | public static void Event(int key, boolean down, int time) { |
| 304 | String kb; |
| 305 | String cmd; |
| 306 | |
| 307 | // hack for modal presses |
| 308 | if (key_waiting == -1) { |
| 309 | if (down) |
| 310 | key_waiting = key; |
| 311 | return; |
| 312 | } |
| 313 | |
| 314 | // update auto-repeat status |
| 315 | if (down) { |
| 316 | key_repeats[key]++; |
| 317 | if (key_repeats[key] > 1 |
| 318 | && ClientGlobals.cls.key_dest == Defines.key_game |
| 319 | && !(ClientGlobals.cls.state == Defines.ca_disconnected)) |
| 320 | return; // ignore most autorepeats |
| 321 | |
| 322 | if (key >= 200 && ClientGlobals.keybindings[key] == null) |
| 323 | Com.Printf(Key.KeynumToString(key) + " is unbound, hit F4 to set.\n"); |
| 324 | } |
| 325 | else { |
| 326 | key_repeats[key] = 0; |
| 327 | } |
| 328 | |
| 329 | if (key == K_SHIFT) |
| 330 | shift_down = down; |
| 331 | |
| 332 | // console key is hardcoded, so the user can never unbind it |
| 333 | if (key == '`' || key == '~') { |
| 334 | if (!down) |
| 335 | return; |
| 336 | |
| 337 | Console.ToggleConsole_f.execute(Collections.emptyList()); |
| 338 | return; |
| 339 | } |
| 340 | |
| 341 | // any key during the attract mode will bring up the menu |
| 342 | if (ClientGlobals.cl.attractloop && ClientGlobals.cls.key_dest != Defines.key_menu && !(key >= K_F1 && key <= K_F12)) |
| 343 | key = K_ESCAPE; |
| 344 | |
| 345 | // menu key is hardcoded, so the user can never unbind it |
| 346 | if (key == K_ESCAPE) { |
| 347 | if (!down) |
| 348 | return; |
| 349 | |
| 350 | if (ClientGlobals.cl.frame.playerstate.stats[Defines.STAT_LAYOUTS] != 0 && ClientGlobals.cls.key_dest == Defines.key_game) { |
| 351 | // put away help computer / inventory |
| 352 | Cbuf.AddText("cmd putaway\n"); |
| 353 | return; |
| 354 | } |
| 355 | switch (ClientGlobals.cls.key_dest) { |
| 356 | case Defines.key_message : |
| 357 | Key.Message(key); |
| 358 | break; |
| 359 | case Defines.key_menu : |
| 360 | Menu.Keydown(key); |
no test coverage detected