From: "Mark E." To: djgpp-workers AT delorie DOT com Date: Tue, 24 Jul 2001 12:21:40 -0400 MIME-Version: 1.0 Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7BIT Subject: Re: extended keys support Message-ID: <3B5D6854.19305.A43993@localhost> References: <3B5C8550 DOT 21789 DOT 243885 AT localhost> In-reply-to: X-mailer: Pegasus Mail for Win32 (v3.12c) Reply-To: djgpp-workers AT delorie DOT com > Shouldn't this table be available to other parts of the library, via > some function that looks up a string given a key? How's this? The table is still incomplete, but you get the point. /* Copyright (C) 2001 DJ Delorie, see COPYING.DJ for details */ #define MIN_EXT_SCAN_CODE 0x10 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) /* A table that contains the encodings for extended keys. */ static const unsigned char * encoding_table[] = { 0, /* 0x10 */ 0, /* 0x11 */ 0, /* 0x12 */ 0, /* 0x13 */ 0, /* 0x14 */ 0, /* 0x15 */ 0, /* 0x16 */ 0, /* 0x17 */ 0, /* 0x18 */ 0, /* 0x19 */ 0, /* 0x1a */ 0, /* 0x1b */ 0, /* 0x1c */ 0, /* 0x1d */ 0, /* 0x1e */ 0, /* 0x1f */ 0, /* 0x20 */ 0, /* 0x21 */ 0, /* 0x22 */ 0, /* 0x23 */ 0, /* 0x24 */ 0, /* 0x25 */ 0, /* 0x26 */ 0, /* 0x27 */ 0, /* 0x28 */ 0, /* 0x29 */ 0, /* 0x2a */ 0, /* 0x2b */ 0, /* 0x2c */ 0, /* 0x2d */ 0, /* 0x2e */ 0, /* 0x2f */ 0, /* 0x30 */ 0, /* 0x31 */ 0, /* 0x32 */ 0, /* 0x33 */ 0, /* 0x34 */ 0, /* 0x35 */ 0, /* 0x36 */ 0, /* 0x37 */ 0, /* 0x38 */ 0, /* 0x39 */ 0, /* 0x3a */ "\e[[A", /* 0x3b: F1 */ "\e[[B", /* 0x3c: F2 */ "\e[[C", /* 0x3d: F3 */ "\e[[D", /* 0x3e: F4 */ "\e[[E", /* 0x3f: F5 */ "\e[17", /* 0x40: F6 */ "\e[18~", /* 0x41: F7 */ "\e[19~", /* 0x42: F8 */ "\e[20~", /* 0x43: F9 */ "\e[21~", /* 0x44: F10 */ 0, /* 0x45 */ 0, /* 0x46 */ "\e[1~", /* 0x47: Home */ "\e[A", /* 0x48: Up Arrow */ "\e[5~", /* 0x49: Page Up */ 0, /* 0x4a */ "\e[D", /* 0x4b: Left Arrow */ 0, /* 0x4c */ "\e[C", /* 0x4d: Right Arrow */ 0, /* 0x4e */ "\e[4~", /* 0x4f: End */ "\e[B", /* 0x50: Down Arrow */ "\e[6~", /* 0x51: Page Down */ "\e[2~", /* 0x52: Insert */ "\e[3~", /* 0x53: Delete */ "\e[25~", /* 0x54: Shift-F1 */ "\e[26~", /* 0x55: Shift-F2 */ "\e[27~", /* 0x56: Shift-F3 */ "\e[28~", /* 0x57: Shift-F4 */ "\e[29~", /* 0x58: Shift-F5 */ "\e[30~", /* 0x59: Shift-F6 */ "\e[31~", /* 0x5a: Shift-F7 */ "\e[32~", /* 0x5b: Shift-F8 */ "\e[33~", /* 0x5c: Shift-F9 */ "\e[34~", /* 0x5d: Shift-F10 */ "\e[37~", /* 0x5e: Ctrl-F1 */ "\e[38~", /* 0x5f: Ctrl-F2 */ 0, /* 0x60 */ 0, /* 0x61 */ 0, /* 0x62 */ 0, /* 0x63 */ 0, /* 0x64 */ 0, /* 0x65 */ 0, /* 0x66 */ 0, /* 0x67 */ 0, /* 0x68 */ 0, /* 0x69 */ 0, /* 0x6a */ 0, /* 0x6b */ 0, /* 0x6c */ 0, /* 0x6d */ 0, /* 0x6e */ 0, /* 0x6f */ 0, /* 0x70 */ 0, /* 0x71 */ 0, /* 0x72 */ 0, /* 0x73 */ 0, /* 0x74 */ 0, /* 0x75 */ 0, /* 0x76 */ 0, /* 0x77 */ 0, /* 0x78 */ 0, /* 0x79 */ 0, /* 0x7a */ 0, /* 0x7b */ 0, /* 0x7c */ 0, /* 0x7d */ 0, /* 0x7e */ 0, /* 0x7f */ 0, /* 0x80 */ 0, /* 0x81 */ 0, /* 0x82 */ 0, /* 0x83 */ 0, /* 0x84 */ "\e23~", /* F11: 0x85 */ "\e24~", /* F12: 0x86 */ 0, /* 0x87 */ 0, /* 0x88 */ "\e[35~", /* 0x89: Shift-F11 */ "\e[36~", /* 0x8a: Shift-F12 */ 0, /* 0x8a */ 0, /* 0x8b */ 0, /* 0x8c */ 0, /* 0x8d */ 0, /* 0x8e */ 0, /* 0x8f */ }; const unsigned char * __get_extended_key_encoding(unsigned long key_code) { unsigned index; /* Strip flags added by getxkey. */ key_code &= 0xff; if (key_code < MIN_EXT_SCAN_CODE) return NULL; index = key_code - MIN_EXT_SCAN_CODE; if (index > ARRAY_SIZE(encoding_table)) return NULL; return encoding_table[index]; }