Передовица » Hardware » Манипуляторы » Использование PS/2 клавиатуры с Агатом

Использование PS/2 клавиатуры с Агатом

Группой авторов было разработано устройство - адаптер, позволяющий подключить PS/2-клавиатуру к Агату. В качестве ядра используется контроллер ATMega8.

Для устройства имеется две прошивки: 1) от первоначального автора устройства - AlexBel, всё, что с ней связано, опубликовано на форуме. Там же находится описание печатной платы и схемы устройства. 2) От Владимира (т.е. автора этих строк).

Моя прошивка и её исходники. И далее описание:

Версия 0.98 beta FRAM
Схема та же (AlexBel'a), только нужно убрать кондёр сброса.
Фьюзы похожи, но мои предпочтительнее (потенциальных глюков поменьше).
Работает на семёрке и девятке.
Может использоваться с КВМ.

Быстрое начало

Подключите PS/2 клавиатуру в разъём адаптера, адаптер подключите к Агату. Включите питание Агата. На адаптере включится индикатор питания, дважды моргнёт клавиатура. Можете работать.

Раскладка

Все клавиши передаются в реальный Агат так же как в эмуляторе. В моих эмуляторах. Помимо этого есть специальные клавиши и их комбинации (сочетания из моего эмулятора и из прошивки Алекса):

Смена раскладок qwerty/jcuken:

F3, текущее состояние отображается индикатором Caps Lock.
(NB: комбинации Ctrl-клавиша работают всегда как бы в раскладке qwerty)

УПР-СБР:

Ctrl-F11
Линия удерживается нажатой пока вы держите нажатыми кнопки - всё как в Агате.
Фича: если сперва отпустить Ctrl, то сброс остаётся "нажатым". Полезно для ремонта платы.
"Отпустить" сброс можно вновь нажав Ctrl-F11, и отпустив первым F11.

РУС/LAT:

ScrollLock или NumLock меняют режим РУС <-> LAT
Правые Shift-Ctrl включают LAT
Левые Shift-Ctrl включают РУС
Текущий режим отображается индикаторами NumLock (РУС) и ScrollLock (LAT)

TAB:

Можно использовать эту клавишу как частичную альтернативу Ctrl (её положение на клавиатуре похоже на УПР Агата) { Она будет корректно работать с сочетаниями Ctrl-БУКВА или Ctrl-ЗНАЧОК, но, например, Shift-Tab не будет переключать РУС/LAT. А Tab-Shift будет :) }

Автоповтор:

Любая клавиша ALT являются аналогом агатовской кнопки ПВТ: при одновременном нажатии с другой кнопкой вызывают её автоповтор до отпускания.

Автоповтор16:

Любая клавиша Win, нажатая с другой кнопкой, вызывают 16-кратный автоповтор этой кнопки. { I like to move it move it ! }

F4:

Меняет режим автоповтора:
в стиле "Агат": нажатие кнопки всегда даёт единственный код, Alt = ПВТ и даёт 40 знаков/секунду.
в стиле " PC": один код, затем пауза, затем автоповтор 30 знаков/секунду.

Режим запоминается в энергонезависимой памяти адаптера.

F8:

Меняет режим одновременного/раздельного переключения Рус/Lat со сменой раскладки и устанавливает режим Lat и раскладку qwerty.
В режиме одновременного переключения при включении Рус выбирается раскладка jcuken, а при включении Lat - qwerty. При этом клавиша F3 и переключатели Рус/Lat выполняют одинаковые функции.
Режим запоминается в энергонезависимой памяти адаптера.

[[ F1: Выводит встроенную справку по клавишам управления ]] НЕ РЕАЛИЗОВАНО
[[ Скорость автоповтора можно менять ]] НЕ РЕАЛИЗОВАНО

Макро

В памяти адаптера хранится некоторое количество диагностических программ для Агата (пока что совсем немного). Выйдите в системный монитор (желательно, до загрузки каких либо операционных систем) и нажмите F7 (для семёрки) и F9 (для девятки), чтобы увидеть их список. Выберите (нажав соответствующую латинскую букву) нужную программу и она будет введена в память компьютера.

Вы можете указать "не свою" архитектуру, но в этом случае программы, завязанные на конкретную архитектуру, будут глючить (безразличные к архитектуре программы видны в обеих списках). Кроме того, управление регистром/алфавитом в семёрке и девятке устроено по разному.

Вы также можете записать своё макро (только одно). Для записи нужно нажать F6, при этом индикаторы клавиатуры будут "бежать" влево. Для прекращения записи - снова нажать F6. Запись также будет прервана если переполнится буфер (около 500 знаков).

Для воспроизведения своего макро нажмите F5. Cветодиоды будут "бежать" вправо.

Воспроизвести макро во время записи невозможно.
В макро записываются только коды, отправляемые на агат и состояние линии РУС/LAT. УПР-СБР и паузы между символами не сохраняются (пауза при воспроизведении будет всегда фиксированная, обычно достаточная для работы процедур ввода строк).

Поддержка манипулятора "Мышь"

Если вместо клавиатуры подключить мышь, движения манипулятора будут отправлятся Агату как нажатия клавиш-стрелок соответствующего направления. Нажатие и отпускание левой кнопки и нажатие правой кнопки будет передаваться как "пробел". Отпускание правой кнопки игнорируется.

Нажатие колёсика запускает вывод пользовательского макроса (можете забить туда "RUN GRAPHEDITOR", например).

[[ Нажатие колёсика выводит одну латинскую букву (или цифру), вращение колёсика позволяют менять её.
Движение мыши влево сдвигает курсор влево, движение вправо передаёт код клавиши ВВОД.
Отпускание колёсика перемещает курсор вправо. ]] НЕ РЕАЛИЗОВАНО.

Индикация ошибок и hot plug&play

Светодиод на плате адаптера используется для индикации ошибок. Длительное гашение и затем ряд вспышек указывают на вид ошибки. Считаем вспышки:

1 - На команду инициализации клавиатура ничем не ответила. Это не фатально, но настораживает. Возможно, вы её не подключили.

2 - На команду инициализации клавиатура ответила непонятно. Это странно. Но тоже не фатально.

3 - Агатовский системник не присылает тактовые синхроимпульсы. Возможно, у вас обрыв в проводе. Или сдох контроллер клавиатуры на системнике. Адаптер будет работать, но системник не получит ничего.

4 - Клавиатура не хочет принимать команду контроля состояния. Типа "не пингуется". Наверное, она сдохла либо выпал/оторвался провод.

5 - Клавиатура не отвечает на успешно принятую команду контроля состояния. Наверное, она её сожрала на завтрак или попала в режим молчания.

6 - Клавиатура ответила на команду контроля состояния какую-то ерунду. Может у вас особо хитрая клавиатура?

7 - Подключенное устройство отозвалось как мышь, но не удалось отправить команду разрешения её работы. Странная у вас мышь.

Когда ошибка будет устранена, адаптер продолжит работу. Если клавиатура отключалась, при восстановлении связи будет восстановлено и состояние светодиодов клавиатуры. Если вы работаете через простой КВМ, который не эмулирует клавиатуру, отключившись от адаптера вы будете видеть поочерёдно коды 4 и 1: +...*.*.*.*.+...*.+

[[Клавишей ?? можно отключить или включить светодиод на плате.
Состояние запоминается в энергонезависимой памяти адаптера]] НЕ РЕАЛИЗОВАНО

Важно: отсутствие подключенной ранее мыши не проверяется. Адаптер запустит процедуру распознавания только если получит от устройства код успешной самопроверки, который устройство генерирует лишь при подаче питания. Поэтому если вы хотите "на ходу" чередовать мышь и клавиатуру, вы должны их полностью выдёргивать (обесточивать).

Адаптер не будет генерировать при этом сигнал УПР-СБР, так что вы можете чередовать оба устройства в пределах одной программы (пока не сломаете разъём).

Режим диагностики клавиатуры/мыши

Удалите из компьютера устройства, с которых может быть выполнена автозагрузка (контроллеры дисководов, сетевые карты...). Перед включением замкните лапку 3 ATmegи на "общий". На экране Агата вы увидите информацию об адаптере, включая версию. После чего адаптер будет находится в диагностическом режиме. На экран будут выводится статус линии связи с клавиатурой, а также получаемые от неё коды.

Вы можете нажать клавиши F* для дополнительных действий:
F1 - посылает команду сброса ($FF) клавиатуре;
F2, F3 - посылает команды переключения светодиодов;
F4 - выход из режима диагностики.

В случае получения от устройства кода $00 (переполнение буфера/идентификатор "мыши") реакция на клавиши F* будет отключена.

Вы можете также диагностировать PS/2-"мышь": на экран будут выводится полученные от неё коды.

Использование материалов проекта agatcomp без получения предварительного письменного разрешения agatcomp запрещено.


Почта для обратной связи: mail@agatcomp.ru


Живое общение по теме Агата: Telegram группа Agatcomp.


Накопленные знания и проекты: тематический ФОРУМ.


© 2004-2024 agatcomp.su / agatcomp.ru

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *