Клавиатура

Материал из SpeccyWiki
Перейти к: навигация, поиск

Клавиатура — основное устройство ввода и управления компьютером.

Оригинальный ZX Spectrum имел 40-кнопочную клавиатуру. Клавиши были резиновыми (аналогичные используемым в калькуляторах), не обеспечивавшими чёткой обратной тактильной связи. Для частичного устранения этого недостатка во встроенном интерпретаторе языка Бейсик реализовано звуковое подтверждение при нажатии клавиш.

Поле стандартной клавиатуры содержит 26 алфавитных, 10 цифровых, пробел и три служебных клавиши — ввод (Enter) и две клавиши регистра, так называемые шифты (Symbol Shift и Caps Shift, сокращённо SS и CS). Все остальные необходимые действия, реализованные на полноценных клавиатурах в виде отдельных клавиш, выполняются комбинациями шифтов с другими клавишами.

В интерпретаторе Бейсика используется токенизированный ввод, позволяющий вводить управляющие слова нажатием одной клавиши. Так как количество слов существенно больше, чем количество клавиш, для ввода части слов также используются различные комбинации шифтов с обычными клавишами. Ввиду отсутствия возможности посимвольного ввода управляющих слов это требует запоминания множества комбинаций клавиш — около пяти вариантов использования каждой клавиши. Для частичного устранения этого недостатка на клавиши нанесены обозначения по специальной системе.

В модели ZX Spectrum+ главным улучшением стало использование расширенной 58-кнопочной клавиатуры. Дополнительные клавиши имитируют нажатие наиболее часто используемых сочетаний клавиш — например, управление курсором. При этом с программной точки зрения интерфейс клавиатуры не изменился, что, с одной стороны, не требует наличия программной поддержки расширенных клавиш в уже существующем ПО, но, с другой стороны, не позволяет отличить расширенные клавиши от клавиш, входящих в комбинацию.

Все модели ZX Spectrum 128K используют такую же клавиатуру, как и ZX Spectrum+, но у моделей ZX Spectrum +2 и ZX Spectrum +3 отсутствуют обозначения комбинаций клавиш, так как интерпретатор Бейсика для режима 128K не использует токенизированный ввод.

Отечественные клоны ZX Spectrum использовали клавиатуры различных типов и раскладок, включая 40-кнопочные и расширенные; механические, плёночные и герконовые. Также использовались стандартные клавиатуры типа МС7007 с нанесённой дополнительной маркировкой. Некоторые клоны имели дополнительные клавиши, опрашиваемые через биты 5 и 7 клавиатурного порта (Спарк/Аллофон, Орель БК-08) и поддерживаемые очень ограниченным количеством программ.

Из-за недоступности нестандартных клавиатур при широком распространении клавиатур стандарта AT (в недавнем прошлом) и PS/2, современные клоны используют специальные контроллеры, позволяющие использовать современные клавиатуры без их переделки. Такие контроллеры могут являться как отдельным устройством, так и присутствовать в компьютере штатно. Простые варианты контроллеров могут замедлять работу компьютера, генерируя сигнал WAIT, так как им требуется время для преобразования данных, получаемых от клавиатуры в требуемый набор сигналов.

Аппаратный интерфейс

Аппаратно кнопки клавиатуры представляют собой матрицу восемь на пять линий — восемь полурядов по пять кнопок. В зависимости от адреса, использованного при обращении к порту клавиатуры, в младших пяти битах возвращается состояние клавиш одного из восьми полурядов. Такая схема создаёт "эффект матрицы" (matrix effect) — при нажатии двух клавиш (одного полуряда) одновременно с третьей клавишей (в одном столбце с первой) возникает паразитное нажатие в полуряду третьей клавиши, соответствующее столбцу второй. Этот эффект можно ликвидировать размещением диода на каждой клавише.

Раскладка клавиш в Sinclair BASIC

40-кнопочная клавиатура

В интерпретаторе Бейсика реализовано несколько режимов ввода. Текущий режим отображается в виде буквы-курсора. Режим ввода может изменяться автоматически, в зависимости от ситуации, а также может изменяться пользователем. Режимы:

  • L (Letters?) — ввод строчных букв и цифр;
  • C (Caps Lock?) — ввод заглавных букв и цифр;
  • K (Keyword?) — активизируется, когда интерпретатор ожидает ввода управляющего слова, алфавитные клавиши вводят слова;
  • E (Extend Mode) — вызывается одновременным нажатием Symbol Shift и Caps Shift, нажатие клавиш вводит дополнительные управляющие слова;
  • G (Graphics) — ввод псевдографических символов и символов, изображение которых определяется пользователем.

Правила ввода:

  • При нажатии алфавитной клавиши в режиме курсора K вводятся слова, указанные на клавише белым шрифтом левее и ниже буквы;
  • Нажатие цифровой клавиши в режимах K и L вводит цифру;
  • Нажатие алфавитной клавиши в режиме L вводит строчную букву, нажатие совместно с Caps Shift - заглавную букву;
  • Нажатие цифровой клавиши в режимах K и L совместно с Caps Shift выполняет действие, указанное белым цветом над цифровыми клавишами (функции редактирования, управление курсором);
  • Нажатие любой клавиши совместно с Symbol Shift вводит символ или слово, указанные на клавише красным шрифтом слева от основной буквы;
  • Нажатие любой клавиши в режиме E вводит слова, указанные над клавишами (зелёным шрифтом);
  • Нажатие любой клавиши в режиме E совместно с Symbol Shift вводит слова, указанные под клавишами (красным шрифтом).


K SS CS Ext Ext+CS Ext+SS
1 1 ! Edit Код синего фона Код синих чернил DEF FN
2 2 @ Caps Lock Код красного фона Код красных чернил FN
3 3 # True video Код фиолетового фона Код фиолетовых чернил LINE
4 4 $ Inverse video Код зелёного фона Код зелёных чернил OPEN#
5 5 % Курсор влево Код голубого фона Код голубых чернил CLOSE#
6 6 & Курсор вниз Код жёлтого фона Код жёлтых чернил MOVE
7 7 ' Курсор вверх Код белого фона Код белых чернил ERASE
8 8 ( Курсор вправо POINT
9 9 ) Graphics mode CAT
0 0 _ Delete Код чёрного фона Код чёрных чернил FORMAT
a NEW STOP A READ ~ ~
b BORDER * B BIN BRIGHT BRIGHT
c CONTINUE ? C LPRINT PAPER PAPER
d DIM STEP D DATA \ \
e REM >= E TAN ATN ATN
f FOR TO F SGN { {
g GO TO THEN G ABS

|} |- !h |GOSUB |^ |H |SQR |CIRCLE |CIRCLE |- !i |INPUT |AT |I |CODE |IN |IN |- !j |LOAD |- |J |VAL |VAL$ |VAL$ |- !k |LIST |+ |K |LEN |SCREEN$ |SCREEN$ |- !l |LET |= |L |USR |ATTR |ATTR |- !m |PAUSE |. |M |PI |INVERSE |INVERSE |- !n |NEXT |, |N |INKEY$ |OVER |OVER |- !o |POKE |; |O |PEEK |OUT |OUT |- !p |PRINT |" |P |TAB |(C) |(C) |- !q |PLOT |<= |Q |SIN |ASN |ASN |- !r |RUN |< |R |INT |VERIFY |VERIFY |- !s |SAVE |NOT |S |RESTORE | | | | |- !t |RANDOMIZE |> |T |RND |MERGE |MERGE |- !u |IF |OR |U |CHR$ |] |] |- !v |CLS |/ |V |LLIST |FLASH |FLASH |- !w |DRAW |<> |W |COS |ACS |ACS |- !x |CLEAR |Фунт |X |EXP |INK |INK |- !y |RETURN |AND |Y |STR$ |[ |[ |- !z |COPY |: |Z |LN |BEEP |BEEP |- !Пробел |Пробел |Пробел |Break |Пробел |Пробел |Пробел |- !Enter |Enter |Enter |Enter |Enter |Enter |Enter |}