Man pages на русском

         

KEYBOARD(HW)


НАЗВАНИЕ

keyboard - клавиатура персонального компьютера.

ОПИСАНИЕ

Клавиатура персонального компьютера используется для ввода данных, переключения экранов и направления некоторых управляющих сигналов компьютеру. Система UNIX выполняет эмуляцию экрана и клавиатуры терминала и при этом извлекает пользу из некоторых особенных клавиш и их комбинаций. Эти клавиши и их комбинации имеют специальные названия, которые уникальны в системе UNIX и могут соответствовать, а могут и не соответствовать меткам клавиш на вашей клавиатуре. Эти клавиши будут описаны позже.

Когда вы нажимаете клавишу, происходит одно из следующих событий:

  • Вводится символ ASCII.
  • Компьютеру посылается символьная строка.
  • Запускается какая-либо функция.
  • Меняется значение другой клавиши или клавиш.
  • Когда нажимается клавиша, клавиатура посылает компьютеру скан-код, который интерпретируется драйвером клавиатуры. Интерпретация кодов клавиш может быть изменена так, что клавиши могут начать функционировать по другому, отлично от их установок по умолчанию.

    Различают три особенных события при нажатии клавиш:

    • Переключение экранов.
    • Генерация сигнала.
    • Изменение значения предыдущего символа, символов или строки.
    • Переключение экранов (многоэкранный режим)

      Для переключения на следующий экран нажмите Ctrl-PrtSc, используя клавиши Ctrl и PrtSc. Любой активный экран может быть выбран нажатием alt-Fn, где Fn - одна из функциональных клавиш. F1 относится к дисплею компьютера (/dev/tty01).

      Сигналы

      Сигналы оказывают воздействие на процесс или несколько процессов. Примерами сигналов являются Ctrl-d (конец ввода и выход из оболочки), Ctrl-\ (завершение процесса), Ctrl-s ( остановка выдачи еа экран) и Ctrl-q (возобновление выдачи).

      Обычно символы ставятся в соответствие сигналам с помощью stty(1). Единственный способ поставить сигнал в соответствие символам через посредство stty.

      Изменение значения нажатий клавиш

      Действительный код, посылаемый драйверу клавиатуры, может быть изменен с помощью комбинации некоторых клавиш. Например, клавиша SHIFT меняет значение символов ASCII буквенно-цифровых клавиш. Удерживание клавиши Ctrl при нажатии других клавиш генерирует управляющие коды (Ctrl-d, Ctrl-s, Ctrl-q и др.).

      Специальные клавиши




      Для облегчения отыскания специальных клавиш в следующей таблице показано соответствие клавиш типичной консоли ключам системы UNIX. В этой таблице черточка (-) между названиями клавиш означает "удерживайте первую клавишу, нажимая на вторую".
      Название в системе XENIXМетки на клавиатуреДействие INTRDelОстанавливает текущее действие и возвращает в оболочку. Эта клавиша называется также RUB OUT или INTERRUPT. BACKSPACE<-Удаляет первый символ слева от курсора. Заметьте, что клавиша "движения курсора влево" также имеет метку "стрелка влево", но она не удаляет символы. Ctrl-dCtrl-dСигнализирует о конце ввода с клавиатуры; кроме того осуществляет выход из текущей оболочки. Ctrl-hCtrl-hУдаляет первый символ слева от курсора. Называется также ERASE. Ctrl-qCtrl-qВозобновляет выдачу после ее остановки с помощью нажатия Ctrl-s. Ctrl-sCtrl-sОстанавливает выдачу на экран (работа программы не прекращается). Ctrl-uCtrl-uУдаляет все символы на текущей строке. Называется также KILL. Ctrl-\Ctrl-\Прекращает выполнение текущей команды и создает core-файл, если это разрешено. (Рекомендуется только для отладки.) ESCAPEEscСпециальный код для некоторых программ. В текстовом редакторе vi(C) переключает режим вставки в командный режим. RETURN(down-left arrow or ENTER)Завершает введение командной строки и ининциирует действие оболочки. FnFnФункциональная клавиша n. F1-F12 используются без нажатия SHIFT. F13-F24 генерируются с помощью SHIFT. F25-F36 генерируются с помощью Ctrl-F1 через F12, F37-F48 генерируются с помощью Ctrl-Shift-F1 через F12. Следующие клавиши Fn (F49-F60) находятся на дополнительной цифровой панели (Shift не используется): F49 - '7'

      F55 - '6'

      F50 - '8'

      F55 - '+'

      F51 - '9'

      F55 - '1'

      F52 - '-'

      F55 - '2'

      F53 - '4'

      F55 - '3'

      F54 - '5'

      F55 - '0'

      Соответствия клавишам F61-F96 смотрите в файле /usr/lib/keyboard/strings. Эти функциональные ключи доступны не на всех клавиатурах, но вы можете поставить им в соответствие другие клавиши.



      Назначение клавиш клавиатуры формируется с помощью структуры, определенной в файле /usr/include/sys/keyboard.h. Каждая клавиша может иметь десять состояний. Первые восемь таковы:


      • Base
      • Shift
      • Ctrl
      • Alt
      • Ctrl-Shift
      • Alt-Shift
      • Alt-Ctrl
      • Alt-Ctrl-Shift


      • Два дополнительных состояния обозначаются двумя специальными байтами. Первый является байтом "специального состояния", биты которого указывают, является ли данный ключ "специальным" в одном или нескольких из первых восьми состояний.

        Второй может быть одним из четырех символов (C, N, B, O), указывающих на то, как служебные клавиши фиксации регистров влияют на них.

        Режимы клавиатуры

        Большинство клавиатур обычно находятся в режиме XT, но некоторые из них могут быть установлены в режим AT. Для определения того, поддерживает ли клавиатура режим AT, имеется утилита kbmode(8), которая может быть также использована для переключения клавиатуры в режим AT после очередной перезагрузки системы. Можно установить системную конфигурацию клавиатуры на режим AT с помощью утилиты configure(8).

        Клавиатуры с расширенными возможностями программируются в режиме AT более полно, в котором распознаются также по две клавиши Ctrl и Alt.

        Скан-коды

        В следующей таблице описывается содержимое файла /usr/lib/keyboard/keys, устанавливаемое по умолчанию. Она содержит следующие заголовки колонок:

        SCAN CODE - скан-код, генерируемый аппаратной частью клавиатуры при нажатии клавиши. Пользователь не имеет доступа к скан-коду, генерируемому на отжатие клавиши.

        BASE - нормальное значение, генерируемое при нажатие клавиши.

        SHIFT - значение, генерируемое при нажатии клавиши при нажатой клавише SHIFT.

        LOCK - указывает, как служебные клавиши фиксации регистра воздействуют на эту клавишу:


        • C указывает на воздействие со стороны Capslock
        • N указывает на воздействие со стороны Numlock
        • B указывает на воздействие со стороны Numlock и Capslock вместе
        • O указывает на отсутствие этого воздействия


        • Клавиши типа C, N и B генерируют смещенное значение скан-кода в состоянии, когда эти служебные клавиши включены. Если при этом будет нажата клавиша Shift, то значение скан-кода будет переключено обратно.



          Прочие колонки таблицы представляют значения, генерируемые при нажатии данной клавиши в комбинации с удерживаемыми клавишами CTRL, ALT и SHIFT.

          Все эти значения, за исключением ключевых слов, представляют собой символы ASCII. Ключевые слова относятся к специальным функциональным клавишам.

          SCAN CODEBASESHIFTCTRLCTRL SHIFTALTALT SHIFTALT CTRLALT CTRL SHIFTLOCK

          0nopnopnopnopnopnopnopnopO 1escescnopnopescescnopnopO 2'1''!'nopnop'1''!'nopnopO 3'2''@'nopnop'2''@'nopnopO 4'3''#'nopnop'3''#'nopnopO 5'4''$'nopnop'4''#'nopnopO 6'5''%'nopnop'5''%'nopnopO 7'6''^'rsrs'6''^'rsrsO 8'7''&'nopnop'7''&'nopnopO 9'8''*'nopnop'8''*'nopnopO 10'9''('nopnop'9''('nopnopO 11'0'')'nopnop'0'')'nopnopO 12'-''_'nsns'-''_'nsnsO 13'=''+'nopnop'=''+'nopnopO 14bsbsdeldelbsbsdeldelO 15htbtabnopnophtbtabnopnopO 16'q''Q'dc1dc1'q''Q'dc1dc1C 17'w''W'etbetb'w''W'etbetbC 18'e''E'enqenq'e''E'enqenqC 19'r''R'dc2dc2'r''R'dc2dc2C 20't''T'dc4dc4't''T'dc4dc4C 21'y''Y'emem'y''Y'ememC 22'u''U'naknak'u''U'naknakC 23'i''I'htht'i''I'hthtC 24'o''O'sisi'o''O'sisiC 25'p''P'dledle'p''P'dledleC 26'[''{'escesc'[''{'escescO 27']''}'gsgs']''}'gsgsO 28crcrnlnlcrcrnlnlO 29ctrlctrlctrlctrlctrlctrlctrlctrlO 30'a''A'sohsoh'a''A'sohsohC 31's''S'dc3dc3's''S'dc3dc3C 32'd''D'eoteot'd''D'eoteotC 33'f''F'ackack'f''F'ackackC 34'g''G'belbel'g''G'belbelC 35'h''H'bsbs'h''H'bsbsC 36'j''J'nlnl'j''J'nlnlC 37'k''K'vtvt'k''K'vtvtC 38'l''L'npnp'l''L'npnpC 39';'':'nopnop';'':'nopnopO 40'\''"'nopnop'\''"'nopnopO 41'`''~'nopnop'`''~'nopnopO 42lshiftlshiftlshiftlshiftlshiftlshiftlshiftlshiftO 43'\\''|'fsfs'\\''|'fsfsO 44'z''Z'subsub'z''Z'subsubO 45'x''X'cancan'x''X'cancanC 46'c''C'etxetx'c''C'etxetxC 47'v''V'synsyn'v''V'sinsinC 48'b''B'stxstx'b''B'stxstxC 49'n''N'soso'n''N'sosoC 50'm''M'crcr'm''M'crcrC 51',''<'nopnop',''<'nopnopO 52'.''>'nopnop',''>'nopnopO 53'/''?'nopnop'/''?'nopnopO 54rshiftrshiftrshiftrshiftrshiftrshiftrshiftrshiftO 55'*''*'nscrnscr'*''*'nscrnscrO 56altaltaltaltaltaltaltaltO 57' '' '' '' '' '' '' '' 'O 58clockclockclockclockclockclockclockclockO 59fkey1fkey13fkey25fkey37scr1scr11scr1scr11O 60fkey2fkey14fkey26fkey38scr2scr12scr2scr12O 61fkey3fkey15fkey27fkey39scr3scr13scr3scr13O 62fkey4fkey16fkey28fkey40scr4scr14scr4scr14O 63fkey5fkey17fkey29fkey41scr5scr15scr5scr15O 64fkey6fkey18fkey30fkey42scr6scr16scr6scr16O 65fkey7fkey19fkey31fkey43scr7scr7scr7scr7O 66fkey8fkey20fkey32fkey44scr8scr8scr8scr8O 67fkey9fkey21fkey33fkey45scr9scr9scr9scr9O 68fkey10fkey22fkey34fkey46scr10scr10scr10scr10O 69nlocknlockdc3dc3nlocknlockdc3dc3O 70slockslockdeldelslockslockdeldelO 71fkey49'7''7''7''7''7''7''7'N 72fkey50'8''8''8''8''8''8''8'N 73fkey51'9''9''9''9''9''9''9'N 74fkey52'-''-''-''-''-''-''-'N 75fkey53'4''4''4''4''4''4''4'N 76fkey54'5''5''5''5''5''5''5'N 77fkey55'6''6''6''6''6''6''6'N 78fkey56'+''+''+''+''+''+''+'N 79fkey57'1''1''1''1''1''1''1'N 80fkey58'2''2''2''2''2''2''2'N 81fkey59'3''3''3''3''3''3''3'N 82fkey60'0''0''0''0''0''0''0'N 83del'.'deldeldeldeldeldelN 84nopnopnopnopnopnopnopnopO 85fkey11fkey23fkey35fkey47scr11scr11scr11scr11O 86fkey12fkey24fkey36fkey48scr12scr12scr12scr12O <



          /p>

          Следующие скан- коды генерируются только на клавиатурах, которые поддерживают и находятся в режиме AT.

          SCAN CODEBASESHIFTCTRLCTRL SHIFTALTALT SHIFTALT CTRLALT CTRL SHIFTLOCK

          87fkey11fkey23fkey35fkey47scr11scr11scr11scr11O 88fkey12fkey24fkey36fkey48scr12scr12scr12scr12O 89nopnopnopnopnopnopnopnopO 90nopnopnopnopnopnopnopnopO 91nopnopnopnopnopnopnopnopO 92nopnopnopnopnopnopnopnopO 93nopnopnopnopnopnopnopnopO 94nopnopnopnopnopnopnopnopO 95nopnopnopnopnopnopnopnopO 96fkey50fkey50fkey50fkey50fkey50fkey50fkey50fkey50O 97fkey53fkey53fkey53fkey53fkey53fkey53fkey53fkey53O 98fkey58fkey58fkey58fkey58fkey58fkey58fkey58fkey58O 99fkey55fkey55fkey55fkey55fkey55fkey55fkey55fkey55O 100fkey49fkey49fkey49fkey49fkey49fkey49fkey49fkey49O 101fkey51fkey51fkey51fkey51fkey51fkey51fkey51fkey51O 102fkey57fkey57fkey57fkey57fkey57fkey57fkey57fkey57O 103fkey59fkey59fkey59fkey59fkey59fkey59fkey59fkey59O 104fkey60fkey60fkey60fkey60fkey60fkey60fkey60fkey60O 105deldeldeldeldeldeldeldel0 106nopnopnopnopnopnopnopnopO 107nopnopnopnopnopnopnopnopO 108nopnopnopnopnopnopnopnopO 109nopnopnopnopnopnopnopnopO 110nopnopnopnopnopnopnopnopO 111nopnopnopnopnopnopnopnopO 112nopnopnopnopnopnopnopnopO 113nopnopnopnopnopnopnopnopO 114nopnopnopnopnopnopnopnopO 115nopnopnopnopnopnopnopnopO 116nopnopnopnopnopnopnopnopO 117nopnopnopnopnopnopnopnopO 118nopnopnopnopnopnopnopnopO 119nopnopnopnopnopnopnopnopO 120nopnopnopnopnopnopnopnopO 121nopnopnopnopnopnopnopnopO 122nopnopnopnopnopnopnopnopO 123nopnopnopnopnopnopnopnopO 124nopnopnopnopnopnopnopnopO 125nopnopnopnopnopnopnopnopO 126nopnopnopnopnopnopnopnopO 127nopnopnopnopnopnopnopnopO 128rctrlrctrlrctrlrctrlrctrlrctrlrctrlrctrlO 129raltraltraltraltraltraltraltraltO 130fkey60fkey60fkey60fkey60fkey60fkey60fkey60fkey60O 131deldeldeldeldeldeldeldel0 132fkey49fkey49fkey49fkey49fkey49fkey49fkey49fkey49O 133fkey57fkey57fkey57fkey57fkey57fkey57fkey57fkey57O 134fkey51fkey51fkey51fkey51fkey51fkey51fkey51fkey51O 135fkey59fkey59fkey59fkey59fkey59fkey59fkey59fkey59O 136fkey53fkey53fkey53fkey53fkey53fkey53fkey53fkey53O 137fkey55fkey55fkey55fkey55fkey55fkey55fkey55fkey55O 138fkey50fkey50fkey50fkey50fkey50fkey50fkey50fkey50O 139fkey58fkey58fkey58fkey58fkey58fkey58fkey58fkey58O 140'/'nopnopnop'/'nopnopnopO 141crcrnlnlcrcrnlnlO <



          /p>

          В следующей таблице перечисляются "значения" специальных ключевых слов в файле /usr/lib/keyboard/keys (и в предыдущей таблице). mapkey(ADM) помещает "значение" ключевого слова в буфер управления вводом/ выводом во время назначения клавиш. Эти ключевые слова используются только в файле скан-кодов /usr/lib/keyboard/keys для упрощения его чтения.

          НазваниеЗначениеОписание nop0Действия нет - "пустое" нажатие клавиши lshift2Левая клавиша shift rshift3Правая клавиша shift clock4фиксация Capslock nclock5фиксация Numlock slock6фиксация Scroll lock alt7Клавиша Alt btab8Ключ обратной табуляции - генерирует фиксированную последовательность (esc [ Z) ctrl9Клавиша Ctrl nscr10Переключение на следующий экран scr111Переключение на экран #1 ... scr1626Переключение на экран #16 fkey127Функциональная клавиша #1 ... fkey96122Функциональная клавиша #96 rctl128*Правая клавиша Ctrl ralt129*Правая клавиша Alt * Только в режиме AT В следующей таблице перечисляются названия ключевых слов и их десятичные значения, которые могут взаимозаменяться в файле mapkey. Эти названия используются вместо соответствующих численных констант для облегчения чтения таблицы скан-кодов. Но в буфер управления вводом/выводом помещаются только десятичные значения. Они берутся из ascci(5).

          НазваниеЗначениеНазваниеЗначение nul0dc117 soh1dc218 stx2dc319 etx3dc420 eot4nak21 enq5syn22 ack6etb23 bel7can24 bs8em25 ht9sub26 nl10esc27 vt11fs28 np12gs29 cr13rs30 so14ns31 si15del127 dle16   Назначение клавиш клавиатуры

          Установление соответствия клавиш клавиатуры является составной частью эмуляции терминала. Эта процедура выполняется только для клавиатуры компьютера, но не для удаленных терминалов. Для изменения таблицы соответствий клавиш используйте утилиту mapkey. Чтобы изменить эту таблицу для отдельных каналов (экранов в многоэкранном режиме) используйте программу mapchan(5).



          Установка соответствий клавиш клавиатуры может быть также выполнена с помощью ioctl. Синтаксис - тот же, что и для соответствий функциональных клавиш в предыдущем разделе.

          При установке соответствий клавиш клавиатуры значение cmd=GIO_KEYMAP высвечивает текущую таблицу соответствий, а cmd=PIO_KEYMAP помещает готовый буфер на место.

          Назначение функциональных клавиш

          Для назначения функциональных клавиш используйте утилиту mapstr (см. mapkey(8)). mapstr модифицирует таблицу соответствий функциональных клавиш, в которой эти клавиши определяются.

          Таблица соответствий функциональных клавиш представляет собой массив из 512 байтов (typedef strmap_t - тип структуры), содержащий строки, заканчивающиеся нулем и переопределяющие функциональные клавиши. Первая строка приписывается первой функциональной клавише, вторая - второй и т.д.

          Не существует ограничения на длину строки, кроме предела самой таблицы, 512 байтов, включая нули. Строки обнуляются введением дополнительных нулевых символов.

          Далее приведен список значений функциональных клавиш, устанавливаемых по умолчанию:

          Значения функциональных клавиш по умолчанию Клавиша #ФункцияShift
          ФункцияCtrl
          ФункцияCtrl
          Shift
          Функция 1ESC[MESC[YESC[kESC[w 2ESC[NESC[ZESC[lESC[x 3ESC[OESC[aESC[mESC[y 4ESC[PESC[bESC[nESC[z 5ESC[QESC[cESC[oESC[@ 6ESC[RESC[dESC[pESC[[ 7ESC[SESC[eESC[qESC[\ 8ESC[TESC[fESC[rESC[] 9ESC[UESC[gESC[sESC[^ 10ESC[VESC[hESC[tESC[_ 11ESC[WESC[iESC[uESC[' 12ESC[XESC[jESC[vESC[{
          HomeESC[HEndESC[F Up arrowESC[ADown arrowESC[B Page upESC[IPage downESC[G Left arrowESC[D5ESC[E Right arrowESC[CInsertESC[L Вы можете назначать функциональные клавиши с помощью ioctl(2). Синтаксис имеет вид:

          #include <sys/keyboard.h> ioctl(fd,cmd,buf) int fd,cmd; char *buf; ...

          При установке соответствий клавиш клавиатуры значение cmd=GIO_KEYMAP высвечивает текущую таблицу соответствий, а cmd=PIO_KEYMAP устанавливает новую таблицу на место.

          ФАЙЛЫ

          /usr/lib/keyboard/keys /usr/lib/keyboard/strings

          СМ. ТАКЖЕ

          mapchan(3), mapchan(5), mapkey(8), multiscreen(5), screen(HW), setkey(1), stty(1), kbmode(8), configure(8)
          Содержание раздела