21.2. Опрос клавиши в регистре Ctrl

We use cookies. Read the Privacy and Cookie Policy

Опрос клавиши в регистре Ctrl мало чем отличается от обычного опроса. Правда, при нажатой клавише Ctrl эффект от нажатия алфавитной клавиши определяется ее латинским названием, даже если включен регистр кириллицы. Вопрос же в том, что вернет функция ReadKey в этом случае. Профессионалы могут получить ответ на этот вопрос из табл. 21.1 и не читать этот раздел. Нажатие в регистре Ctrl клавиши на алфавитной клавиатуре выдает в ReadKey ASCII-код в диапазоне 1..26. Значение этого кода равно порядковому номеру буквы в английском алфавите (Ctrl+A даст 1, а Ctrl+Z — 26). Поэтому, получив после выполнения строки

C := ReadKey

в переменную C управляющий символ, ее надо сравнивать уже не с алфавитом, а с самими управляющими символами. Пусть, например, надо опросить только комбинации Ctrl+F, Ctrl+P и Ctrl+S. Это можно сделать двумя способами:

1) repeat 2) repeat

c:= ReadKe c := ReadKey

until(c in [#6, #16, #19]); until(c in [^F, ^P, ^S]);

case c of (Ctrl+F, P и $) case c of (Ctrl+F, P и S)

... ...

end; {case} end; {case}

Первый способ использует специальный синтаксис Турбо Паскаля.

Второй способ основан на том, что можно коды, связанные с алфавитом, изображать как “K, где” — знак «стрелка вверх, а К — клавиша с соответствующим порядковым номером символа.

Таблица 21.1

Клавиша

Нормальное нажатие

+SHIFT

+CTRL

+ALT

A

65

97

1

0 30

B

66

98

2

0 48

C

67

99

3

0 46

D

68

100

4

0 32

E

69

101

5

0 18

- 497 -

F

70

102

6

0 33

G

71

103

7

0 34

H

72

104

8

0 35

I

73

105

9

0 23

J

74

106

10

0 36

K

75

107

11

0 37

L

76

108

12

0 38

M

77

109

13

0 50

N

78

110

14

0 49

O

79

111

15

0 24

P

80

112

16

0 25

Q

81

113

17

0 16

R

82

114

18

0 19

S

83

115

19

0 31

T

84

116

20

0 20

U

85

117

21

0 22

V

86

118

22

0 47

W

87

119

23

0 17

X

88

120

24

0 45

Y

89

121

25

0 21

Z

90

122

26

0 44

[{

91

123

27

|

92

124

28

]}

93

125

29

῾~

96

126

1!

49

33

0 120

2@

50

64

0 3

0 121

3#

51

35

0 122

4$

52

36

0 123

5%

53

37

0 124

6^

54

94

30

0 125

7&

55

38

0 126

8*

56

42

0 127

9(

57

40

0 128

0)

48

41

0 129

-_

45

95

31

0 130

=+

61

43

0 131

,<

44

60

.>

46

62

/?

47

63

;:

59

58

'”

39

34

Влево

0 75

52

0 115

4

Вправо

0 77

54

0 116

6

- 498 -

Вверх

0 72

56

8

Вниз

0 80

50

2

Home

0 71

55

0 119

7

End

0 79

49

0 117

1

PgUp

0 73

57

0 132

9

PgDn

0 81

51

0 118

3

Ins

0 82

48

Del

0 83

46

Esc

27

27

27

BackSpace

8

8

127

Tab

9

0 15

Серая /

47

47

Серая *

42

42

Серая -

45

45

Серая +

43

43

Enter

13

13

10

Пробел

32

32

32

32

F1

0 59

0 84

0 94

0 104

F2

0 60

0 85

0 95

0 105

F3

0 61

0 86

0 96

0 106

F4

0 62

0 87

0 97

0 107

F5

0 63

0 88

0 98

0 108

F6

0 64

0 89

0 99

0 109

F7

0 65

0 90

0 100

0 110

F8

0 66

0 91

0 101

0 111

F9

0 67

0 92

0 102

0 112

F10

0 68

0 93

0 103

0 113

F11

0 133

0 135

0 137

0 139

F12

0 134

0 136

0 138

0 140

Некоторые служебные и цифровые клавиши могут иметь иные коды на разных ПЭВМ.

Есть еще один способ — перечислить в множестве конструкции Chr(6), Chr(16), Chr(19) и т.п., но это будет слишком громоздко (хотя только через функцию Chr можно реализовать переменные значения символов в множествах).

Полный набор управляющих символов состоит из 32 наименований с кодами от 0 до 31 включительно. Не попавшие в диапазон 1..26 коды, однако, тоже могут быть получены аналогичным образом. Некоторые из цифровых клавиш, расположенных сразу над алфавитными, и знаков пунктуации в сочетании с регистром Ctrl дают недостающие коды (см. табл. 21.1). Хотя, признаться, авторы плохо представляют себе, где и как можно использовать такие «неуклюжие»

- 499 -

запросы, как Ctrl и клавиша «-» (код 31) или Ctrl+6 (код 30). Исключение составляет код 0. Он является чисто внутренним, и никакой комбинацией клавиш нельзя получить его в чистом виде.

Тот, кто просмотрит весь столбец «Ctrl» табл. 21.1, возможно, согласится с расстановкой кодов после буквы «Z» по принципу «максимального беспорядка». И, вероятно, понятное недоумение вызовут коды из двух цифр. Они описаны в следующем разделе.