Помогите решить проблему!Нужно определить каждую клавишу на клавиатуре через прерывание!В этой версии при нажатии на функциональные клавиши или стрелочки выдается сообщение о нажатии левого Шифта!Как это исправить?И как определить клвишы у которых скен коды больше 255(num look например)?
begin key:= readkey; if key<>#0 then begin case key of #8 : writeln ('BackSpace '); #9 : writeln ('Tab '); #13 : writeln ('Enter '); #27 : writeln ('Esc '); #32 : writeln ('Џа®ЎҐ« '); else writeln (Key); end; end else begin key:=readkey; case key of #59..#68 : writeln('F',ord(key)-58); #71: writeln('Home'); #72: writeln('Up'); #73: writeln('PageUp'); #75: writeln('Left'); #77: writeln('Right'); #79: writeln('End'); #80: writeln('Down'); #81: writeln('PageDown'); #82: writeln('Ins'); #83: writeln('Del'); end; end; end;
BEGIN GetIntVec($9, @SvInt9); SetIntVec($9, @New9);
repeat if keypressed then Klavisha else if Shift then begin if RightShift then write('Right ') else write('left '); writeln('Shift '); Shift := false; end else if Ctrl then begin writeln('Control '); Ctrl := false end else if Alt then begin writeln('Alt '); Alt := false end else if Capslook then begin writeln('CapsLook '); CapsLook := false; end
else if ScrollLook then begin writeln('ScrollLook '); ScrollLook := false; end else if F11 then begin writeln('F11 '); F11 := false; end else if F12 then begin writeln('F12 '); F12 := false; end else if NumLook then begin writeln('NumLook '); NumLook := false; end;
until exit;
SetIntVec($9, @SvInt9); END.
volvo
17.04.2007 6:01
Очень странно... У меня все правильно работает, отображаются как все Lock-и, так и Fxx, и стрелочки... Только исправь скан-код NumLock и убери вторую строку:
Спасибо большое!А как прописать скан код для PrintSCR и Break.Я уже все пересмотрел, везде либо больше 255 или вообще нет!Подскажите код? А вот что выдает Паскаль при нажатии Стрелочек, в этой программе: Нажмите для просмотра прикрепленного файла Картинка прилогается.
Принажатии на DEl, INS, ..., будет тоже самое только с др. клавишей!(DEl, INS, ..., соответственно вместо стрелочек).Получается что он использует один скан-код для несколька клавиш?
volvo
17.04.2007 13:33
Код PrintScreen должен быть = 55, а код Break у меня совпадает с кодом ScrollLock, потому что это физически одна клавиша, для моей клавиатуры надо анализировать состояние FLock ...
TarasBer
18.04.2007 1:26
Там ещё как то влияет случай когда scan=224. В общем, посмотрите мой вариант процедуры Ntw09. Я там правда для экономии памяти битовыми операциями увлёкся, но, надеюсь, разберётесь. И ещё, я не понял насчёт строчки Scan = 328... По-моему, scan не может оказаться больше 255, хотя бы потому, что ему присваивается Port[$60], а не PortW[$60]. А чтоб понять какая клавиша что значит - напишите тестовую программку.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.