Как обрабатывать сразу две кнопки?
Что делать если нажато одновременно две кнопки? В буфере клавиатуры записывается только одна клавиша! Что с этим делать?!
Так вроде следующая клавиша сразу же запишется в буфер. Тебе только нужно проверить, что она пошла туда сразу же после того, как ты достал первую кнопку из буфера. Это без проблем проходит в досе.
А если это сочетаение типа Alt-A, то код будет немного другим... Плюс нажаты ли шифты - это два байта статусных флагов.
if keypressed then
begin
ch:=readkey;
ex:=ch<>#0;
if not(ex) then ch:=readkey;
key:=ord(ch)+256*ord(not ex);
end;
а вот что нажато в зависимости от key:
kbcr = 13;
kbLeft = 331;
kbRight= 333;
kbUp = 328;
kbDown = 336;
kbHome = 327;
kbEnd = 335;
kbPgUp = 329;
kbPgDn = 337;
kbIns = 338;
kbDel = 339;
kbEsc = 27;
kbBkSp = 8;
kbTab = 9;
kbDiv = 47;
kbMul = 42;
kbMinus= 45;
kbPlus = 43;
kbEnter= 13;
kbSpace= 32;
kbF1 = 315;
kbF2 = 316;
kbF3 = 317;
kbF4 = 318;
kbF5 = 319;
kbF6 = 320;
kbF7 = 321;
kbF8 = 322;
kbF9 = 323;
kbF10 = 324;
kbF11 = 389;
kbF12 = 390;
kbCtrlA...kbCtrlZ - 1..26
kbShiftA...kbShiftZ - 65..90
kbAltA = 286;
kbAltB = 304;
kbAltC = 302;
kbAltD = 288;
kbAltE = 274;
kbAltF = 289;
kbAltG = 290;
kbAltH = 291;
kbAltI = 279;
kbAltJ = 292;
kbAltK = 293;
kbAltL = 294;
kbAltM = 306;
kbAltN = 305;
kbAltO = 280;
kbAltP = 281;
kbAltQ = 272;
kbAltR = 275;
kbAltS = 287;
kbAltT = 276;
kbAltU = 278;
kbAltV = 303;
kbAltW = 273;
kbAltX = 301;
kbAltY = 277;
kbAltZ = 300;
kbAlt1...kbAlt0 - 376..385
kbCtrlLeft = 371;
kbCtrlRight = 372;
kbCtrlHome = 375;
kbCtrlEnd = 373;
kbCtrlPgUp = 388;
kbCtrlPgDn = 374;
kbShiftF1 = 340;
kbShiftF2 = 341;
kbShiftF3 = 342;
kbShiftF4 = 343;
kbShiftF5 = 344;
kbShiftF6 = 345;
kbShiftF7 = 346;
kbShiftF8 = 347;
kbShiftF9 = 348;
kbShiftF10 = 349;
kbShiftF11 = 391;
kbShiftF12 = 392;
kbCtrlF1 = 350;
kbCtrlF2 = 351;
kbCtrlF3 = 352;
kbCtrlF4 = 353;
kbCtrlF5 = 354;
kbCtrlF6 = 355;
kbCtrlF7 = 356;
kbCtrlF8 = 357;
kbCtrlF9 = 358;
kbCtrlF10 = 359;
kbCtrlF11 = 393;
kbCtrlF12 = 394;
kbAltF1 = 360;
kbAltF2 = 361;
kbAltF3 = 362;
kbAltF4 = 363;
kbAltF5 = 364;
kbAltF6 = 365;
kbAltF7 = 366;
kbAltF8 = 367;
kbAltF9 = 368;
kbAltF10 = 369;
kbAltF11 = 395;
kbAltF12 = 396;