Клавиатура — различия между версиями
Zxdn (обсуждение | вклад) |
Zxdn (обсуждение | вклад) |
||
| (не показано 14 промежуточных версии 2 участников) | |||
| Строка 1: | Строка 1: | ||
| − | '''Клавиатура''' | + | '''Клавиатура''' — основное устройство ввода и управления компьютером. |
| − | Оригинальный [[ZX Spectrum]] имел 40-кнопочную клавиатуру. Клавиши были резиновыми, не обеспечивавшими чёткой обратной тактильной связи. Для частичного устранения этого недостатка во встроенном интерпретаторе языка [[Sinclair BASIC|Бейсик]] реализовано звуковое подтверждение при нажатии клавиш. | + | Оригинальный [[ZX Spectrum]] имел 40-кнопочную клавиатуру. Клавиши были резиновыми (аналогичные используемым в калькуляторах), не обеспечивавшими чёткой обратной тактильной связи. Для частичного устранения этого недостатка во встроенном интерпретаторе языка [[Sinclair BASIC|Бейсик]] реализовано звуковое подтверждение при нажатии клавиш. |
| − | Поле стандартной клавиатуры содержит 26 алфавитных, 10 цифровых, пробел и три служебных клавиши | + | Поле стандартной клавиатуры содержит 26 алфавитных, 10 цифровых, пробел и три служебных клавиши — ввод (''Enter'') и две клавиши регистра, так называемые ''шифты'' (''Symbol Shift'' и ''Caps Shift'', сокращённо ''SS'' и ''CS''). Все остальные необходимые действия, реализованные на полноценных клавиатурах в виде отдельных клавиш, выполняются комбинациями шифтов с другими клавишами. |
| − | В интерпретаторе Бейсика используется токенизированный ввод, позволяющий вводить управляющие слова нажатием одной клавиши. Так как количество слов существенно больше, чем количество клавиш, для ввода части слов также используются различные комбинации шифтов с обычными клавишами. Ввиду отсутствия возможности посимвольного ввода управляющих слов это требует запоминания множества комбинаций клавиш | + | В интерпретаторе Бейсика используется токенизированный ввод, позволяющий вводить управляющие слова нажатием одной клавиши. Так как количество слов существенно больше, чем количество клавиш, для ввода части слов также используются различные комбинации шифтов с обычными клавишами. Ввиду отсутствия возможности посимвольного ввода управляющих слов это требует запоминания множества комбинаций клавиш — около пяти вариантов использования каждой клавиши. Для частичного устранения этого недостатка на клавиши нанесены обозначения по специальной системе. |
| − | В модели [[ZX Spectrum+]] главным улучшением стало использование расширенной 58-кнопочной клавиатуры. Дополнительные клавиши имитируют нажатие наиболее часто используемых сочетаний клавиш | + | В модели [[ZX Spectrum+]] главным улучшением стало использование расширенной 58-кнопочной клавиатуры. Дополнительные клавиши имитируют нажатие наиболее часто используемых сочетаний клавиш — например, управление курсором. При этом с программной точки зрения интерфейс клавиатуры не изменился, что, с одной стороны, не требует наличия программной поддержки расширенных клавиш в уже существующем ПО, но, с другой стороны, не позволяет отличить расширенные клавиши от клавиш, входящих в комбинацию. |
| − | Все модели [[ZX Spectrum 128K]] используют такую | + | Все модели [[ZX Spectrum 128K]] используют такую же клавиатуру, как и ZX Spectrum+, но у моделей [[ZX Spectrum +2]] и [[ZX Spectrum +3]] отсутствуют обозначения комбинаций клавиш, так как интерпретатор Бейсика для режима 128K не использует токенизированный ввод. |
| − | [[Категория:Устройства ввода]] | + | Отечественные клоны ZX Spectrum использовали клавиатуры различных типов и раскладок, включая 40-кнопочные и расширенные; механические, плёночные и герконовые. Также использовались стандартные клавиатуры типа МС7007 с нанесённой дополнительной маркировкой. Некоторые клоны имели дополнительные клавиши, опрашиваемые через биты 5 и 7 клавиатурного порта ([[Спарк]]/[[Аллофон]], [[Орель БК-08]]) и поддерживаемые очень ограниченным количеством программ. |
| + | |||
| + | Из-за недоступности нестандартных клавиатур при широком распространении клавиатур стандарта AT (в недавнем прошлом) и PS/2, современные клоны используют специальные контроллеры, позволяющие использовать современные клавиатуры без их переделки. Такие контроллеры могут являться как отдельным устройством, так и присутствовать в компьютере штатно. Простые варианты контроллеров могут замедлять работу компьютера, генерируя сигнал [[WAIT]], так как им требуется время для преобразования данных, получаемых от клавиатуры в требуемый набор сигналов. | ||
| + | |||
| + | == Аппаратный интерфейс == | ||
| + | |||
| + | Аппаратно кнопки клавиатуры представляют собой матрицу восемь на пять линий — восемь полурядов по пять кнопок. В зависимости от адреса, использованного при обращении к [[порт 254|порту клавиатуры]], в младших пяти битах возвращается состояние клавиш одного из восьми полурядов. Такая схема создаёт "эффект матрицы" (''matrix effect'') — при нажатии двух клавиш (одного полуряда) одновременно с третьей клавишей (в одном столбце с первой) возникает паразитное нажатие в полуряду третьей клавиши, соответствующее столбцу второй. Этот эффект можно ликвидировать размещением диода на каждой клавише. | ||
| + | |||
| + | == Раскладка клавиш в Sinclair BASIC == | ||
| + | |||
| + | [[Изображение:ZX_Spectrum_48K_Keyboard.jpg|thumb|right|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 вводит слова, указанные под клавишами (красным шрифтом). | ||
| + | |||
| + | |||
| + | {| class="standard" | ||
| + | ! | ||
| + | !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 | ||
| + | |© | ||
| + | |© | ||
| + | |- | ||
| + | !q | ||
| + | |PLOT | ||
| + | |<= | ||
| + | |Q | ||
| + | |SIN | ||
| + | |ASN | ||
| + | |ASN | ||
| + | |- | ||
| + | !r | ||
| + | |RUN | ||
| + | |< | ||
| + | |R | ||
| + | |INT | ||
| + | |VERIFY | ||
| + | |VERIFY | ||
| + | |- | ||
| + | !s | ||
| + | |SAVE | ||
| + | |NOT | ||
| + | |S | ||
| + | |RESTORE | ||
| + | |<nowiki>|</nowiki> | ||
| + | |<nowiki>|</nowiki> | ||
| + | |- | ||
| + | !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 | ||
| + | |} | ||
| + | |||
| + | |||
| + | [[Категория:Устройства ввода|*]] | ||
Текущая версия на 06:43, 24 ноября 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 | " | P | TAB | © | © | |
| 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 |