Mail Archives: djgpp-workers/2001/07/24/12:21:44
> 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];
}
- Raw text -