Драйвер ANSI.SYS и переопределения клавиатуры
7.5. Драйвер ANSI.SYS и переопределения клавиатуры
В состав DOS входит драйвер ANSI.SYS, обеспечивающий расширенные средства управления консолью. Чтобы иметь доступ к средствам, предоставляемым этим драйвером, в файл CONFIG.SYS должна быть включена команда: DEVICE=ANSI.SYS Функции драйвера ANSI.SYS вызываются путем вывода в стандартный вывод специально форматированных последовательностей символов. Эти последовательности начинаются символом с кодом 27 (0x1B, 8-ричный код -33), отсюда их название - Esc-последовательности. Второй символ Esc-последовательности "[" - код 91 (0x5B). Последующие символы варьируются. Для вызова ANSI-функций программа может использовать функции символьного вывода DOS или соответствующие средства языков высокого уровня, которые выдают символы на консоль. Большинство ANSI-функций управляют выводом на терминал и будут нами рассмотрены в соответствующем месте. Применительно к клавиатуре драйвер ANSI.SYS обеспечивает переназначение клавиатуры, присваивая заданной клавише новое значение ASCII -кода или целой последовательности кодов. Формат Esc-последовательности для переопределения клавиши следующий: <Esc>[<исходный код>;<заменитель>p, где "[", ";" и "p" - символы, кодируемые как показано; <Esc> - символ с кодом 27; <исходный код> - десятичный цифровой ASCII-код переназначаемой клавиши, для клавиш, имеющих расширенные ASCII-коды представляется как: 0;<код>; <заменитель> - это может быть другой код или коды, заданные либо в виде десятичных чисел, либо в виде строковых (взятых в кавычки) констант. Составляющие заменителя разделяются символами ; (точка с запятой). Для восстановления исходного значения клавиши следует выдать последовательность: <Esc>[<исходный код>;<исходный код>p Довольно громоздкий способ кодирования переопределений, возможно, станет более понятным при анализе следующего примера.