1 /* ----------------------------------------------------------------------- * 2 * 3 * Copyright 2004-2008 H. Peter Anvin - All Rights Reserved 4 * 5 * Permission is hereby granted, free of charge, to any person 6 * obtaining a copy of this software and associated documentation 7 * files (the "Software"), to deal in the Software without 8 * restriction, including without limitation the rights to use, 9 * copy, modify, merge, publish, distribute, sublicense, and/or 10 * sell copies of the Software, and to permit persons to whom 11 * the Software is furnished to do so, subject to the following 12 * conditions: 13 * 14 * The above copyright notice and this permission notice shall 15 * be included in all copies or substantial portions of the Software. 16 * 17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 18 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 19 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 20 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 21 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 22 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 23 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 24 * OTHER DEALINGS IN THE SOFTWARE. 25 * 26 * ----------------------------------------------------------------------- */ 27 28 /* 29 * getkey.h 30 * 31 * Function to get a key symbol and parse it 32 */ 33 34 #ifndef LIBUTIL_GETKEY_H 35 #define LIBUTIL_GETKEY_H 36 37 #include <stdio.h> 38 #include <unistd.h> 39 #include <sys/times.h> 40 41 #ifndef CLK_TCK 42 # define CLK_TCK sysconf(_SC_CLK_TCK) 43 #endif 44 45 #define KEY_NONE (-1) 46 47 #define KEY_CTRL(x) ((x) & 0x001f) 48 #define KEY_BACKSPACE 0x0008 49 #define KEY_TAB 0x0009 50 #define KEY_ENTER 0x000d 51 #define KEY_ESC 0x001b 52 #define KEY_DEL 0x007f 53 54 #define KEY_F1 0x0100 55 #define KEY_F2 0x0101 56 #define KEY_F3 0x0102 57 #define KEY_F4 0x0103 58 #define KEY_F5 0x0104 59 #define KEY_F6 0x0105 60 #define KEY_F7 0x0106 61 #define KEY_F8 0x0107 62 #define KEY_F9 0x0108 63 #define KEY_F10 0x0109 64 #define KEY_F11 0x010A 65 #define KEY_F12 0x010B 66 67 #define KEY_UP 0x0120 68 #define KEY_DOWN 0x0121 69 #define KEY_LEFT 0x0122 70 #define KEY_RIGHT 0x0123 71 #define KEY_PGUP 0x0124 72 #define KEY_PGDN 0x0125 73 #define KEY_HOME 0x0126 74 #define KEY_END 0x0127 75 #define KEY_INSERT 0x0128 76 #define KEY_DELETE 0x0129 77 78 #define KEY_MAX 0x012a 79 80 #define KEY_MAXLEN 8 81 82 int get_key(FILE *, clock_t); 83 int key_name_to_code(const char *); 84 const char *key_code_to_name(int); 85 int get_key_decode(char *, int, int *); 86 87 #endif /* LIBUTIL_GETKEY_H */ 88