CHUI программы это программы ориентированные на символьный ввод-вывод,
CHaracter-User Interface. Такие программы строятся как консольные или телнет-
программы.
Для получения кода нажатой клавиши программа работающая на MiniM Database
Server должна вызвать команду чтения кода символа
read *codeПри этом если пользователь нажал клавишу соответствующую печатному символу, то в значении переменной code записывается десятичный код символа. Например, при нажатии клавиши "5":
USER>r *code 5 USER>w code 53В случае если пользователь нажимает клавишу которая не имеет печатного отображения, например клавиши Escape, F2 или Ins, то процесс MiniM возвращает в качестве кода прочитанного символа значение 27, соответствующее коду клавиши Escape. В этом случае программа чтения должна прочитать значение системной переменной $key непосредственно после чтения кода до следующего чтения символа или строки. В значении $key по соглашениям MiniM Database Server хранится полная escape последовательность, соответствующая нажатой клавише.
MiniM Database Server при обслуживании telnet-клиента возвращает в значении $key ту escape последовательность которая была послана telnet клиентом и ее значение полностью определяется используемым telnet клиентом.
При обслуживании консольного ввода MiniM Database Server эмулирует в возвращаемой escape последовательности наиболее распространенные telnet клиенты.
Например, при нажатии клавиши F5 получаем:
USER>r *code s key=$key zzdump key w $zquote(key),! 0000: 1B 4F 54 $C(27)_"OT"Здесь выведены шестнадцатеричные и строковые значения полученной escape последовательности для консоли MiniM.
Одной из особенностей обработки кодов escape последовательностей является обработка клавиш при одновременном нажатии модифицирующих клавиш Shift, Ctrl, Alt. В случае некоторых telnet клиентов информация об одновременном нажатии модифицирующих клавиш может утрачиваться, может передаваться жестко определенным кодом или может настраиваться. Для обработки кодов нажатых клавиш нужно обратиться к описанию используемого telnet клиента или проверить что он посылает при нажатии соответствующих клавиш.
В случае использования консоли MiniM информация о нажатии модифицирующих клавиш Shift, Ctrl, Alt передается дополнительными символами "a", "c", "s" в нижнем регистре именно в этой последовательности. Например, если нажата комбинация Ctrl+Alt+F5, то процесс MiniM возвращает такую последовательность:
USER>r *code s key=$key zzdump key w $zquote(key),! 0000: 1B 4F 54 61 63 $C(27)_"OTac"
Комментариев нет:
Отправить комментарий