Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ Asc Ii

Автор: Chief 17.12.2004 2:59

Подскажите коды ASC II клавиш 'backspase', 'tab', 'capslock', 'shift', 'ctrl', 'alt'.
Или скажите где взять таблицу с этими кодами.

Автор: volvo 17.12.2004 3:23

http://msdn.microsoft.com/library/rus/default.asp?url=/library/RUS/vsintro7/html/_pluslang_ASCII_Character_Codes.asp - таблицы ASCII кодов.

'backspase' = chr(8)
'tab' = chr(9)

А вот с остальными - сложнее... У них нет 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...
rolleyes.gif

Автор: 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;

 while keypressed do readkey
end.