- клавиша <5> дополнительной клавиатуры не действует, если
установлен режим управления курсором клавишей NumLock.
- комбинации Shift-PrtSc и Ctrl-Alt (а также SysReq для AT)
это единственные случаи, когда комбинация клавиш приводит к не-
медленному вызову некоторой процедуры. Из них только первая пе-
репрограммируема. Прерывание обработки Ctrl-Break (также переп-
рограммируемое) вызывается только тогда, когда статус Ctrl-Break
будет обнаружен процедурой MS DOS.
- любой код ASCII, кроме 0, может быть введен путем нажатия
клавиши Alt, набора кода ASCII на дополнительной клавиатуре и,
затем, отпускания клавиши Alt. Поскольку код 0 исключен, то рас-
ширенные коды не могут быть введены таким способом.
Отметим, что Вы практически ничего не можете сделать, чтобы прео-
долеть ограничения, накладываемые на недопустимые комбинации
клавиш. Hапример, Вы не можете определить комбинацию Ctrl + Cur-
sorUp, принимая код CursorUp, а затем проверяя регистр статуса
перключателей для определения того, была ли нажата клавиша Ctrl.
Если Ctrl была нажата, то клавиша CursorUp вообще не выдает ника-
кого кода.
3.3.1 Предопределенное использование клавиш.
Имеется ряд соглашений относительно использования клавиш,
которые должны выполняться всеми программами. Они описаны в Тех-
ническом руководстве и если программисты будут придерживаться их,
то пользователю будет легко переходить от одной программы к дру-
гой. Заметим, однако, что программное обеспечение самой фирмы IBM
не всегда следует этим соглашениям. Они таковы:
ScrollLock Переключает режим вывода на терминал, при
котором перемещение курсора сдвигает экран,
а не сам курсор
CTRL 4/6 Сдвигает курсор на слово влево/вправо.
Другая возможность: горизонтальный сдвиг
экрана на позицию табуляции влево/вправо.
Pg Up Возврат на 25 строк назад.
Pg Dn Сдвиг на 25 строк вперед.
CTRL END Удаление текста от позиции курсора до конца
строки.
CTRL PgDn Удаление текста от позиции курсора до конца
экрана.
HOME В тексте перемещает курсор к началу строки
или документа. В меню - возвращает в главное
меню.
CTRL HOME Чистит экран и помещает курсор в левый
верхний угол.
END Перемещает курсор к концу строки или к
концу документа.
BACKSPACE/DELETE DELETE уничтожает символ, на который указы-
вает курсор, и сдвигает остаток строки на
одну позицию влево. BACKSPACE удаляет символ
слева от курсора и делает то же самое.
INS Переключает режим вставки/замены.
TAB/BACKTAB Перемещает курсор в следующую позицию табу-
ляции, вправо - если была нажата одна и
влево - если вместе с клавишей Shift.
ESC Выход из программы или процедуры.
3.3.2 Сводная таблица скан-кодов.
Kаждая клавиша генерирует два типа скан-кодов, "код нажатия" -
когда клавиша нажимается, и "код освобождения" - когда клавиша
отпускается. Для всех машин, кроме AT, код освобождения на 128
больше кода нажатия (бит 7 = 1). Таким образом клавиша T создает
код 20 при нажатии и код 148 при отпускании. AT использует одну и
ту же цепочку битов для кодов нажатия и освобождения, но коды
освобождения состоят из двух байтов, первый из которых всегда
равен 0F0H. PCjr имеет специальный скан-код мнимой клавиши, номер
55. Этот код порождается, когда были одновременно нажаты три или
более клавиш, что помогает избежать ошибок при вводе. Прерывание
клавиатуры отбрасывает этот код и он не связывается ни с каким
кодом ASCII или расширенным кодом.
Kлавиши пишущей машинки
Kлавиша Kод нажатия Kлавиша Kод нажатия Kлавиша Kод нажатия
"1" 2 "T" 20 "L" 38
"2" 3 "Y" 21 ";" 39
"3" 4 "U" 22 "'" 40
"4" 5 "I" 23 "`" 41
"5" 6 "O" 24 "\" 43
"6" 7 "P" 25 "Z" 44
"7" 8 "[" 26 "X" 45
"8" 9 "]" 27 "C" 46
"9" 10 "A" 30 "V" 47
"0" 11 "S" 31 "B" 48
"-" 12 "D" 32 "N" 49
"=" 13 "F" 33 "M" 50
"Q" 16 "G" 34 "," 51
"W" 17 "H" 35 "." 52
"E" 18 "J" 36 "/" 53
"R" 19 "K" 37 пробел 57
Управляющие клавиши
Esc - 1 Ctrl - 29 Alt - 56
BackSpace - 14 left shift - 42 CapsLock - 58
Tab - 15 right shift - 42 NumLock - 58
Enter - 28 PrtSc - 55 ScrollLock - 70
Функциональные клавиши
F1 - 59 F5 - 63 F9 - 67
F2 - 60 F6 - 64 F10 - 68
F3 - 61 F7 - 65
F4 - 62 F8 - 66
Kлавиши дополнительной клавиатуры
"7" - 71 "5" - 76 "3" - 81
"8" - 72 "6" - 77 "0" - 82
"9" - 73 "+" - 78 "." - 83
"-" - 74 "1" - 79 Sys Req - 132 (только AT)
"4" - 75 "2" - 80 мнимая - 55 (только PCjr)
3.3.3 Сводная таблица кодов ASCII
Hомера кодов от 0 до 31, управляющих кодов, объяснены более
детально в [7.1.9]. Hапоминаем, что любой код ASCII от 1 до 255
может быть введен с клавиатуры, если держать нажатой клавишу Alt
при наборе номера кода на дополнительной клавиатуре (с соответст-
венно установленным режимом NumLock). Kогда клавиша Alt затем
освобождается, то код вводится.
Символ 10-ный 16-ричный двоичный Символ 10-ный 16-ричный двоичный
(null) 0 00 00000000 0 48 30 00110000
1 01 00000001 1 49 31 00110001
2 02 00000010 2 50 32 00110010
3 03 00000011 3 51 33 00110011
4 04 00000100 4 52 34 00110100
5 05 00000101 5 53 35 00110101
6 06 00000110 6 54 36 00110110
7 07 00000111 7 55 37 00110111
8 08 00001000 8 56 38 00111000
9 09 00001001 9 57 39 00111001
10 0A 00001010 : 58 3A 00111010
11 0B 00001011 ; 59 3B 00111011
12 0C 00001100 < 60 3C 00111100
13 0D 00001101 = 61 3D 00111101
14 0E 00001110 > 62 3E 00111110
15 0F 00001111 ? 63 3F 00111111
16 10 00010000 @ 64 40 01000000
17 11 00010001 A 65 41 01000001
18 12 00010010 B 66 42 01000010
19 13 00010011 C 67 43 01000011
20 14 00010100 D 68 44 01000100
21 15 00010101 E 69 45 01000101
22 16 00010110 F 70 46 01000110
23 17 00010111 G 71 47 01000111
24 18 00011000 H 72 48 01001000
25 19 00011001 I 73 49 01001001
26 1A 00011010 J 74 4A 01001010
27 1B 00011011 K 75 4B 01001011
28 1C 00011100 L 76 4C 01001100
29 1D 00011101 M 77 4D 01001101
30 1E 00011110 N 78 4E 01001110
31 1F 00011111 O 79 4F 01001111
пробел 32 20 00100000 P 80 50 01010000
! 33 21 00100001 Q 81 51 01010001
" 34 22 00100010 R 82 52 01010010
# 35 23 00100011 S 83 53 01010011
$ 36 24 00100100 T 84 54 01010100
% 37 25 00100101 U 85 55 01010101
& 38 26 00100110 V 86 56 01010110
' 39 27 00100111 W 87 57 01010111
( 40 28 00101000 X 88 58 01011000
) 41 29 00101001 Y 89 59 01011001
* 42 2A 00101010 Z 90 5A 01011010
+ 43 2B 00101011 [ 91 5B 01011011
, 44 2C 00101100 \ 92 5C 01011100
- 45 2D 00101101 ] 93 5D 01011101
. 46 2E 00101110 ^ 94 5E 01011110
/ 47 2F 00101111 _ 95 5F 01011111
Символ 10-ный 16-ричный двоичный Символ 10-ный 16-ричный двоичный
` 96 60 01100000 Щ 153 99 10011001
a 97 61 01100001 Ъ 154 9A 10011010
b 98 62 01100010 Ы 155 9B 10011011
c 99 63 01100011 Ь 156 9C 10011100
d 100 64 01100100 Э 157 9D 10011101
e 101 65 01100101 Ю 158 9E 10011110
f 102 66 01100110 Я 159 9F 10011111
g 103 67 01100111 а 160 A0 10100000
h 104 68 01101000 б 161 A1 10100001
i 105 69 01101001 в 162 A2 10100010
j 106 6A 01101010 г 163 A3 10100011
k 107 6B 01101011 д 164 A4 10100100
l 108 6C 01101100 е 165 A5 10100101
m 109 6D 01101101 ж 166 A6 10100110
n 110 6E 01101110 з 167 A7 10100111
o 111 6F 01101111 и 168 A8 10101000
p 112 70 01110000 й 169 A9 10101001
q 113 71 01110001 к 170 AA 10101010
r 114 72 01110010 л 171 AB 10101011
s 115 73 01110011 м 172 AC 10101100
t 116 74 01110100 н 173 AD 10101101
u 117 75 01110101 о 174 AE 10101110
v 118 76 01110110 п 175 AF 10101111
w 119 77 01110111 ° 176 B0 10110000
x 120 78 01111000 ± 177 B1 10110001
y 121 79 01111001 І 178 B2 10110010
z 122 7A 01111010 ¦ 179 B3 10110011