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 175 /* no Shift/Ctrl/Alt */ 176 K_LSHIFT = 0xFFE1, 177 K_RSHIFT = 0xFFE2, 178 K_LCTRL = 0xFFE3, 179 K_RCTRL = 0xFFE4, 180 K_LALT = 0xFFE9, 181 K_RALT = 0xFFEA, 182 183 K_NUM = 0xFF7F, 184 K_SCROLL = 0xFF14, 185 K_CAPS = 0xFFE5, 186 187 /* Also, these are the same as the Latin-1 definition */ 188 189 K_ccedilla = 0x00E7, 190 K_Ccedilla = 0x00C7, 191 K_acute = 0x00B4, /* no Shift/Ctrl/Alt */ 192 K_diaeresis = 0x00A8, 193 } 194 195 /******************************************************/ 196 /* Modifiers use last 4 bits. Since IUP 3.9 */ 197 /* These modifiers definitions are specific to IUP */ 198 /******************************************************/ 199 200 bool iup_isShiftXkey(dchar _c) { return _c & 0x1000_0000; } 201 bool iup_isCtrlXkey(dchar _c) { return _c & 0x2000_0000; } 202 bool iup_isAltXkey(dchar _c) { return _c & 0x4000_0000; } 203 bool iup_isSysXkey(dchar _c) { return _c & 0x8000_0000; } 204 205 dchar iup_XkeyBase(dchar _c) { return _c & 0x0FFF_FFFF; } 206 dchar iup_XkeyShift(dchar _c) { return _c | 0x1000_0000; } /* Shift */ 207 dchar iup_XkeyCtrl(dchar _c) { return _c | 0x2000_0000; } /* Ctrl */ 208 dchar iup_XkeyAlt(dchar _c) { return _c | 0x4000_0000; } /* Alt */ 209 dchar iup_XkeySys(dchar _c) { return _c | 0x8000_0000; } /* Sys (Win or Apple) */ 210 211 /* These definitions are here for backward compatibility 212 and to simplify some key combination usage. 213 But since IUP 3.9, modifiers can be combined with any key 214 and they can be mixed together. */ 215 216 enum : dchar { 217 K_sHOME = iup_XkeyShift(K_HOME ), 218 K_sUP = iup_XkeyShift(K_UP ), 219 K_sPGUP = iup_XkeyShift(K_PGUP ), 220 K_sLEFT = iup_XkeyShift(K_LEFT ), 221 K_sMIDDLE = iup_XkeyShift(K_MIDDLE ), 222 K_sRIGHT = iup_XkeyShift(K_RIGHT ), 223 K_sEND = iup_XkeyShift(K_END ), 224 K_sDOWN = iup_XkeyShift(K_DOWN ), 225 K_sPGDN = iup_XkeyShift(K_PGDN ), 226 K_sINS = iup_XkeyShift(K_INS ), 227 K_sDEL = iup_XkeyShift(K_DEL ), 228 K_sSP = iup_XkeyShift(K_SP ), 229 K_sTAB = iup_XkeyShift(K_TAB ), 230 K_sCR = iup_XkeyShift(K_CR ), 231 K_sBS = iup_XkeyShift(K_BS ), 232 K_sPAUSE = iup_XkeyShift(K_PAUSE ), 233 K_sESC = iup_XkeyShift(K_ESC ), 234 K_sF1 = iup_XkeyShift(K_F1 ), 235 K_sF2 = iup_XkeyShift(K_F2 ), 236 K_sF3 = iup_XkeyShift(K_F3 ), 237 K_sF4 = iup_XkeyShift(K_F4 ), 238 K_sF5 = iup_XkeyShift(K_F5 ), 239 K_sF6 = iup_XkeyShift(K_F6 ), 240 K_sF7 = iup_XkeyShift(K_F7 ), 241 K_sF8 = iup_XkeyShift(K_F8 ), 242 K_sF9 = iup_XkeyShift(K_F9 ), 243 K_sF10 = iup_XkeyShift(K_F10 ), 244 K_sF11 = iup_XkeyShift(K_F11 ), 245 K_sF12 = iup_XkeyShift(K_F12 ), 246 K_sPrint = iup_XkeyShift(K_Print ), 247 K_sMenu = iup_XkeyShift(K_Menu ), 248 249 K_cHOME = iup_XkeyCtrl(K_HOME ), 250 K_cUP = iup_XkeyCtrl(K_UP ), 251 K_cPGUP = iup_XkeyCtrl(K_PGUP ), 252 K_cLEFT = iup_XkeyCtrl(K_LEFT ), 253 K_cMIDDLE = iup_XkeyCtrl(K_MIDDLE ), 254 K_cRIGHT = iup_XkeyCtrl(K_RIGHT ), 255 K_cEND = iup_XkeyCtrl(K_END ), 256 K_cDOWN = iup_XkeyCtrl(K_DOWN ), 257 K_cPGDN = iup_XkeyCtrl(K_PGDN ), 258 K_cINS = iup_XkeyCtrl(K_INS ), 259 K_cDEL = iup_XkeyCtrl(K_DEL ), 260 K_cSP = iup_XkeyCtrl(K_SP ), 261 K_cTAB = iup_XkeyCtrl(K_TAB ), 262 K_cCR = iup_XkeyCtrl(K_CR ), 263 K_cBS = iup_XkeyCtrl(K_BS ), 264 K_cPAUSE = iup_XkeyCtrl(K_PAUSE ), 265 K_cESC = iup_XkeyCtrl(K_ESC ), 266 K_cCcedilla= iup_XkeyCtrl(K_Ccedilla), 267 K_cF1 = iup_XkeyCtrl(K_F1 ), 268 K_cF2 = iup_XkeyCtrl(K_F2 ), 269 K_cF3 = iup_XkeyCtrl(K_F3 ), 270 K_cF4 = iup_XkeyCtrl(K_F4 ), 271 K_cF5 = iup_XkeyCtrl(K_F5 ), 272 K_cF6 = iup_XkeyCtrl(K_F6 ), 273 K_cF7 = iup_XkeyCtrl(K_F7 ), 274 K_cF8 = iup_XkeyCtrl(K_F8 ), 275 K_cF9 = iup_XkeyCtrl(K_F9 ), 276 K_cF10 = iup_XkeyCtrl(K_F10 ), 277 K_cF11 = iup_XkeyCtrl(K_F11 ), 278 K_cF12 = iup_XkeyCtrl(K_F12 ), 279 K_cPrint = iup_XkeyCtrl(K_Print ), 280 K_cMenu = iup_XkeyCtrl(K_Menu ), 281 282 K_mHOME = iup_XkeyAlt(K_HOME ), 283 K_mUP = iup_XkeyAlt(K_UP ), 284 K_mPGUP = iup_XkeyAlt(K_PGUP ), 285 K_mLEFT = iup_XkeyAlt(K_LEFT ), 286 K_mMIDDLE = iup_XkeyAlt(K_MIDDLE ), 287 K_mRIGHT = iup_XkeyAlt(K_RIGHT ), 288 K_mEND = iup_XkeyAlt(K_END ), 289 K_mDOWN = iup_XkeyAlt(K_DOWN ), 290 K_mPGDN = iup_XkeyAlt(K_PGDN ), 291 K_mINS = iup_XkeyAlt(K_INS ), 292 K_mDEL = iup_XkeyAlt(K_DEL ), 293 K_mSP = iup_XkeyAlt(K_SP ), 294 K_mTAB = iup_XkeyAlt(K_TAB ), 295 K_mCR = iup_XkeyAlt(K_CR ), 296 K_mBS = iup_XkeyAlt(K_BS ), 297 K_mPAUSE = iup_XkeyAlt(K_PAUSE ), 298 K_mESC = iup_XkeyAlt(K_ESC ), 299 K_mCcedilla= iup_XkeyAlt(K_Ccedilla), 300 K_mF1 = iup_XkeyAlt(K_F1 ), 301 K_mF2 = iup_XkeyAlt(K_F2 ), 302 K_mF3 = iup_XkeyAlt(K_F3 ), 303 K_mF4 = iup_XkeyAlt(K_F4 ), 304 K_mF5 = iup_XkeyAlt(K_F5 ), 305 K_mF6 = iup_XkeyAlt(K_F6 ), 306 K_mF7 = iup_XkeyAlt(K_F7 ), 307 K_mF8 = iup_XkeyAlt(K_F8 ), 308 K_mF9 = iup_XkeyAlt(K_F9 ), 309 K_mF10 = iup_XkeyAlt(K_F10 ), 310 K_mF11 = iup_XkeyAlt(K_F11 ), 311 K_mF12 = iup_XkeyAlt(K_F12 ), 312 K_mPrint = iup_XkeyAlt(K_Print ), 313 K_mMenu = iup_XkeyAlt(K_Menu ), 314 315 K_yHOME = iup_XkeySys(K_HOME ), 316 K_yUP = iup_XkeySys(K_UP ), 317 K_yPGUP = iup_XkeySys(K_PGUP ), 318 K_yLEFT = iup_XkeySys(K_LEFT ), 319 K_yMIDDLE = iup_XkeySys(K_MIDDLE ), 320 K_yRIGHT = iup_XkeySys(K_RIGHT ), 321 K_yEND = iup_XkeySys(K_END ), 322 K_yDOWN = iup_XkeySys(K_DOWN ), 323 K_yPGDN = iup_XkeySys(K_PGDN ), 324 K_yINS = iup_XkeySys(K_INS ), 325 K_yDEL = iup_XkeySys(K_DEL ), 326 K_ySP = iup_XkeySys(K_SP ), 327 K_yTAB = iup_XkeySys(K_TAB ), 328 K_yCR = iup_XkeySys(K_CR ), 329 K_yBS = iup_XkeySys(K_BS ), 330 K_yPAUSE = iup_XkeySys(K_PAUSE ), 331 K_yESC = iup_XkeySys(K_ESC ), 332 K_yCcedilla= iup_XkeySys(K_Ccedilla), 333 K_yF1 = iup_XkeySys(K_F1 ), 334 K_yF2 = iup_XkeySys(K_F2 ), 335 K_yF3 = iup_XkeySys(K_F3 ), 336 K_yF4 = iup_XkeySys(K_F4 ), 337 K_yF5 = iup_XkeySys(K_F5 ), 338 K_yF6 = iup_XkeySys(K_F6 ), 339 K_yF7 = iup_XkeySys(K_F7 ), 340 K_yF8 = iup_XkeySys(K_F8 ), 341 K_yF9 = iup_XkeySys(K_F9 ), 342 K_yF10 = iup_XkeySys(K_F10 ), 343 K_yF11 = iup_XkeySys(K_F11 ), 344 K_yF12 = iup_XkeySys(K_F12 ), 345 K_yPrint = iup_XkeySys(K_Print ), 346 K_yMenu = iup_XkeySys(K_Menu ), 347 348 K_sPlus = iup_XkeyShift(K_plus ), 349 K_sComma = iup_XkeyShift(K_comma ), 350 K_sMinus = iup_XkeyShift(K_minus ), 351 K_sPeriod = iup_XkeyShift(K_period ), 352 K_sSlash = iup_XkeyShift(K_slash ), 353 K_sAsterisk = iup_XkeyShift(K_asterisk), 354 355 K_cA = iup_XkeyCtrl(K_A), 356 K_cB = iup_XkeyCtrl(K_B), 357 K_cC = iup_XkeyCtrl(K_C), 358 K_cD = iup_XkeyCtrl(K_D), 359 K_cE = iup_XkeyCtrl(K_E), 360 K_cF = iup_XkeyCtrl(K_F), 361 K_cG = iup_XkeyCtrl(K_G), 362 K_cH = iup_XkeyCtrl(K_H), 363 K_cI = iup_XkeyCtrl(K_I), 364 K_cJ = iup_XkeyCtrl(K_J), 365 K_cK = iup_XkeyCtrl(K_K), 366 K_cL = iup_XkeyCtrl(K_L), 367 K_cM = iup_XkeyCtrl(K_M), 368 K_cN = iup_XkeyCtrl(K_N), 369 K_cO = iup_XkeyCtrl(K_O), 370 K_cP = iup_XkeyCtrl(K_P), 371 K_cQ = iup_XkeyCtrl(K_Q), 372 K_cR = iup_XkeyCtrl(K_R), 373 K_cS = iup_XkeyCtrl(K_S), 374 K_cT = iup_XkeyCtrl(K_T), 375 K_cU = iup_XkeyCtrl(K_U), 376 K_cV = iup_XkeyCtrl(K_V), 377 K_cW = iup_XkeyCtrl(K_W), 378 K_cX = iup_XkeyCtrl(K_X), 379 K_cY = iup_XkeyCtrl(K_Y), 380 K_cZ = iup_XkeyCtrl(K_Z), 381 K_c1 = iup_XkeyCtrl(K_1), 382 K_c2 = iup_XkeyCtrl(K_2), 383 K_c3 = iup_XkeyCtrl(K_3), 384 K_c4 = iup_XkeyCtrl(K_4), 385 K_c5 = iup_XkeyCtrl(K_5), 386 K_c6 = iup_XkeyCtrl(K_6), 387 K_c7 = iup_XkeyCtrl(K_7), 388 K_c8 = iup_XkeyCtrl(K_8), 389 K_c9 = iup_XkeyCtrl(K_9), 390 K_c0 = iup_XkeyCtrl(K_0), 391 K_cPlus = iup_XkeyCtrl(K_plus ), 392 K_cComma = iup_XkeyCtrl(K_comma ), 393 K_cMinus = iup_XkeyCtrl(K_minus ), 394 K_cPeriod = iup_XkeyCtrl(K_period ), 395 K_cSlash = iup_XkeyCtrl(K_slash ), 396 K_cSemicolon = iup_XkeyCtrl(K_semicolon ), 397 K_cEqual = iup_XkeyCtrl(K_equal ), 398 K_cBracketleft = iup_XkeyCtrl(K_bracketleft ), 399 K_cBracketright= iup_XkeyCtrl(K_bracketright), 400 K_cBackslash = iup_XkeyCtrl(K_backslash ), 401 K_cAsterisk = iup_XkeyCtrl(K_asterisk ), 402 403 K_mA = iup_XkeyAlt(K_A), 404 K_mB = iup_XkeyAlt(K_B), 405 K_mC = iup_XkeyAlt(K_C), 406 K_mD = iup_XkeyAlt(K_D), 407 K_mE = iup_XkeyAlt(K_E), 408 K_mF = iup_XkeyAlt(K_F), 409 K_mG = iup_XkeyAlt(K_G), 410 K_mH = iup_XkeyAlt(K_H), 411 K_mI = iup_XkeyAlt(K_I), 412 K_mJ = iup_XkeyAlt(K_J), 413 K_mK = iup_XkeyAlt(K_K), 414 K_mL = iup_XkeyAlt(K_L), 415 K_mM = iup_XkeyAlt(K_M), 416 K_mN = iup_XkeyAlt(K_N), 417 K_mO = iup_XkeyAlt(K_O), 418 K_mP = iup_XkeyAlt(K_P), 419 K_mQ = iup_XkeyAlt(K_Q), 420 K_mR = iup_XkeyAlt(K_R), 421 K_mS = iup_XkeyAlt(K_S), 422 K_mT = iup_XkeyAlt(K_T), 423 K_mU = iup_XkeyAlt(K_U), 424 K_mV = iup_XkeyAlt(K_V), 425 K_mW = iup_XkeyAlt(K_W), 426 K_mX = iup_XkeyAlt(K_X), 427 K_mY = iup_XkeyAlt(K_Y), 428 K_mZ = iup_XkeyAlt(K_Z), 429 K_m1 = iup_XkeyAlt(K_1), 430 K_m2 = iup_XkeyAlt(K_2), 431 K_m3 = iup_XkeyAlt(K_3), 432 K_m4 = iup_XkeyAlt(K_4), 433 K_m5 = iup_XkeyAlt(K_5), 434 K_m6 = iup_XkeyAlt(K_6), 435 K_m7 = iup_XkeyAlt(K_7), 436 K_m8 = iup_XkeyAlt(K_8), 437 K_m9 = iup_XkeyAlt(K_9), 438 K_m0 = iup_XkeyAlt(K_0), 439 K_mPlus = iup_XkeyAlt(K_plus ), 440 K_mComma = iup_XkeyAlt(K_comma ), 441 K_mMinus = iup_XkeyAlt(K_minus ), 442 K_mPeriod = iup_XkeyAlt(K_period ), 443 K_mSlash = iup_XkeyAlt(K_slash ), 444 K_mSemicolon = iup_XkeyAlt(K_semicolon ), 445 K_mEqual = iup_XkeyAlt(K_equal ), 446 K_mBracketleft = iup_XkeyAlt(K_bracketleft ), 447 K_mBracketright= iup_XkeyAlt(K_bracketright), 448 K_mBackslash = iup_XkeyAlt(K_backslash ), 449 K_mAsterisk = iup_XkeyAlt(K_asterisk ), 450 451 K_yA = iup_XkeySys(K_A), 452 K_yB = iup_XkeySys(K_B), 453 K_yC = iup_XkeySys(K_C), 454 K_yD = iup_XkeySys(K_D), 455 K_yE = iup_XkeySys(K_E), 456 K_yF = iup_XkeySys(K_F), 457 K_yG = iup_XkeySys(K_G), 458 K_yH = iup_XkeySys(K_H), 459 K_yI = iup_XkeySys(K_I), 460 K_yJ = iup_XkeySys(K_J), 461 K_yK = iup_XkeySys(K_K), 462 K_yL = iup_XkeySys(K_L), 463 K_yM = iup_XkeySys(K_M), 464 K_yN = iup_XkeySys(K_N), 465 K_yO = iup_XkeySys(K_O), 466 K_yP = iup_XkeySys(K_P), 467 K_yQ = iup_XkeySys(K_Q), 468 K_yR = iup_XkeySys(K_R), 469 K_yS = iup_XkeySys(K_S), 470 K_yT = iup_XkeySys(K_T), 471 K_yU = iup_XkeySys(K_U), 472 K_yV = iup_XkeySys(K_V), 473 K_yW = iup_XkeySys(K_W), 474 K_yX = iup_XkeySys(K_X), 475 K_yY = iup_XkeySys(K_Y), 476 K_yZ = iup_XkeySys(K_Z), 477 K_y1 = iup_XkeySys(K_1), 478 K_y2 = iup_XkeySys(K_2), 479 K_y3 = iup_XkeySys(K_3), 480 K_y4 = iup_XkeySys(K_4), 481 K_y5 = iup_XkeySys(K_5), 482 K_y6 = iup_XkeySys(K_6), 483 K_y7 = iup_XkeySys(K_7), 484 K_y8 = iup_XkeySys(K_8), 485 K_y9 = iup_XkeySys(K_9), 486 K_y0 = iup_XkeySys(K_0), 487 K_yPlus = iup_XkeySys(K_plus ), 488 K_yComma = iup_XkeySys(K_comma ), 489 K_yMinus = iup_XkeySys(K_minus ), 490 K_yPeriod = iup_XkeySys(K_period ), 491 K_ySlash = iup_XkeySys(K_slash ), 492 K_ySemicolon = iup_XkeySys(K_semicolon ), 493 K_yEqual = iup_XkeySys(K_equal ), 494 K_yBracketleft = iup_XkeySys(K_bracketleft ), 495 K_yBracketright= iup_XkeySys(K_bracketright), 496 K_yBackslash = iup_XkeySys(K_backslash ), 497 K_yAsterisk = iup_XkeySys(K_asterisk ), 498 }