Помощь - Поиск - Пользователи - Календарь
Полная версия: Asc Ii
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
Chief
Подскажите коды ASC II клавиш 'backspase', 'tab', 'capslock', 'shift', 'ctrl', 'alt'.
Или скажите где взять таблицу с этими кодами.
volvo
Смотри здесь - таблицы 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
volvo
Большое спасибо :D
Dark
А на будущее - у меня есть Великие Всезнающие друзья

www.google.ru
www.ya.ru

спрашиваешь у них

Таблица ASCII кодов

они тебе ответят!
BRS
А я никогда никаких таблойдов не юзал
Просто быстренько писал прогу

Код
uses crt;
var key : char;

begin
repeat
key := readkey;
write(ord(key));
readln;
until key = 'q';
end.
volvo
BRS
Цитата
А я никогда никаких таблойдов не юзал Просто быстренько писал прогу

и с ее помощью находил, например, что просходит при нажатии Ctrl или Alt... Или клавиши управления курсором... Или F1-F12...
rolleyes.gif
APAL
Цитата
и с ее помощью находил, например, что просходит при нажатии 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
Ну, а чтобы посмотреть, как изменяется байт $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.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.