Клавиатура — различия между версиями
Alone (обсуждение | вклад) |
Zxdn (обсуждение | вклад) (→Раскладка клавиш в Sinclair BASIC) |
||
Строка 40: | Строка 40: | ||
*Нажатие любой клавиши в режиме ''E'' вводит слова, указанные над клавишами (зелёным шрифтом); | *Нажатие любой клавиши в режиме ''E'' вводит слова, указанные над клавишами (зелёным шрифтом); | ||
*Нажатие любой клавиши в режиме ''E'' совместно с Symbol Shift вводит слова, указанные под клавишами (красным шрифтом). | *Нажатие любой клавиши в режиме ''E'' совместно с Symbol Shift вводит слова, указанные под клавишами (красным шрифтом). | ||
+ | |||
{| class="standard" | {| class="standard" | ||
! | ! | ||
+ | !K | ||
!SS | !SS | ||
!CS | !CS | ||
Строка 49: | Строка 51: | ||
!Ext+SS | !Ext+SS | ||
|- | |- | ||
− | | | + | !1 |
+ | |1 | ||
|! | |! | ||
|Edit | |Edit | ||
Строка 56: | Строка 59: | ||
|DEF FN | |DEF FN | ||
|- | |- | ||
− | | | + | !2 |
+ | |2 | ||
|@ | |@ | ||
|Caps Lock | |Caps Lock | ||
Строка 63: | Строка 67: | ||
|FN | |FN | ||
|- | |- | ||
− | |a | + | !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 | |STOP | ||
|A | |A | ||
Строка 70: | Строка 139: | ||
|~ | |~ | ||
|- | |- | ||
+ | !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 | ||
+ | |- | ||
+ | !Пробел | ||
|Пробел | |Пробел | ||
|Пробел | |Пробел | ||
Строка 77: | Строка 347: | ||
|Пробел | |Пробел | ||
|- | |- | ||
+ | !Enter | ||
|Enter | |Enter | ||
|Enter | |Enter | ||
Строка 84: | Строка 355: | ||
|Enter | |Enter | ||
|} | |} | ||
+ | |||
[[Категория:Устройства ввода]] | [[Категория:Устройства ввода]] |
Версия 03:17, 4 октября 2009
Клавиатура — основное устройство ввода и управления компьютером.
Оригинальный 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
В интерпретаторе Бейсика реализовано несколько режимов ввода. Текущий режим отображается в виде буквы-курсора. Режим ввода может изменяться автоматически, в зависимости от ситуации, а также может изменяться пользователем. Режимы:
- 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 |}