pascal readkey коды клавиш
Функция ReadKey.
В прошлом уроке мы познакомились с функцией KeyPressed, которая реагирует на нажатие клавиши. В этом уроке мы рассмотрим функцию ReadKey. Ее отличие от функции KeyPressed в том, что она не просто реагирует на нажатие клавиши, но и сообщает о том, какая именно клавиша была нажата.
Если данная функция встречается в программе, то программа останавливается и ждет нажатие клавиши, причем символ нажатой клавиши не высвечивается на экране. Функция ReadKey считывает код введенного символа из буфера клавиатуры и возвращает значение типа CHAR. Например, если вы введете с клавиатуры строчную латинскую букву «a», то функция ReadKey возвратит значение Chr(97). Рассмотрим программу, которая показывает отличие функции ReadKey от процедуры Readln.
В строке №6 вводим с клавиатуры символ.
В строке №7 выводим символ на экран.
Как видите при вводе символа с клавиатуры, он сразу же отображается на экране, а после нажатия клавиши Enter на экран выводится сообщение.
Теперь заменим строку №6 на такую: klav:=readkey.
В строке №6 в переменную «klav» записываем значение функции ReadKey. На этом этапе программа останавливается и ждет нажатия клавиши (как и при использовании процедуры Readln). После нажатия клавиши код этой клавиши будет возвращен в качестве значения функции ReadKey (как и при использовании процедуры Readln) и записан в переменную «klav». На экран будет выведен символ соответствующий этому коду.
Как видите, при нажатии клавиши, у нас сразу вывелось сообщение.
Pascal readkey коды клавиш
Windows, Real, Protected
Замечания
Символ не отображается на экране.
При нажатии некоторых специальных клавиш (стрелки и функциональные клавиши) ReadKey возвращает нулевой символ (#0), а повторный вызов ReadKey возвратит сканкод нажатой клавиши.
Коды специальных клавиш
Клавиша | Что возвращает ReadKey? |
---|---|
Escape | #27 |
Enter | #13 |
Ctrl+Enter | #10 |
Backspace | #8 |
Ctrl+Backspace | #127 |
Tab | #9 |
Shift+Tab | #15 |
F1 | #0, #59 |
F2 | #0, #60 |
F3 | #0, #61 |
F4 | #0, #62 |
F5 | #0, #63 |
F6 | #0, #64 |
F7 | #0, #65 |
F8 | #0, #66 |
F9 | #0, #67 |
F10 | #0, #68 |
← | #0, #75 |
↑ | #0, #72 |
→ | #0, #77 |
↓ | #0, #80 |
Delete | #0, #83 |
Insert | #0, #82 |
Home | #0, #71 |
End | #0, #79 |
Page Up | #0, #73 |
Page Down | #0, #81 |
NumPad 5 1 | #0, #76 |
Shift+F1 | #0, #84 |
Shift+F2 | #0, #85 |
Shift+F3 | #0, #86 |
Shift+F4 | #0, #87 |
Shift+F5 | #0, #88 |
Shift+F6 | #0, #89 |
Shift+F7 | #0, #90 |
Shift+F8 | #0, #91 |
Shift+F9 | #0, #92 |
Shift+F10 | #0, #93 |
Ctrl+F1 | #0, #94 |
Ctrl+F2 | #0, #95 |
Ctrl+F3 | #0, #96 |
Ctrl+F4 | #0, #97 |
Ctrl+F5 | #0, #98 |
Ctrl+F6 | #0, #99 |
Ctrl+F7 | #0, #100 |
Ctrl+F8 | #0, #101 |
Ctrl+F9 | #0, #102 |
Ctrl+F10 | #0, #103 |
Alt+F1 | #0, #104 |
Alt+F2 | #0, #105 |
Alt+F3 | #0, #106 |
Alt+F4 | #0, #107 |
Alt+F5 | #0, #108 |
Alt+F6 | #0, #109 |
Alt+F7 | #0, #110 |
Alt+F8 | #0, #111 |
Alt+F9 | #0, #112 |
Alt+F10 | #0, #113 |
Ctrl+← | #0, #115 |
Ctrl+→ | #0, #116 |
Ctrl+Home | #0, #119 |
Ctrl+End | #0, #117 |
Ctrl+Page Up | #0, #132 |
Ctrl+Page Down | #0, #118 |
Ctrl+2 | #0, #3 |
Ctrl+A | #1 |
Ctrl+B | #2 |
Ctrl+C 2 | #3 |
Ctrl+D | #4 |
Ctrl+E | #5 |
Ctrl+F | #6 |
Ctrl+G | #7 |
Ctrl+H 3 | #8 |
Ctrl+I | #9 |
Ctrl+J | #10 |
Ctrl+K | #11 |
Ctrl+L | #12 |
Ctrl+M | #13 |
Ctrl+N | #14 |
Ctrl+O | #15 |
Ctrl+P | #16 |
Ctrl+Q | #17 |
Ctrl+R | #18 |
Ctrl+S | #19 |
Ctrl+T | #20 |
Ctrl+U | #21 |
Ctrl+V | #22 |
Ctrl+W | #23 |
Ctrl+X | #24 |
Ctrl+Y | #25 |
Ctrl+Z | #26 |
Ctrl+[ | #27 |
Ctrl+\ | #28 |
Ctrl+] | #29 |
Ctrl+6 | #30 |
Ctrl+— | #31 |
Alt+Q | #0, #16 |
Alt+W | #0, #17 |
Alt+E | #0, #18 |
Alt+R | #0, #19 |
Alt+T | #0, #20 |
Alt+Y | #0, #21 |
Alt+U | #0, #22 |
Alt+I | #0, #23 |
Alt+O | #0, #24 |
Alt+P | #0, #25 |
Alt+A | #0, #30 |
Alt+S | #0, #31 |
Alt+D | #0, #32 |
Alt+F | #0, #33 |
Alt+G | #0, #34 |
Alt+H | #0, #35 |
Alt+J | #0, #36 |
Alt+K | #0, #37 |
Alt+L | #0, #38 |
Alt+Z | #0, #44 |
Alt+X | #0, #45 |
Alt+C | #0, #46 |
Alt+V | #0, #47 |
Alt+B | #0, #48 |
Alt+N | #0, #49 |
Alt+M | #0, #50 |
Alt+1 | #0, #120 |
Alt+2 | #0, #121 |
Alt+3 | #0, #122 |
Alt+4 | #0, #123 |
Alt+5 | #0, #124 |
Alt+6 | #0, #125 |
Alt+7 | #0, #126 |
Alt+8 | #0, #127 |
Alt+9 | #0, #128 |
Alt+0 | #0, #129 |
Alt+— | #0, #130 |
Alt+= | #0, #131 |
Приведённая таблица не претендует на полноту
См. также
Пример
Язык:
Русский
English
самоучитель Паскаль он-лайн
Он-лайн самоучитель Паскаль
Программирование клавиатуры
Дополнительные возможности управления клавиатурой реализуются двумя функциями: KeyPressed и ReadKey.
В MS-DOS реализуется так называемый асинхронный буферизованный ввод с клавиатуры. По мере нажатия на клавиши соответствующие коды помещаются в особый буфер, откуда они могут быть затем прочитаны программой. Стандартная длина буфера рассчитана на хранение до 16 кодов символов. Если программа достаточно долго не обращается к клавиатуре, а пользователь нажимает клавиши, буфер может оказаться переполненным. В этот момент раздается звуковой сигнал и «лишние» коды теряются. Чтение из буфера обеспечивается процедурами Read/ReadLn и функцией ReadKey. Замечу, что обращение к функции KeyPressed не задерживает исполнения программы: функция немедленно анализирует буфер и возвращает то или иное значение, не дожидаясь нажатия клавиши.
Возвращает значение типа Char. При обращении к этой функции анализируется буфер клавиатуры: если в нем есть хотя бы один не прочитанный символ, код этого символа берется из буфера и возвращается в качестве значения функции, в противном случае функция будет ожидать нажатия на любую клавишу. Ввод символа с помощью этой функции не сопровождается эхо-повтором и содержимое экрана не меняется.
Пусть, например, в какой-то точке программы необходимо игнорировать все ранее нажатые клавиши, коды которых еще не прочитаны из буфера, т.е. необходимо очистить буфер. Этого можно достичь следующим способом:
while KeyPressed do
Т.е. код сканирования клавиши. Этот код определяется порядком, в соответствии с которым микропроцессор клавиатуры Intel 8042 периодически опрашивает (сканирует) состояние клавиш.
Следующая простая программа позволит Вам определить расширенный код любой клавиши. Для завершения работы программы нажмите клавишу Esc.
В табл. 13.1 приводятся расширенные коды клавиш, возвращаемые функцией ord(ReadKey). Для режима ввода кириллицы приводятся коды, соответствующие альтернативному варианту кодировки.
Таблица 13.1 Расширенные коды клавиш
Pascal readkey коды клавиш
Windows, Real, Protected
Замечания
Символ не отображается на экране.
При нажатии некоторых специальных клавиш (стрелки и функциональные клавиши) ReadKey возвращает нулевой символ (#0), а повторный вызов ReadKey возвратит сканкод нажатой клавиши.
Коды специальных клавиш
Клавиша | Что возвращает ReadKey? |
---|---|
Escape | #27 |
Enter | #13 |
Ctrl+Enter | #10 |
Backspace | #8 |
Ctrl+Backspace | #127 |
Tab | #9 |
Shift+Tab | #15 |
F1 | #0, #59 |
F2 | #0, #60 |
F3 | #0, #61 |
F4 | #0, #62 |
F5 | #0, #63 |
F6 | #0, #64 |
F7 | #0, #65 |
F8 | #0, #66 |
F9 | #0, #67 |
F10 | #0, #68 |
← | #0, #75 |
↑ | #0, #72 |
→ | #0, #77 |
↓ | #0, #80 |
Delete | #0, #83 |
Insert | #0, #82 |
Home | #0, #71 |
End | #0, #79 |
Page Up | #0, #73 |
Page Down | #0, #81 |
NumPad 5 1 | #0, #76 |
Shift+F1 | #0, #84 |
Shift+F2 | #0, #85 |
Shift+F3 | #0, #86 |
Shift+F4 | #0, #87 |
Shift+F5 | #0, #88 |
Shift+F6 | #0, #89 |
Shift+F7 | #0, #90 |
Shift+F8 | #0, #91 |
Shift+F9 | #0, #92 |
Shift+F10 | #0, #93 |
Ctrl+F1 | #0, #94 |
Ctrl+F2 | #0, #95 |
Ctrl+F3 | #0, #96 |
Ctrl+F4 | #0, #97 |
Ctrl+F5 | #0, #98 |
Ctrl+F6 | #0, #99 |
Ctrl+F7 | #0, #100 |
Ctrl+F8 | #0, #101 |
Ctrl+F9 | #0, #102 |
Ctrl+F10 | #0, #103 |
Alt+F1 | #0, #104 |
Alt+F2 | #0, #105 |
Alt+F3 | #0, #106 |
Alt+F4 | #0, #107 |
Alt+F5 | #0, #108 |
Alt+F6 | #0, #109 |
Alt+F7 | #0, #110 |
Alt+F8 | #0, #111 |
Alt+F9 | #0, #112 |
Alt+F10 | #0, #113 |
Ctrl+← | #0, #115 |
Ctrl+→ | #0, #116 |
Ctrl+Home | #0, #119 |
Ctrl+End | #0, #117 |
Ctrl+Page Up | #0, #132 |
Ctrl+Page Down | #0, #118 |
Ctrl+2 | #0, #3 |
Ctrl+A | #1 |
Ctrl+B | #2 |
Ctrl+C 2 | #3 |
Ctrl+D | #4 |
Ctrl+E | #5 |
Ctrl+F | #6 |
Ctrl+G | #7 |
Ctrl+H 3 | #8 |
Ctrl+I | #9 |
Ctrl+J | #10 |
Ctrl+K | #11 |
Ctrl+L | #12 |
Ctrl+M | #13 |
Ctrl+N | #14 |
Ctrl+O | #15 |
Ctrl+P | #16 |
Ctrl+Q | #17 |
Ctrl+R | #18 |
Ctrl+S | #19 |
Ctrl+T | #20 |
Ctrl+U | #21 |
Ctrl+V | #22 |
Ctrl+W | #23 |
Ctrl+X | #24 |
Ctrl+Y | #25 |
Ctrl+Z | #26 |
Ctrl+[ | #27 |
Ctrl+\ | #28 |
Ctrl+] | #29 |
Ctrl+6 | #30 |
Ctrl+— | #31 |
Alt+Q | #0, #16 |
Alt+W | #0, #17 |
Alt+E | #0, #18 |
Alt+R | #0, #19 |
Alt+T | #0, #20 |
Alt+Y | #0, #21 |
Alt+U | #0, #22 |
Alt+I | #0, #23 |
Alt+O | #0, #24 |
Alt+P | #0, #25 |
Alt+A | #0, #30 |
Alt+S | #0, #31 |
Alt+D | #0, #32 |
Alt+F | #0, #33 |
Alt+G | #0, #34 |
Alt+H | #0, #35 |
Alt+J | #0, #36 |
Alt+K | #0, #37 |
Alt+L | #0, #38 |
Alt+Z | #0, #44 |
Alt+X | #0, #45 |
Alt+C | #0, #46 |
Alt+V | #0, #47 |
Alt+B | #0, #48 |
Alt+N | #0, #49 |
Alt+M | #0, #50 |
Alt+1 | #0, #120 |
Alt+2 | #0, #121 |
Alt+3 | #0, #122 |
Alt+4 | #0, #123 |
Alt+5 | #0, #124 |
Alt+6 | #0, #125 |
Alt+7 | #0, #126 |
Alt+8 | #0, #127 |
Alt+9 | #0, #128 |
Alt+0 | #0, #129 |
Alt+— | #0, #130 |
Alt+= | #0, #131 |
Приведённая таблица не претендует на полноту
См. также
Пример
Язык:
Русский
English