1 /** \file 2 * \brief Keyboard Keys definitions. 3 * 4 * See Copyright Notice in "iup.h" 5 */ 6 7 /* 8 Attention: Changed when binding to D: 9 There were no types at all in the underlying C-source file, just a bunch of #define, but some would work with/be/result in int types 10 In the D binding code, the type of a key is the smallest Char type, that can represent the key's value, either char, wchar or dchar. 11 Likewise, the key related functions operate on Char types only, even if they are templates 12 My reasoning is: This reduces mixing keys with other arbitrary integral types 13 This won't compile: auto keyA = 65; writeln("keyA is printable: ", iup_isprint(keyA)); // Error: template iup.iupkey.iup_isprint cannot deduce function from argument types !()(int) 14 This will compile: char keyB = 66; writeln("keyB is printable: ", iup_isprint(keyB)); // if You insist on using int literal 66 instead of K_B; the compiler is smart enough to implicitely convert 66 to char 15 */ 16 module iup.iupkey; 17 18 import std.traits : isSomeChar; 19 20 /* from 32 to 126, all character sets are equal, 21 the key code is the same as the ASCii character code. */ 22 enum : char { 23 K_SP = ' ', /* 32 (0x20) */ 24 K_exclam = '!', /* 33 */ 25 K_quotedbl = '\"', /* 34 */ 26 K_numbersign = '#', /* 35 */ 27 K_dollar = '$', /* 36 */ 28 K_percent = '%', /* 37 */ 29 K_ampersand = '&', /* 38 */ 30 K_apostrophe = '\'', /* 39 */ 31 K_parentleft = '(', /* 40 */ 32 K_parentright = ')', /* 41 */ 33 K_asterisk = '*', /* 42 */ 34 K_plus = '+', /* 43 */ 35 K_comma = ',', /* 44 */ 36 K_minus = '-', /* 45 */ 37 K_period = '.', /* 46 */ 38 K_slash = '/', /* 47 */ 39 K_0 = '0', /* 48 (0x30) */ 40 K_1 = '1', /* 49 */ 41 K_2 = '2', /* 50 */ 42 K_3 = '3', /* 51 */ 43 K_4 = '4', /* 52 */ 44 K_5 = '5', /* 53 */ 45 K_6 = '6', /* 54 */ 46 K_7 = '7', /* 55 */ 47 K_8 = '8', /* 56 */ 48 K_9 = '9', /* 57 */ 49 K_colon = ':', /* 58 */ 50 K_semicolon = ';', /* 59 */ 51 K_less = '<', /* 60 */ 52 K_equal = '=', /* 61 */ 53 K_greater = '>', /* 62 */ 54 K_question = '?', /* 63 */ 55 K_at = '@', /* 64 */ 56 K_A = 'A', /* 65 (0x41) */ 57 K_B = 'B', /* 66 */ 58 K_C = 'C', /* 67 */ 59 K_D = 'D', /* 68 */ 60 K_E = 'E', /* 69 */ 61 K_F = 'F', /* 70 */ 62 K_G = 'G', /* 71 */ 63 K_H = 'H', /* 72 */ 64 K_I = 'I', /* 73 */ 65 K_J = 'J', /* 74 */ 66 K_K = 'K', /* 75 */ 67 K_L = 'L', /* 76 */ 68 K_M = 'M', /* 77 */ 69 K_N = 'N', /* 78 */ 70 K_O = 'O', /* 79 */ 71 K_P = 'P', /* 80 */ 72 K_Q = 'Q', /* 81 */ 73 K_R = 'R', /* 82 */ 74 K_S = 'S', /* 83 */ 75 K_T = 'T', /* 84 */ 76 K_U = 'U', /* 85 */ 77 K_V = 'V', /* 86 */ 78 K_W = 'W', /* 87 */ 79 K_X = 'X', /* 88 */ 80 K_Y = 'Y', /* 89 */ 81 K_Z = 'Z', /* 90 */ 82 K_bracketleft = '[', /* 91 */ 83 K_backslash = '\\', /* 92 */ 84 K_bracketright= ']', /* 93 */ 85 K_circum = '^', /* 94 */ 86 K_underscore = '_', /* 95 */ 87 K_grave = '`', /* 96 */ 88 K_a = 'a', /* 97 (0x61) */ 89 K_b = 'b', /* 98 */ 90 K_c = 'c', /* 99 */ 91 K_d = 'd', /* 100 */ 92 K_e = 'e', /* 101 */ 93 K_f = 'f', /* 102 */ 94 K_g = 'g', /* 103 */ 95 K_h = 'h', /* 104 */ 96 K_i = 'i', /* 105 */ 97 K_j = 'j', /* 106 */ 98 K_k = 'k', /* 107 */ 99 K_l = 'l', /* 108 */ 100 K_m = 'm', /* 109 */ 101 K_n = 'n', /* 110 */ 102 K_o = 'o', /* 111 */ 103 K_p = 'p', /* 112 */ 104 K_q = 'q', /* 113 */ 105 K_r = 'r', /* 114 */ 106 K_s = 's', /* 115 */ 107 K_t = 't', /* 116 */ 108 K_u = 'u', /* 117 */ 109 K_v = 'v', /* 118 */ 110 K_w = 'w', /* 119 */ 111 K_x = 'x', /* 120 */ 112 K_y = 'y', /* 121 */ 113 K_z = 'z', /* 122 */ 114 K_braceleft = '{', /* 123 */ 115 K_bar = '|', /* 124 */ 116 K_braceright = '}', /* 125 */ 117 K_tilde = '~', /* 126 (0x7E) */ 118 } 119 120 /* Printable ASCii keys */ 121 122 bool iup_isprint(T)(T _c) if (isSomeChar!T) { return _c > 31 && _c < 127; } 123 124 /* also define the escape sequences that have keys associated */ 125 126 enum : char { 127 K_BS = '\b', /* 8 */ 128 K_TAB = '\t', /* 9 */ 129 K_LF = '\n', /* 10 (0x0A) not a real key, is a combination of CR with a modifier, just to document */ 130 K_CR = '\r', /* 13 (0x0D) */ 131 } 132 /* backward compatible definitions */ 133 134 enum : char { 135 K_quoteleft = K_grave, 136 K_quoteright = K_apostrophe, 137 } 138 139 /* IUP Extended Key Codes, range start at 128 */ 140 141 bool iup_isXkey(T)(T _c) if (isSomeChar!T) { return _c >= 128; } 142 143 /* These use the same definition as X11 and GDK. 144 This also means that any X11 or GDK definition can also be used. */ 145 146 enum : wchar { 147 K_PAUSE = 0xFF13, 148 K_ESC = 0xFF1B, 149 K_HOME = 0xFF50, 150 K_LEFT = 0xFF51, 151 K_UP = 0xFF52, 152 K_RIGHT = 0xFF53, 153 K_DOWN = 0xFF54, 154 K_PGUP = 0xFF55, 155 K_PGDN = 0xFF56, 156 K_END = 0xFF57, 157 K_MIDDLE = 0xFF0B, 158 K_Print = 0xFF61, 159 K_INS = 0xFF63, 160 K_Menu = 0xFF67, 161 K_DEL = 0xFFFF, 162 K_F1 = 0xFFBE, 163 K_F2 = 0xFFBF, 164 K_F3 = 0xFFC0, 165 K_F4 = 0xFFC1, 166 K_F5 = 0xFFC2, 167 K_F6 = 0xFFC3, 168 K_F7 = 0xFFC4, 169 K_F8 = 0xFFC5, 170 K_F9 = 0xFFC6, 171 K_F10 = 0xFFC7, 172 K_F11 = 0xFFC8, 173 K_F12 = 0xFFC9, 174 K_F13 = 0xFFCA, 175 K_F14 = 0xFFCB, 176 K_F15 = 0xFFCC, 177 K_F16 = 0xFFCD, 178 K_F17 = 0xFFCE, 179 K_F18 = 0xFFCF, 180 K_F19 = 0xFFD0, 181 K_F20 = 0xFFD1, 182 183 /* no Shift/Ctrl/Alt */ 184 K_LSHIFT = 0xFFE1, 185 K_RSHIFT = 0xFFE2, 186 K_LCTRL = 0xFFE3, 187 K_RCTRL = 0xFFE4, 188 K_LALT = 0xFFE9, 189 K_RALT = 0xFFEA, 190 191 K_NUM = 0xFF7F, 192 K_SCROLL = 0xFF14, 193 K_CAPS = 0xFFE5, 194 195 /* Mac clear button. Value randomly picked trying to avoid clashing with an existing value. */ 196 K_CLEAR = 0xFFD2, 197 /* Help button if anybody has it. Value randomly picked trying to avoid clashing with an existing value. */ 198 K_HELP = 0xFFD3, 199 200 /* Also, these are the same as the Latin-1 definition */ 201 202 K_ccedilla = 0x00E7, 203 K_Ccedilla = 0x00C7, 204 K_acute = 0x00B4, /* no Shift/Ctrl/Alt */ 205 K_diaeresis = 0x00A8, 206 } 207 208 /******************************************************/ 209 /* Modifiers use last 4 bits. Since IUP 3.9 */ 210 /* These modifiers definitions are specific to IUP */ 211 /******************************************************/ 212 213 bool iup_isShiftXkey()(dchar _c) { return (_c & 0x1000_0000) != 0; } 214 bool iup_isCtrlXkey()(dchar _c) { return (_c & 0x2000_0000) != 0; } 215 bool iup_isAltXkey()(dchar _c) { return (_c & 0x4000_0000) != 0; } 216 bool iup_isSysXkey()(dchar _c) { return (_c & 0x8000_0000) != 0; } 217 218 dchar iup_XkeyBase()(dchar _c) { return _c & 0x0FFF_FFFF; } 219 dchar iup_XkeyShift()(dchar _c) { return _c | 0x1000_0000; } /* Shift */ 220 dchar iup_XkeyCtrl()(dchar _c) { return _c | 0x2000_0000; } /* Ctrl */ 221 dchar iup_XkeyAlt()(dchar _c) { return _c | 0x4000_0000; } /* Alt */ 222 dchar iup_XkeySys()(dchar _c) { return _c | 0x8000_0000; } /* Sys (Win or Apple) - notice that using "int" will display a negative value */ 223 224 /* These definitions are here for backward compatibility 225 and to simplify some key combination usage. 226 But since IUP 3.9, modifiers can be combined with any key 227 and they can be mixed together. */ 228 229 enum : dchar { 230 K_sHOME = iup_XkeyShift(K_HOME ), 231 K_sUP = iup_XkeyShift(K_UP ), 232 K_sPGUP = iup_XkeyShift(K_PGUP ), 233 K_sLEFT = iup_XkeyShift(K_LEFT ), 234 K_sMIDDLE = iup_XkeyShift(K_MIDDLE ), 235 K_sRIGHT = iup_XkeyShift(K_RIGHT ), 236 K_sEND = iup_XkeyShift(K_END ), 237 K_sDOWN = iup_XkeyShift(K_DOWN ), 238 K_sPGDN = iup_XkeyShift(K_PGDN ), 239 K_sINS = iup_XkeyShift(K_INS ), 240 K_sDEL = iup_XkeyShift(K_DEL ), 241 K_sSP = iup_XkeyShift(K_SP ), 242 K_sTAB = iup_XkeyShift(K_TAB ), 243 K_sCR = iup_XkeyShift(K_CR ), 244 K_sBS = iup_XkeyShift(K_BS ), 245 K_sPAUSE = iup_XkeyShift(K_PAUSE ), 246 K_sESC = iup_XkeyShift(K_ESC ), 247 K_sCLEAR = iup_XkeyShift(K_CLEAR ), 248 K_sF1 = iup_XkeyShift(K_F1 ), 249 K_sF2 = iup_XkeyShift(K_F2 ), 250 K_sF3 = iup_XkeyShift(K_F3 ), 251 K_sF4 = iup_XkeyShift(K_F4 ), 252 K_sF5 = iup_XkeyShift(K_F5 ), 253 K_sF6 = iup_XkeyShift(K_F6 ), 254 K_sF7 = iup_XkeyShift(K_F7 ), 255 K_sF8 = iup_XkeyShift(K_F8 ), 256 K_sF9 = iup_XkeyShift(K_F9 ), 257 K_sF10 = iup_XkeyShift(K_F10 ), 258 K_sF11 = iup_XkeyShift(K_F11 ), 259 K_sF12 = iup_XkeyShift(K_F12 ), 260 K_sF13 = iup_XkeyShift(K_F13 ), 261 K_sF14 = iup_XkeyShift(K_F14 ), 262 K_sF15 = iup_XkeyShift(K_F15 ), 263 K_sF16 = iup_XkeyShift(K_F16 ), 264 K_sF17 = iup_XkeyShift(K_F17 ), 265 K_sF18 = iup_XkeyShift(K_F18 ), 266 K_sF19 = iup_XkeyShift(K_F19 ), 267 K_sF20 = iup_XkeyShift(K_F20 ), 268 K_sPrint = iup_XkeyShift(K_Print ), 269 K_sMenu = iup_XkeyShift(K_Menu ), 270 271 K_cHOME = iup_XkeyCtrl(K_HOME ), 272 K_cUP = iup_XkeyCtrl(K_UP ), 273 K_cPGUP = iup_XkeyCtrl(K_PGUP ), 274 K_cLEFT = iup_XkeyCtrl(K_LEFT ), 275 K_cMIDDLE = iup_XkeyCtrl(K_MIDDLE ), 276 K_cRIGHT = iup_XkeyCtrl(K_RIGHT ), 277 K_cEND = iup_XkeyCtrl(K_END ), 278 K_cDOWN = iup_XkeyCtrl(K_DOWN ), 279 K_cPGDN = iup_XkeyCtrl(K_PGDN ), 280 K_cINS = iup_XkeyCtrl(K_INS ), 281 K_cDEL = iup_XkeyCtrl(K_DEL ), 282 K_cSP = iup_XkeyCtrl(K_SP ), 283 K_cTAB = iup_XkeyCtrl(K_TAB ), 284 K_cCR = iup_XkeyCtrl(K_CR ), 285 K_cBS = iup_XkeyCtrl(K_BS ), 286 K_cPAUSE = iup_XkeyCtrl(K_PAUSE ), 287 K_cESC = iup_XkeyCtrl(K_ESC ), 288 K_cCLEAR = iup_XkeyCtrl(K_CLEAR ), 289 K_cCcedilla= iup_XkeyCtrl(K_Ccedilla), 290 K_cF1 = iup_XkeyCtrl(K_F1 ), 291 K_cF2 = iup_XkeyCtrl(K_F2 ), 292 K_cF3 = iup_XkeyCtrl(K_F3 ), 293 K_cF4 = iup_XkeyCtrl(K_F4 ), 294 K_cF5 = iup_XkeyCtrl(K_F5 ), 295 K_cF6 = iup_XkeyCtrl(K_F6 ), 296 K_cF7 = iup_XkeyCtrl(K_F7 ), 297 K_cF8 = iup_XkeyCtrl(K_F8 ), 298 K_cF9 = iup_XkeyCtrl(K_F9 ), 299 K_cF10 = iup_XkeyCtrl(K_F10 ), 300 K_cF11 = iup_XkeyCtrl(K_F11 ), 301 K_cF12 = iup_XkeyCtrl(K_F12 ), 302 K_cF13 = iup_XkeyCtrl(K_F13 ), 303 K_cF14 = iup_XkeyCtrl(K_F14 ), 304 K_cF15 = iup_XkeyCtrl(K_F15 ), 305 K_cF16 = iup_XkeyCtrl(K_F16 ), 306 K_cF17 = iup_XkeyCtrl(K_F17 ), 307 K_cF18 = iup_XkeyCtrl(K_F18 ), 308 K_cF19 = iup_XkeyCtrl(K_F19 ), 309 K_cF20 = iup_XkeyCtrl(K_F20 ), 310 K_cPrint = iup_XkeyCtrl(K_Print ), 311 K_cMenu = iup_XkeyCtrl(K_Menu ), 312 313 K_mHOME = iup_XkeyAlt(K_HOME ), 314 K_mUP = iup_XkeyAlt(K_UP ), 315 K_mPGUP = iup_XkeyAlt(K_PGUP ), 316 K_mLEFT = iup_XkeyAlt(K_LEFT ), 317 K_mMIDDLE = iup_XkeyAlt(K_MIDDLE ), 318 K_mRIGHT = iup_XkeyAlt(K_RIGHT ), 319 K_mEND = iup_XkeyAlt(K_END ), 320 K_mDOWN = iup_XkeyAlt(K_DOWN ), 321 K_mPGDN = iup_XkeyAlt(K_PGDN ), 322 K_mINS = iup_XkeyAlt(K_INS ), 323 K_mDEL = iup_XkeyAlt(K_DEL ), 324 K_mSP = iup_XkeyAlt(K_SP ), 325 K_mTAB = iup_XkeyAlt(K_TAB ), 326 K_mCR = iup_XkeyAlt(K_CR ), 327 K_mBS = iup_XkeyAlt(K_BS ), 328 K_mPAUSE = iup_XkeyAlt(K_PAUSE ), 329 K_mESC = iup_XkeyAlt(K_ESC ), 330 K_mCLEAR = iup_XkeyAlt(K_CLEAR ), 331 K_mCcedilla= iup_XkeyAlt(K_Ccedilla), 332 K_mF1 = iup_XkeyAlt(K_F1 ), 333 K_mF2 = iup_XkeyAlt(K_F2 ), 334 K_mF3 = iup_XkeyAlt(K_F3 ), 335 K_mF4 = iup_XkeyAlt(K_F4 ), 336 K_mF5 = iup_XkeyAlt(K_F5 ), 337 K_mF6 = iup_XkeyAlt(K_F6 ), 338 K_mF7 = iup_XkeyAlt(K_F7 ), 339 K_mF8 = iup_XkeyAlt(K_F8 ), 340 K_mF9 = iup_XkeyAlt(K_F9 ), 341 K_mF10 = iup_XkeyAlt(K_F10 ), 342 K_mF11 = iup_XkeyAlt(K_F11 ), 343 K_mF12 = iup_XkeyAlt(K_F12 ), 344 K_mF13 = iup_XkeyAlt(K_F13 ), 345 K_mF14 = iup_XkeyAlt(K_F14 ), 346 K_mF15 = iup_XkeyAlt(K_F15 ), 347 K_mF16 = iup_XkeyAlt(K_F16 ), 348 K_mF17 = iup_XkeyAlt(K_F17 ), 349 K_mF18 = iup_XkeyAlt(K_F18 ), 350 K_mF19 = iup_XkeyAlt(K_F19 ), 351 K_mF20 = iup_XkeyAlt(K_F20 ), 352 K_mPrint = iup_XkeyAlt(K_Print ), 353 K_mMenu = iup_XkeyAlt(K_Menu ), 354 355 K_yHOME = iup_XkeySys(K_HOME ), 356 K_yUP = iup_XkeySys(K_UP ), 357 K_yPGUP = iup_XkeySys(K_PGUP ), 358 K_yLEFT = iup_XkeySys(K_LEFT ), 359 K_yMIDDLE = iup_XkeySys(K_MIDDLE ), 360 K_yRIGHT = iup_XkeySys(K_RIGHT ), 361 K_yEND = iup_XkeySys(K_END ), 362 K_yDOWN = iup_XkeySys(K_DOWN ), 363 K_yPGDN = iup_XkeySys(K_PGDN ), 364 K_yINS = iup_XkeySys(K_INS ), 365 K_yDEL = iup_XkeySys(K_DEL ), 366 K_ySP = iup_XkeySys(K_SP ), 367 K_yTAB = iup_XkeySys(K_TAB ), 368 K_yCR = iup_XkeySys(K_CR ), 369 K_yBS = iup_XkeySys(K_BS ), 370 K_yPAUSE = iup_XkeySys(K_PAUSE ), 371 K_yESC = iup_XkeySys(K_ESC ), 372 K_yCLEAR = iup_XkeySys(K_CLEAR ), 373 K_yCcedilla= iup_XkeySys(K_Ccedilla), 374 K_yF1 = iup_XkeySys(K_F1 ), 375 K_yF2 = iup_XkeySys(K_F2 ), 376 K_yF3 = iup_XkeySys(K_F3 ), 377 K_yF4 = iup_XkeySys(K_F4 ), 378 K_yF5 = iup_XkeySys(K_F5 ), 379 K_yF6 = iup_XkeySys(K_F6 ), 380 K_yF7 = iup_XkeySys(K_F7 ), 381 K_yF8 = iup_XkeySys(K_F8 ), 382 K_yF9 = iup_XkeySys(K_F9 ), 383 K_yF10 = iup_XkeySys(K_F10 ), 384 K_yF11 = iup_XkeySys(K_F11 ), 385 K_yF12 = iup_XkeySys(K_F12 ), 386 K_yF13 = iup_XkeySys(K_F13 ), 387 K_yF14 = iup_XkeySys(K_F14 ), 388 K_yF15 = iup_XkeySys(K_F15 ), 389 K_yF16 = iup_XkeySys(K_F16 ), 390 K_yF17 = iup_XkeySys(K_F17 ), 391 K_yF18 = iup_XkeySys(K_F18 ), 392 K_yF19 = iup_XkeySys(K_F19 ), 393 K_yF20 = iup_XkeySys(K_F20 ), 394 K_yPrint = iup_XkeySys(K_Print ), 395 K_yMenu = iup_XkeySys(K_Menu ), 396 397 K_sPlus = iup_XkeyShift(K_plus ), 398 K_sComma = iup_XkeyShift(K_comma ), 399 K_sMinus = iup_XkeyShift(K_minus ), 400 K_sPeriod = iup_XkeyShift(K_period ), 401 K_sSlash = iup_XkeyShift(K_slash ), 402 K_sAsterisk = iup_XkeyShift(K_asterisk), 403 404 K_cA = iup_XkeyCtrl(K_A), 405 K_cB = iup_XkeyCtrl(K_B), 406 K_cC = iup_XkeyCtrl(K_C), 407 K_cD = iup_XkeyCtrl(K_D), 408 K_cE = iup_XkeyCtrl(K_E), 409 K_cF = iup_XkeyCtrl(K_F), 410 K_cG = iup_XkeyCtrl(K_G), 411 K_cH = iup_XkeyCtrl(K_H), 412 K_cI = iup_XkeyCtrl(K_I), 413 K_cJ = iup_XkeyCtrl(K_J), 414 K_cK = iup_XkeyCtrl(K_K), 415 K_cL = iup_XkeyCtrl(K_L), 416 K_cM = iup_XkeyCtrl(K_M), 417 K_cN = iup_XkeyCtrl(K_N), 418 K_cO = iup_XkeyCtrl(K_O), 419 K_cP = iup_XkeyCtrl(K_P), 420 K_cQ = iup_XkeyCtrl(K_Q), 421 K_cR = iup_XkeyCtrl(K_R), 422 K_cS = iup_XkeyCtrl(K_S), 423 K_cT = iup_XkeyCtrl(K_T), 424 K_cU = iup_XkeyCtrl(K_U), 425 K_cV = iup_XkeyCtrl(K_V), 426 K_cW = iup_XkeyCtrl(K_W), 427 K_cX = iup_XkeyCtrl(K_X), 428 K_cY = iup_XkeyCtrl(K_Y), 429 K_cZ = iup_XkeyCtrl(K_Z), 430 K_c1 = iup_XkeyCtrl(K_1), 431 K_c2 = iup_XkeyCtrl(K_2), 432 K_c3 = iup_XkeyCtrl(K_3), 433 K_c4 = iup_XkeyCtrl(K_4), 434 K_c5 = iup_XkeyCtrl(K_5), 435 K_c6 = iup_XkeyCtrl(K_6), 436 K_c7 = iup_XkeyCtrl(K_7), 437 K_c8 = iup_XkeyCtrl(K_8), 438 K_c9 = iup_XkeyCtrl(K_9), 439 K_c0 = iup_XkeyCtrl(K_0), 440 K_cPlus = iup_XkeyCtrl(K_plus ), 441 K_cComma = iup_XkeyCtrl(K_comma ), 442 K_cMinus = iup_XkeyCtrl(K_minus ), 443 K_cPeriod = iup_XkeyCtrl(K_period ), 444 K_cSlash = iup_XkeyCtrl(K_slash ), 445 K_cSemicolon = iup_XkeyCtrl(K_semicolon ), 446 K_cEqual = iup_XkeyCtrl(K_equal ), 447 K_cBracketleft = iup_XkeyCtrl(K_bracketleft ), 448 K_cBracketright= iup_XkeyCtrl(K_bracketright), 449 K_cBackslash = iup_XkeyCtrl(K_backslash ), 450 K_cAsterisk = iup_XkeyCtrl(K_asterisk ), 451 452 K_mA = iup_XkeyAlt(K_A), 453 K_mB = iup_XkeyAlt(K_B), 454 K_mC = iup_XkeyAlt(K_C), 455 K_mD = iup_XkeyAlt(K_D), 456 K_mE = iup_XkeyAlt(K_E), 457 K_mF = iup_XkeyAlt(K_F), 458 K_mG = iup_XkeyAlt(K_G), 459 K_mH = iup_XkeyAlt(K_H), 460 K_mI = iup_XkeyAlt(K_I), 461 K_mJ = iup_XkeyAlt(K_J), 462 K_mK = iup_XkeyAlt(K_K), 463 K_mL = iup_XkeyAlt(K_L), 464 K_mM = iup_XkeyAlt(K_M), 465 K_mN = iup_XkeyAlt(K_N), 466 K_mO = iup_XkeyAlt(K_O), 467 K_mP = iup_XkeyAlt(K_P), 468 K_mQ = iup_XkeyAlt(K_Q), 469 K_mR = iup_XkeyAlt(K_R), 470 K_mS = iup_XkeyAlt(K_S), 471 K_mT = iup_XkeyAlt(K_T), 472 K_mU = iup_XkeyAlt(K_U), 473 K_mV = iup_XkeyAlt(K_V), 474 K_mW = iup_XkeyAlt(K_W), 475 K_mX = iup_XkeyAlt(K_X), 476 K_mY = iup_XkeyAlt(K_Y), 477 K_mZ = iup_XkeyAlt(K_Z), 478 K_m1 = iup_XkeyAlt(K_1), 479 K_m2 = iup_XkeyAlt(K_2), 480 K_m3 = iup_XkeyAlt(K_3), 481 K_m4 = iup_XkeyAlt(K_4), 482 K_m5 = iup_XkeyAlt(K_5), 483 K_m6 = iup_XkeyAlt(K_6), 484 K_m7 = iup_XkeyAlt(K_7), 485 K_m8 = iup_XkeyAlt(K_8), 486 K_m9 = iup_XkeyAlt(K_9), 487 K_m0 = iup_XkeyAlt(K_0), 488 K_mPlus = iup_XkeyAlt(K_plus ), 489 K_mComma = iup_XkeyAlt(K_comma ), 490 K_mMinus = iup_XkeyAlt(K_minus ), 491 K_mPeriod = iup_XkeyAlt(K_period ), 492 K_mSlash = iup_XkeyAlt(K_slash ), 493 K_mSemicolon = iup_XkeyAlt(K_semicolon ), 494 K_mEqual = iup_XkeyAlt(K_equal ), 495 K_mBracketleft = iup_XkeyAlt(K_bracketleft ), 496 K_mBracketright= iup_XkeyAlt(K_bracketright), 497 K_mBackslash = iup_XkeyAlt(K_backslash ), 498 K_mAsterisk = iup_XkeyAlt(K_asterisk ), 499 500 K_yA = iup_XkeySys(K_A), 501 K_yB = iup_XkeySys(K_B), 502 K_yC = iup_XkeySys(K_C), 503 K_yD = iup_XkeySys(K_D), 504 K_yE = iup_XkeySys(K_E), 505 K_yF = iup_XkeySys(K_F), 506 K_yG = iup_XkeySys(K_G), 507 K_yH = iup_XkeySys(K_H), 508 K_yI = iup_XkeySys(K_I), 509 K_yJ = iup_XkeySys(K_J), 510 K_yK = iup_XkeySys(K_K), 511 K_yL = iup_XkeySys(K_L), 512 K_yM = iup_XkeySys(K_M), 513 K_yN = iup_XkeySys(K_N), 514 K_yO = iup_XkeySys(K_O), 515 K_yP = iup_XkeySys(K_P), 516 K_yQ = iup_XkeySys(K_Q), 517 K_yR = iup_XkeySys(K_R), 518 K_yS = iup_XkeySys(K_S), 519 K_yT = iup_XkeySys(K_T), 520 K_yU = iup_XkeySys(K_U), 521 K_yV = iup_XkeySys(K_V), 522 K_yW = iup_XkeySys(K_W), 523 K_yX = iup_XkeySys(K_X), 524 K_yY = iup_XkeySys(K_Y), 525 K_yZ = iup_XkeySys(K_Z), 526 K_y1 = iup_XkeySys(K_1), 527 K_y2 = iup_XkeySys(K_2), 528 K_y3 = iup_XkeySys(K_3), 529 K_y4 = iup_XkeySys(K_4), 530 K_y5 = iup_XkeySys(K_5), 531 K_y6 = iup_XkeySys(K_6), 532 K_y7 = iup_XkeySys(K_7), 533 K_y8 = iup_XkeySys(K_8), 534 K_y9 = iup_XkeySys(K_9), 535 K_y0 = iup_XkeySys(K_0), 536 K_yPlus = iup_XkeySys(K_plus ), 537 K_yComma = iup_XkeySys(K_comma ), 538 K_yMinus = iup_XkeySys(K_minus ), 539 K_yPeriod = iup_XkeySys(K_period ), 540 K_ySlash = iup_XkeySys(K_slash ), 541 K_ySemicolon = iup_XkeySys(K_semicolon ), 542 K_yEqual = iup_XkeySys(K_equal ), 543 K_yBracketleft = iup_XkeySys(K_bracketleft ), 544 K_yBracketright= iup_XkeySys(K_bracketright), 545 K_yBackslash = iup_XkeySys(K_backslash ), 546 K_yAsterisk = iup_XkeySys(K_asterisk ), 547 }