А вот с остальными - сложнее... У них нет ASCII-кода, и анализировать состояние клавиш регистов ('shift', 'ctrl', 'alt' и 'capslock', 'numlock', 'scrollock') можно по 2-м байтам с адресами $0000:$0417 и $0000:$0418
Цитата
Байт $0417 Биты 0 Нажат правый Shift 1 Нажат левый Shift 2 Нажат Ctrl 3 Нажат Alt 4 ScrollLock 5 NumLock 6 CapsLock 7 Ins (режим вставки/замещения)
Байт $0418 Биты 0 1, если нажаты Ctrl+Shift (слева) 1 1, если нажаты Alt+Shift (слева) 2 зависит от клавиатуры 3 зависит от клавиатуры 4 1, если нажат ScrollLock 5 1, если нажат NumLock 6 1, если нажат CapsLock 7 1, если нажата клавиша Ins
Автор: Chief 17.12.2004 3:33
volvo Большое спасибо :D
Автор: Dark 17.12.2004 5:19
А на будущее - у меня есть Великие Всезнающие друзья
www.google.ru www.ya.ru
спрашиваешь у них
Таблица ASCII кодов
они тебе ответят!
Автор: BRS 18.12.2004 14:07
А я никогда никаких таблойдов не юзал Просто быстренько писал прогу
Код
uses crt; var key : char;
begin repeat key := readkey; write(ord(key)); readln; until key = 'q'; end.
Автор: volvo 18.12.2004 15:47
BRS
Цитата
А я никогда никаких таблойдов не юзал Просто быстренько писал прогу
и с ее помощью находил, например, что просходит при нажатии Ctrl или Alt... Или клавиши управления курсором... Или F1-F12...
Автор: APAL 18.12.2004 15:55
Цитата
и с ее помощью находил, например, что просходит при нажатии Ctrl или Alt... Или клавиши управления курсором... Или F1-F12...
немного подправил
uses crt; var key : char; begin repeat key := readkey; If key=#0 then Begin Write('Расширенный код, '); key:=readkey; end; write(ord(key)); readln; until key = 'q'; end.
Автор: volvo 18.12.2004 16:25
Ну, а чтобы посмотреть, как изменяется байт $0:$417 при нажатии регистровых клавиш, делаем так (для выхода - Esc):
Код
uses crt;
function binary(x: longint; numOfBits: byte): string; var bit, i: byte; s: string[32]; begin s := ''; for i := 0 to 31 do begin bit := (x shl i) shr (31); s := s + chr(ord('0') + bit) end; delete(s, 1, 32 - numOfBits); binary := s end;
var m: byte absolute $0000:$0417; ch: char; begin clrscr; ch := #0; repeat writeln(m:10, ' ', binary(m, 8)); if keypressed then ch := readkey; until ch = #27;