Interface 1bis: работа клавиатуры и мыши |
![]() |
Добавил(а) microsin | ||||||||||||||||||||||||||||||||||||||||||||||||||||
В этой статье приведен перевод документации [1], которая описывает работу клавиатуры и мыши совместно с Interface 1bis (сокращенно IF1bis) и компьютером ZX Spectrum. [Мышь] К разъему PS/2 интерфейса может быть подключена мышь PS/2 или двухрежимная (мышь, поддерживающая оба интерфейса, и PS/2 и USB, но только не чисто мышь USB). В результате подключенная мышь будет работать в режиме совместимости с мышью Kempston, и предоставлять данные на следующих портах ввода/вывода Z80:
Чтобы мышь корректно определилась на интерфейсе PS/2, она должна быть подключена туда до того, как будет подано напряжение питания. Это особенность мыши PS/2, а не интерфейса IF1bis. Текущее состояние мыши отображается светодиодом M (описание светодиодов см. в [3]): • Если светодиод M не горит, то мышь не подключена или запрещена. Разрешение/запрет мыши. Работу мыши можно разрешать и запрещать с помощью нажатий на кнопки мыши следующим образом: • Мышь будет запрещена, если нажать её обе кнопки одновременно. Примечание: когда мышь разрешена, то коннектор джойстика не работает, и наоборот. Мышь по умолчанию разрешена в "оконном" режиме, когда она сообщает о своих координатах относительно конфигурируемого окна. Также мышь может работать и в legacy-режиме мыши Kempston, когда значение координаты перепрыгивает через 255 в 0 и обратно. Конфигурирование мыши. Для конфигурирования драйвера мыши можно посылать микроконтроллеру интерфейса специальные команды: CAT 0;"m"+строка+..+строка
[Клавиатура] Вместо мыши к интерфейсу PS/2 может быть подключена стандартная клавиатура PS/2. Firmware микроконтроллера интерфейса обрабатывает последовательность скан-кода клавиатуры, и выводит декодированный результат в порт #FD в качестве "кодов клавиш" со следующим назначением бит. Биты 0..5 передают номер клавиши (0..38). Отсутствие нажатия передается битами 0..5 как код 39. Бит 6 передает нажатие клавиши Symbol Shift, а бит 7 клавиши Caps Shift. Коды клавиш читаются параллельно со штатной клавиатурой ZX Spectrum с помощью "пропатченной" подпрограммой сканирования клавиатуры по адресу #028e кода BASIC ROM интерфейса. Таким образом, с клавиатурой PS/2 будут работать только те программы которые используют стандартный опрос клавиатуры через ПЗУ ZX Spectrum. Также внешняя клавиатура будет работать только в активном режиме интерфейса (Active Mode, подробнее про режимы интерфейса см. [3]). К сожалению, большинство игр осуществляют опрос клавиатуры самостоятельно, и с ними будет работать только штатная клавиатура ZX Spectrum. Специальные привязки кнопок клавиатуры PS/2
Режим эмуляции джойстика Kempston. Кнопка Num Lock клавиатуры PS/2 переключает режимы между "нормальной" клавиатурой и режимом "джойстика", в котором кнопки управления курсором (оси направления) вместе с кнопкой Ctrl (огонь) эмулируют джойстик Kempston, а все другие клавиши выполняют свою обычную функцию. Эмуляция джойстика работает даже когда интерфейс находится в неактивном режиме (Inactive Mode, подробнее про режимы интерфейса см. [3]). Ускоренный ввод (Tokenizer). Любое ключевое слово можно набрать путем ввода его первых 2..4 символов, достаточных для однозначного его определения, если удерживать клавишу Alt, и затем отпустить её. [Захват вывода клавиатуры и мыши на компьютере сервера] На компьютере сервера клавиатура или мышь, когда сервер подключен к Interface 1bis через порт USB, может использоваться как устройства ввода ZX Spectrum, если ничего не подключено в сокет PS/2 интерфейса. Чтобы включить и выключить эту функцию, наберите команду extended BASIC: CAT 0,"k". Когда эта функция включена, на сервере всплывет новое окно, в котором будет захватываться ввод клавиатуры и мыши. Нажатие клавиши Page Down в этом окне выключит эту функцию. Все относящиеся к физической мыши или физической клавиатуре функции, упомянутые выше, также будут работать и с клавиатурой/мышью сервера, за исключением режима "мыши как джойстика", который выбрать нельзя. Невозможно одновременно захватывать данные и мыши, и клавиатуры. Когда разрешена мышь, то ввод клавиатуры недоступен, и наоборот. Ввод мыши может захватываться даже тогда, когда интерфейс находится в "неактивном" режиме (Inactive Mode, подробнее см. [3]). [Ссылки] 1. Mouse and Keyboard for the Interface 1bis site:sites.google.com.
|