00001 #ifndef __XKBD_H__
00002 #define __XKBD_H__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #include "tdef.h"
00033
00034
00035
00036 #ifdef __cplusplus
00037 extern "C" {
00038 #endif
00039
00040
00041
00042 BOOL xkbd_kbhit( VOID );
00043 UINT16 xkbd_getch( VOID );
00044 UINT16 xkbd_getstat( VOID );
00045 UINT16 xkbd_getchstat( VOID );
00046
00047 UINT16 xkbd_toupper( UINT16 code );
00048 UINT16 xkbd_tolower( UINT16 code );
00049
00050
00051
00052 #ifdef __cplusplus
00053 }
00054 #endif
00055
00056
00057
00058
00059
00060
00061 #define XKBD_FUNC ((UINT16)0x8000)
00062 #define xkbd_isfunc(n) ((n)&XKBD_FUNC)
00063 #define xkbd_isch(n) (!xkbd_isfunc(n))
00064
00065 #define XKBD_SHIFT ((UINT16)0x1000)
00066 #define XKBD_CTRL ((UINT16)0x2000)
00067 #define XKBD_ALT ((UINT16)0x4000)
00068 #define XKBD_STATBITS (XKBD_SHIFT|XKBD_CTRL|XKBD_ALT)
00069
00070 #define xkbd_testshift(n) ((n) & XKBD_SHIFT)
00071 #define xkbd_testctrl(n) ((n) & XKBD_CTRL)
00072 #define xkbd_testalt(n) ((n) & XKBD_ALT)
00073 #define xkbd_setshift(n) ((n) | XKBD_SHIFT)
00074 #define xkbd_setctrl(n) ((n) | XKBD_CTRL)
00075 #define xkbd_setalt(n) ((n) | XKBD_ALT)
00076 #define xkbd_resetshift(n) ((n) & ~XKBD_SHIFT)
00077 #define xkbd_resetctrl(n) ((n) & ~XKBD_CTRL)
00078 #define xkbd_resetalt(n) ((n) & ~XKBD_ALT)
00079
00080 #define xkbd_resetstat(k) ((k) & ~XKBD_STATBITS)
00081 #define xkbd_peekstat(k) ((k) & XKBD_STATBITS)
00082
00083
00084
00085 #define __FK XKBD_FUNC
00086
00087
00088 enum KeyType {
00089 K_None = 0x00,
00090 K_Esc = 0x1B,
00091 K_BackSpace = 0x08,
00092 K_Tab = 0x09,
00093 K_Enter = 0x0D,
00094 K_Space = 0x20,
00095 K_F1 = __FK | 0x3B,
00096 K_F2 = __FK | 0x3C,
00097 K_F3 = __FK | 0x3D,
00098 K_F4 = __FK | 0x3E,
00099 K_F5 = __FK | 0x3F,
00100 K_F6 = __FK | 0x40,
00101 K_F7 = __FK | 0x41,
00102 K_F8 = __FK | 0x42,
00103 K_F9 = __FK | 0x43,
00104 K_F10 = __FK | 0x44,
00105 K_F11 = __FK | 0x85,
00106 K_F12 = __FK | 0x86,
00107 K_Home = __FK | 0x47,
00108 K_UpArrow = __FK | 0x48,
00109 K_PgUp = __FK | 0x49,
00110 K_LeftArrow = __FK | 0x4B,
00111 K_KPCenter = __FK | 0x4C,
00112 K_RightArrow = __FK | 0x4D,
00113 K_End = __FK | 0x4F,
00114 K_DownArrow = __FK | 0x50,
00115 K_PgDn = __FK | 0x51,
00116 K_Ins = __FK | 0x52,
00117 K_Del = __FK | 0x53,
00118 K_ShiftTab = __FK | 0x0F,
00119
00120 K_ShiftF1 = __FK | 0x54,
00121 K_ShiftF2 = __FK | 0x55,
00122 K_ShiftF3 = __FK | 0x56,
00123 K_ShiftF4 = __FK | 0x57,
00124 K_ShiftF5 = __FK | 0x58,
00125 K_ShiftF6 = __FK | 0x59,
00126 K_ShiftF7 = __FK | 0x5A,
00127 K_ShiftF8 = __FK | 0x5B,
00128 K_ShiftF9 = __FK | 0x5C,
00129 K_ShiftF10 = __FK | 0x5D,
00130 K_ShiftF11 = __FK | 0x87,
00131 K_ShiftF12 = __FK | 0x88,
00132
00133 K_Ctrl2 = __FK | 0x03,
00134 K_Ctrl6 = 0x1E,
00135 K_CtrlHypen = 0x1F,
00136 K_CtrlBackSpace = 0x7F,
00137 K_CtrlTab = __FK | 0x94,
00138 K_CtrlQ = 0x11,
00139 K_CtrlW = 0x17,
00140 K_CtrlE = 0x05,
00141 K_CtrlR = 0x12,
00142 K_CtrlT = 0x14,
00143 K_CtrlY = 0x19,
00144 K_CtrlU = 0x15,
00145 K_CtrlI = K_Tab,
00146 K_CtrlO = 0x0F,
00147 K_CtrlP = 0x10,
00148 K_CtrlOpenSqrBracket = K_Esc,
00149 K_CtrlCloseSqrBracket = 0x1D,
00150 K_CtrlEnter = 0x0A,
00151 K_CtrlA = 0x01,
00152 K_CtrlS = 0x13,
00153 K_CtrlD = 0x04,
00154 K_CtrlF = 0x06,
00155 K_CtrlG = 0x07,
00156 K_CtrlH = K_BackSpace,
00157 K_CtrlJ = K_CtrlEnter,
00158 K_CtrlK = 0x0B,
00159 K_CtrlL = 0x0C,
00160 K_CtrlBackSlash = 0x1C,
00161 K_CtrlZ = 0x1A,
00162 K_CtrlX = 0x18,
00163 K_CtrlC = 0x03,
00164 K_CtrlV = 0x16,
00165 K_CtrlB = 0x02,
00166 K_CtrlN = 0x0E,
00167 K_CtrlM = K_Enter,
00168 K_CtrlGrayMul = __FK | 0x96,
00169 K_CtrlF1 = __FK | 0x5E,
00170 K_CtrlF2 = __FK | 0x5F,
00171 K_CtrlF3 = __FK | 0x60,
00172 K_CtrlF4 = __FK | 0x61,
00173 K_CtrlF5 = __FK | 0x62,
00174 K_CtrlF6 = __FK | 0x63,
00175 K_CtrlF7 = __FK | 0x64,
00176 K_CtrlF8 = __FK | 0x65,
00177 K_CtrlF9 = __FK | 0x66,
00178 K_CtrlF10 = __FK | 0x67,
00179 K_CtrlF11 = __FK | 0x89,
00180 K_CtrlF12 = __FK | 0x8A,
00181 K_CtrlHome = __FK | 0x77,
00182 K_CtrlUpArrow = __FK | 0x8D,
00183 K_CtrlPgUp = __FK | 0x84,
00184 K_CtrlGrayMinus = __FK | 0x8E,
00185 K_CtrlLeftArrow = __FK | 0x73,
00186 K_CtrlKPCenter = __FK | 0x8F,
00187 K_CtrlRightArrow = __FK | 0x74,
00188 K_CtrlGrayPlus = __FK | 0x90,
00189 K_CtrlEnd = __FK | 0x75,
00190 K_CtrlDownArrow = __FK | 0x91,
00191 K_CtrlPgDn = __FK | 0x76,
00192 K_CtrlIns = __FK | 0x92,
00193 K_CtrlDel = __FK | 0x93,
00194 K_CtrlGrayDiv = __FK | 0x95,
00195 K_CtrlPrtScr = K_CtrlP,
00196 K_CtrlBreak = K_CtrlC,
00197
00198 K_AltEsc = __FK | 0x01,
00199 K_Alt1 = __FK | 0x78,
00200 K_Alt2 = __FK | 0x79,
00201 K_Alt3 = __FK | 0x7A,
00202 K_Alt4 = __FK | 0x7B,
00203 K_Alt5 = __FK | 0x7C,
00204 K_Alt6 = __FK | 0x7D,
00205 K_Alt7 = __FK | 0x7E,
00206 K_Alt8 = __FK | 0x7F,
00207 K_Alt9 = __FK | 0x80,
00208 K_Alt0 = __FK | 0x81,
00209 K_AltHypen = __FK | 0x82,
00210 K_AltEqual = __FK | 0x83,
00211 K_AltBackSpace = __FK | 0x0E,
00212 K_AltTab = __FK | 0xA5,
00213 K_AltQ = __FK | 0x10,
00214 K_AltW = __FK | 0x11,
00215 K_AltE = __FK | 0x12,
00216 K_AltR = __FK | 0x13,
00217 K_AltT = __FK | 0x14,
00218 K_AltY = __FK | 0x15,
00219 K_AltU = __FK | 0x16,
00220 K_AltI = __FK | 0x17,
00221 K_AltO = __FK | 0x18,
00222 K_AltP = __FK | 0x19,
00223 K_AltOpenSqrBracket = __FK | 0x1A,
00224 K_AltCloseSqrBracket = __FK | 0x1B,
00225 K_AltEnter = __FK | 0x1C,
00226 K_AltA = __FK | 0x1E,
00227 K_AltS = __FK | 0x1F,
00228 K_AltD = __FK | 0x20,
00229 K_AltF = __FK | 0x21,
00230 K_AltG = __FK | 0x22,
00231 K_AltH = __FK | 0x23,
00232 K_AltJ = __FK | 0x24,
00233 K_AltK = __FK | 0x25,
00234 K_AltL = __FK | 0x26,
00235 K_AltSemiColon = __FK | 0x27,
00236 K_AltCloseCuotMark = __FK | 0x28,
00237 K_AltOpenCuotMark = __FK | 0x29,
00238 K_AltBackSlash = __FK | 0x2B,
00239 K_AltZ = __FK | 0x2C,
00240 K_AltX = __FK | 0x2D,
00241 K_AltC = __FK | 0x2E,
00242 K_AltV = __FK | 0x2F,
00243 K_AltB = __FK | 0x30,
00244 K_AltN = __FK | 0x31,
00245 K_AltM = __FK | 0x32,
00246 K_AltComma = __FK | 0x33,
00247 K_AltPoint = __FK | 0x34,
00248 K_AltDiv = __FK | 0x35,
00249 K_AltGrayMul = __FK | 0x37,
00250 K_AltF1 = __FK | 0x68,
00251 K_AltF2 = __FK | 0x69,
00252 K_AltF3 = __FK | 0x6A,
00253 K_AltF4 = __FK | 0x6B,
00254 K_AltF5 = __FK | 0x6C,
00255 K_AltF6 = __FK | 0x6D,
00256 K_AltF7 = __FK | 0x6E,
00257 K_AltF8 = __FK | 0x6F,
00258 K_AltF9 = __FK | 0x70,
00259 K_AltF10 = __FK | 0x71,
00260 K_AltF11 = __FK | 0x8B,
00261 K_AltF12 = __FK | 0x8C,
00262 K_AltGrayMinus = __FK | 0x4A,
00263 K_AltGrayPlus = __FK | 0x4E,
00264 K_AltGrayDiv = __FK | 0xA4,
00265 K_AltHome = __FK | 0x97,
00266 K_AltUpArrow = __FK | 0x98,
00267 K_AltPgUp = __FK | 0x99,
00268 K_AltLeftArrow = __FK | 0x9B,
00269 K_AltRightArrow = __FK | 0x9D,
00270 K_AltEnd = __FK | 0x9F,
00271 K_AltDownArrow = __FK | 0xA0,
00272 K_AltPgDn = __FK | 0xA1,
00273 K_AltIns = __FK | 0xA2,
00274 K_AltDel = __FK | 0xA3,
00275 K_AltGrayEnter = __FK | 0xA6,
00276 };
00277
00278
00279 #undef __FK
00280
00281
00282
00283 #endif