Клиппер 5. Справочник

кодировку символов. Символьные константы для


    Функция действует подобно Clipper-команде KEYBOARD, но использует иную
    кодировку символов. Символьные константы для используемой кодировки
    определены в поставляемом с CT II файле описаний NT2SCAN.CH и включены
    в "Введение в Clipper Tools II/5.0": Приложение Б.
 
    Использование функцией KEYSEND() скан-кодов клавиш позволяет помещать
    в буфер те коды, которые недопустимы для Clipper-команды KEYBOARD
    (меньше 0 и больше 255), например, коды всех функциональных клавиш и
    большинства <Alt>-комбинаций. То же самое относится к различным, но
    имеющим один INKEY-код клавишам. Поэтому при необходимости эмулировать
    нажатие функциональных или управляющих клавиш лучше вместо команды
    KEYBOARD использовать четко их различающую функцию KEYSEND().
 


    Как при выполнении Clipper-команды KEYBOARD, так и при вызове
    KEYSEND(), содержимое буфера клавиатуры стирается перед записью новых
    символов. Однако, если функция вызвана со значением .T.  параметра
    <lAdditiveMode>, новые коды добавляются к текущему содержимому буфера.
 
  Примечания
 
  . Таблица кодов клавиш в CT II расширена, однако прежние коды
    также действительны (см. файл описаний NT2SCAN.CH).
 
  . Максимальная длина строки для записи в буфер клавиатуры
    вычисляется по формуле:
 
       максимальная выделяемая память / 2
 
    Коды клавиш, записываемые командой KEYBOARD в Clipper-буфер
    клавиатуры, не распознаются функцией KEYREAD(). Для решения
    проблемы может быть предложено использование в программе
    директивы препроцессора:
 
       #command KEYBOARD(<c>) => KEYSEND(EXPAND(<c>), .F., .T.)
 
  . Вызов функции EXPAND() позволяет преобразовать строку
    однобайтовых INKEY-кодов клавиш в строку двухбайтовых
    последовательностей. Значение .T. третьего параметра указывает
    функции KEYSEND() игнорировать ненулевые значения скан-кода
    эмулируемой клавиши.

Содержание раздела