/* NetHack 3.6 pckeys.c $NHDT-Date: 1432512792 2015/05/25 00:13:12 $ $NHDT-Branch: master $:$NHDT-Revision: 1.10 $ */ /* Copyright (c) NetHack PC Development Team 1996 */ /* NetHack may be freely redistributed. See license for details. */ /* * MSDOS tile-specific key handling. */ #include "hack.h" #ifdef MSDOS #ifdef USE_TILES #include "wintty.h" #include "pcvideo.h" boolean FDECL(pckeys, (unsigned char, unsigned char)); extern struct WinDesc *wins[MAXWIN]; /* from wintty.c */ extern boolean inmap; /* from video.c */ #define SHIFT (0x1 | 0x2) #define CTRL 0x4 #define ALT 0x8 /* * Check for special interface manipulation keys. * Returns TRUE if the scan code triggered something. * */ boolean pckeys(scancode, shift) unsigned char scancode; unsigned char shift; { boolean opening_dialog; opening_dialog = pl_character[0] ? FALSE : TRUE; #ifdef SIMULATE_CURSOR switch (scancode) { case 0x3d: /* F3 = toggle cursor type */ HideCursor(); cursor_type += 1; if (cursor_type >= NUM_CURSOR_TYPES) cursor_type = 0; DrawCursor(); break; #endif case 0x74: /* Control-right_arrow = scroll horizontal to right */ if ((shift & CTRL) && iflags.tile_view && !opening_dialog) vga_userpan(1); break; case 0x73: /* Control-left_arrow = scroll horizontal to left */ if ((shift & CTRL) && iflags.tile_view && !opening_dialog) vga_userpan(0); break; case 0x3E: /* F4 = toggle overview mode */ if (iflags.tile_view && !opening_dialog && !Is_rogue_level(&u.uz)) { iflags.traditional_view = FALSE; vga_overview(iflags.over_view ? FALSE : TRUE); vga_refresh(); } break; case 0x3F: /* F5 = toggle traditional mode */ if (iflags.tile_view && !opening_dialog && !Is_rogue_level(&u.uz)) { iflags.over_view = FALSE; vga_traditional(iflags.traditional_view ? FALSE : TRUE); vga_refresh(); } break; default: return FALSE; } return TRUE; } #endif /* USE_TILES */ #endif /* MSDOS */ /*pckeys.c*/