Работа с ps2-клавиатурой

Записки инженера

Со временем возникает вопрос, как вводить данные в микроконтроллер? Классическое решение, которое приходит большинство нам — использовать кнопки… протравить на плате дорожки и контактные площадки для кнопок, далее их припаять, решить как отслеживать нажатие кнопки — по прерыванию или через опрос состояния кнопок по циклу. Если кнопок много, они будут занимать значительное количество pin-ов микроконтроллера.  Путь тернистый.

Я предлагаю использовать, то что у нас под рукой — простую PS/2 компьютерную клавиатуру. Из плюсов:

  • вещь не дорогая;
  • продается в любом компьютерном магазине
  • нам доступно 101 клавиша
  • займет клавиатура всего 2-pin микроконтроллера для синхросигнала и данных.

 

В качестве микроконтроллера я буду использовать ATmega328P или Arduino UNO.

Немного теории

Если вы вскроете оплетку кабеля для клавиатуры, то вы обнаружите 4-е провода:

  • провод питания (5 В)
  • провод земли
  • провод синхросигнала (CLK)
  • провод данных (DATA)

Каждая клавиша на клавиатуре имеет свой 8-и битный код, называемый скан-кодом и записывается в шестнадцатеричном виде (HEX), смотри ниже.

Когда вы нажимаете на клавишу, по SLK передаются прямоугольные импульсы а по DATA 11-и битный код:

Биты данных считываются компьютером при переходе CLK с высокого уровня на низкий.

Первый бит всегда равен — это стартовый бит, далее идет 8-емь бит скан-кода, после чего бит контроля четности и в конце стоповый бит, который всегда равен 1.

Как подключить PS/2 клавиатуру к микроконтроллеру?

На самом деле порт PS/2 компьютерный клавиатуры это разновидность разъема Mini-DIN, её 6-и пиновый вариант.
В клавиатуре установлен min-din 6 pin штекер (папа), мы все его видели на конце кабеля клавиатуры.

Гнездо min-din 6 pin (мама) находится на материнской плате, для подключения к микроконтроллеру нам придется его выпаивать из старой клавиатуры, что не удобно.

Я советую приобрести нормальное гнездо min-din 6 pin для кабеля, например на ebay.ru он стоит ~ 1$. Выглядит он следующим образом:

(слева в собранном виде, справа в разобранном)

В качестве примера я буду подключать клавиатуру к Arduino UNO (контроллер ATmega328P), от нас требуется подключить проводки по следующей распиновки.

Помощь паяльника не понадобится, провода обжимаются пассатижами в металлические зажимы, в результате у меня получился следующий переходник.

В вашем случае концы проводков вы можете припаять к плате микроконтроллера, я буду использовать pin-ы Arduino UNO.

  • GND подключаем к GND Arduino UNO
  • Vcc подключим к 5V Arduino UNO
  • DATA подключим 2-pin Arduino UNO
  • CLK подключим к 3-pin Arduino UNO

Далее останется только подключить клавиатуру к гнезду.

Исходный код прошивки

В интернете для работы с PS/2 клавиатурой в больше половины случаев используют библиотеку ps2keyboard, где через цикл проверяют состояние «переменной — буфера» обмена с клавиатурой.

Я не сторонник проверять что-то через цикл, прошивка будет занята только работой с клавиатурой.

А если нам нужно производить расчеты или работать с каким-нибудь медленным оборудованием? Тут будет что-то страдать или наши расчеты или скорость реакции на клавиатуру.

Я предлагаю использовать прерывание…

PIN контроллера принимающий CLK (синхроимпульсы) от клавиатуры нужно настроить как внешнее прерывание при переходе из высокого состояние в низкий и в обработчике считывать бит данных с DATA. Алгоритм обработчика прерывания должен побитно накапливать посылаемый скан-код с клавиатуры.

Код для Arduino, подключаем DATA к 2-ому пину, CLK подключим к 3-ему пину.

123456789101112131415161718192021222324252627282930313233343536373839 const int DataPin = 2; // канал DATA клавиатурыconst int IRQpin =  3; // канал CLK клавиатурыint count=1;          // счетчик текущего бита 11-битного кода от клавиатурыint m=0;              // счетчик текущего бита скан-кодаuint8_t scan_code=0;  // скан-код нажатой клавишиvoid ps2interrupt(void) {        /* обработчик прерывания от CLK клавиатуры */  /* считываем скан-код с клавиатуры по битно в переменную scan_code */  if ((count>1) and (count

Источник: http://s-engineer.ru/mikrokontroller-podklyuchaem-ps2-klaviaturu/

Почему не работает клавиатура?

И так у вас перестала работать клавиатура, и вы не знаете что делать. Не беда сегодня я написал небольшую статью о том, почему клавиатура может не работать описал причины и их решения. Скорее всего, каждый сталкивался с этой проблемой.

Да это очень частое явление. Поэтому каждому будеn, полезно узнать, почему не работает клавиатур и как решить эту проблему. Если учесть то что хорошая клавиатура может стоит достаточно дорого то лучше попробовать самому решить проблему и попробовать восстановить работоспособность клавиатуры чем сразу же бежать в магазин за новой.

И так представим ситуации, вы включили компьютер, он загрузился, но клавиатура перестала подавать признаки жизни. Первое что в большинстве случаев делает пользователе, это просто перезагружает компьютер еще раз. Но и после этого клавиатур работать не начала. И так первое что нужно вам узнать это через какой разъем у вас подключена клавиатура USB или PS/2

Не работает клавиатура с разъемом PS/2

Первая и самая простая причина это просто клавиатура сломалась.

Вторая причина отошёл разъем PS/2 в этом случае нужно заново подключить и перезагрузить компьютер, так как клавиатура определяется в процессе загрузки системы. Если клавиатуру с разъемом PS/2 выдернуть и снова подключить в процессе работы компьютера она не определится. На горячею такое может пройти только на новых материнских платах.

Третья причина сбились настройки БИОСа. В этом случаем вам придется зайти в  БИОС (в процессе загрузки нужно нажать кнопку  DEL) И найти пункт меня, отвечающий за работоспособность клавиатуры.

Подробно описывать не буду так у всех меню БИОСа разное. Ищите меню KeyBoard. Очень часто  встречается такая ситуация когда разъем просто выгорал.

Тут единственным решением будет приобретения переходника с PS/2 на USB.

Не работает клавиатура с разъемом USB

Первая причина такая же как и в случае PS/2 клавиатура не работает потому что сломалась.

Вторая причина тоже аналогичная, по каким-то причинам отошел кабель USB. Но тут все горазда проще, чем в случае с PS/2 просто вставляем кабель на место и все. Если клавиатура в рабочем состоянии, то она снова заработает.

Третья причина сбились настройки БИОСа. Тут также продеться зайти в него и посмотреть, не отключены ли у вас USB разъемы, если отключены, то включаем и радуемся.

Четвертая причина сломан разъем или выгорел. Просто пробуем подключить клавиатур в другой разъем USB.

 Не работает часть кнопок на клавиатуре

В большинстве случаев это происходит по вине, каких либо приложений. Самый простой способ все проверить это в текстовом документе, проверить работоспособность всех кнопок если они не работаю, то значить ваше клавиатуре пришёл конец. Так же неопытные пользователи очень часто жалуются на то что не работает цифровая клавиатуру тут все просто нажимаем кнопку Num LocK.

Ну, вот наверно и все если что вспомню, то обязательно допишу статью. Конечно, для тех, кто хоть немного знаком с компьютером это не является большой проблемой, но все же, надеюсь, что кому-то моя статья поможет.

Источник: http://www.softo-mir.ru/pochemu-ne-rabotaet-klaviatura/

Описание интерфейса PS2

ПодробностиКатегория: РазноеСоздано 20 Апрель 2010Автор: Николай КовачПросмотров: 60713

Несмотря на то, что USB клавиатур и мышей становится все больше и больше, компьютеры со «старым» PS2 интерфейсом все еще выпускаются. Посмотрите на системный блок Вашего компьютера сзади. Вы видите два небольших шестиконтактных разъемчика, один над другим, зеленый и фиолетовый? Это они. Они служат для подключения мыши и клавиатуры стандарта PS2.

Для начала, немного технической информации.

Как работает интерфейс PS2?
Порывшись в интернете находим наиболее достоверную информацию о PS2 здесь: http://www.computer-engineering.org/, автор Adam Chapweske, за что мы ему крайне признательны. Статья эта большая и на английском языке, поэтому попробуем перевести на русский самое необходимое.Первое – это описание контактов разъема PS2.

В разъеме MINIDIN 6 контактов, но используются только 4 из них.

Слева нарисован разъем, который вставляется. Он устанавлявается на шнур мыши или клавиатуры. Справа нарисован разъем устанавливаемый на материнскую плату компьютера. Нумерация контактов у них, естественно зеркальная, потому, что при вставлянии одного разъема в другой сигналы одного имени должны совпадать.

Сигналы интерфейса:

  1. Data (передаваемые данные)
  2. Not Implemented (не используетя)
  3. Ground (Земля)
  4. VCC (+5V) (Питание)
  5. Clock (сигнал синхронизации передаваемых данных)
  6. Not Implemented (не используется).

Второе – это электрический интерфейс.
Клавиатура (или мышь) подключена к контроллеру на материнской плате по схеме «открытый коллектор». Что это такое? Схему можно нарисовать примерно так:

Схема «открытый коллектор» используется когда одним сигналом могут управлять несколько устройств. В нашем случае это контроллер на материнской плате и контроллер внутри клавиатуры. Они могут передавать данные навстречу друг другу.

Например Клавиатура посылает коды нажатых клавиш, а компьютер посылает в клавиатуру команду зажечь светодиоды CAPS/NUM/SCROLL LOCK.
В исходном состоянии, когда данные не передаются, оба сигнала Data и Clock находятся в логической единице (на них напряжение +5В).

Такое состояние будет если оба контроллера снимут управляющее напряжение с транзисторов (ClockOut и DataOut) и они закрыты. Так как транзисторы закрыты, то сигналы «подтянуты вверх» к напряжению питания резисторами. Читать текущее состояние сигналов оба контроллера могут прямо с контактов DataIn и ClockIn.

Управлять линией очень легко. Контроллер подает управляющее напряжение на базу транзистора (сигналы DataOut и ClockOut), он открывается, через него течет ток и соответствующий сигнал Data или Clock получается «притянут к земле», на нем получается логический ноль.

Что делать если оба контроллера захотят одновременно передать навстречу друг другу? Ну во-первых, ничего страшного на физическом уровне не случится, ведь «притянутый к земле» сигнал «притянуть» еще раз не получится. Во-вторых, конечно это проблема для уровня передачи данных.

Оба контроллера, как два вежливых собеседника, должны уметь слушать друг друга и дослушать до конца. Это обеспечивается специальным протоколом. Например контроллер, перед передачей своих данных не должен начинать передачу данных если состояние сигналов недавно менялось.

Третье – это протокол.
При передаче от устройства (PS2 клавиатуры или PS2 мыши) к компьютеру используется следующий протокол. Устройство не начинает передачу, если Clock не находился в «1» по крайней мере 50 микросекунд. Устройство передает последовательно:

  1. старт бит – всегда ноль;
  2. 8 бит данных;
  3. бит четности;
  4. стоп бит – всегда единица.

Устройство устанавливает/меняет сигнал Data когда Clock находится в логической единице. Контроллер на материнской плате читает данные, когда Clock находится в логическом нуле. Примерно так:

Частота сигнала Clock примерно 10-16.7кГц. Время от фронта сигнала Clock до момента изменения сигнала Data не менее 5 микросекунд. Так написано в той статье, на которую я сделал ссылку в начале. Четно говоря я очень сомневаюсь, что производители придерживаются этих значений.

Контроллер материнской платы может сигнализировать устройству о невозможности приема опустив сигнал Clock в логический ноль. На практике этого по моему тоже никто не делает.

При передаче в обратную сторону команд от контроллера на материнской плате компьютера к клавиатуре или мыши протокол отличается от описанного выше.

Последовательность передаваемых бит здесь хитрее:

  1. хост контроллер опускает сигнал Clock в ноль на время примерно 100 микросекунд;
  2. хост контроллер опускает сигнал Data в ноль формируя старт бит;
  3. хост контроллер отпускает сигнал Clock в логическую единицу, клавиатура фиксирует старт бит;
  4. далее клавиатура генерирует сигнал Clock, а хост контроллер подает передаваемые биты;
  5. после того, как хост контроллер передал все свои биты, включая бит четности и стоп бит, клавиатура посылает последний бит «ноль», который является подтверждением приема.

Поскольку одним сигналом управляют два устройства, то довольно трудно понять, кто в данный момент времени управляет сигналом. Именно по этому диаграмма нарисована двумя цветами. Красный цвет – сигнал управляется хост контроллером, а синий – сигнал управляется клавиатурой.

Четвертое – это коды и команды, которые посылают мыши, клавиатуры и контроллер компьютера. Это довольно сложная тема… Пожалуй опишу все это в следующей статье.

Ну и конечно, мы собираемся сделать из платы Марсоход какой-то прототип клавиатуры. Уже скоро!

Источник: https://marsohod.org/11-blog/56-ps2

Как переделать клавиатуру из DIN в PS/2

На такой работе, как у меня, неизбежно скапливается запас всяческого компьютерного старья. Причем часто это просто морально устаревшая техника и девайсы, которые работают замечательно, но никому уже не нужны. Например, есть целый штабель клавиатур, рабочих и не очень. И если лишних рабочих клавиатур PS/2 нет, то рабочих клавиатур с DIN-разъемом пока достаточно.

В то же время на такой работе, как у меня, компьютерщик должен иметь 2-3 запасных комплекта мышей и клавиатур для одновременного ремонта компов. И вот сегодня в очередной раз мне не хватило клавиатуры PS/2. Пришлось переделать такую клавиатуру из старой клавиатуры с DIN разъемом. Вот как это делается.

С точки зрения электрических сигналов DIN -клавиатура не отличается от PS/2 клавиатуры.

Можно просто отрезать разъем PS/2 от старой нерабочей мышки или нерабочей PS/2 клавиатуры и прикрутить этот разъем на клавиатуру вместо DIN. Для этого нужно узнать маркировку проводов клавиатуры. Берём клавиатуру с DIN-разъёмом и отрезаем этот разъем.

Прозваниваем тестером разъем DIN и находим какому штырьку соответствует провод какого цвета. В моём случае DIN имел такую цветовую маркировку, фото кликабельны:Внимание! На разных моделях  цвет проводов может отличаться, но положение сигналов на разъеме DIN одинаково.

Записываем цветовую маркировку разъема DIN

СИГНАЛ ЦВЕТ
CLC Белый
GND Серебристый
DAT Зелёный
VCC Красный

Достаём старую нерабочую шариковую мышь с разъемом PS/2 и отрезаем от нее разъем PS/2. Прозваниваем тестером разъем PS/2 и находим какому штырьку соответствует провод какого цвета. В моём случае PS/2 имел такую цветовую маркировку:

Внимание! На разных моделях цвет проводов может отличаться, но положение сигналов на разъеме PS/2 одинаково.

Записываем цветовую маркировку разъема PS/2

СИГНАЛ ЦВЕТ
CLC Белый
GND Зелёный
DAT Оранжевый
VCC Синий

Теперь находим какой цвет проводов клавиатуры DIN соответствует какому цвету проводов разъема PS/2.

СИГНАЛ ЦВЕТ  проводовразъема PS/2 ЦВЕТпроводов клавиатуры разъема DIN
CLC Белый Белый
GND Зелёный Серебристый
DAT Оранжевый Зелёный
VCC Синий Красный

По этой полученной таблице скручиваем провода клавиатуры и разъёма PS/2.

Изолируем скрученные проводки друг от друга изолентой и проверяем работу клавиатуры.

Если перепутали цвета, сгорит клавиатура или порт компьютера. Или просто не будет работать клавиатура.

А если всё делали внимательно, клавиатура будет работать.

Источник: http://www.comp-man.info/2011/07/din-ps2.html

Interface 1bis: работа клавиатуры и мыши

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}
");let k=document.querySelector(".flat_pm_modal[data-id-modal=\""+a.ID+"\"]");if(-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(k,d):jQuery(k).html(b+d),"px"==a.how.popup.px_s)e.bind(h,()=>{e.scrollTop()>a.how.popup.after&&(e.unbind(h),f.unbind(i),j())}),void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{e.unbind(h),f.unbind(i),j()});else{let b=setTimeout(()=>{f.unbind(i),j()},1e3*a.how.popup.after);void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{clearTimeout(b),f.unbind(i),j()})}f.on("click",".flat_pm_modal .flat_pm_crs",()=>{jQuery.arcticmodal("close")})}if(void 0!==a.how.outgoing){let b,c="0"==a.how.outgoing.indent?"":" style=\"bottom:"+a.how.outgoing.indent+"px\"",e="true"==a.how.outgoing.cross?"":"",f=jQuery(window),g="scroll.out"+a.ID,h=void 0===flatPM_getCookie("flat_out_"+a.ID+"_mb")||"false"!=flatPM_getCookie("flat_out_"+a.ID+"_mb"),i=document.createElement("div"),j=jQuery("body"),k=()=>{void 0!==a.how.outgoing.cookie&&"false"==a.how.outgoing.cookie&&h&&(jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show"),j.on("click",".flat_pm_out[data-id-out=\""+a.ID+"\"] .flat_pm_crs",function(){flatPM_setCookie("flat_out_"+a.ID+"_mb",!1)})),(void 0===a.how.outgoing.cookie||"false"!=a.how.outgoing.cookie)&&jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show")};switch(a.how.outgoing.whence){case"1":b="top";break;case"2":b="bottom";break;case"3":b="left";break;case"4":b="right";}jQuery("body > *").eq(0).before("
"+e+"
");let m=document.querySelector(".flat_pm_out[data-id-out=\""+a.ID+"\"]");-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(m,d):jQuery(m).html(e+d),"px"==a.how.outgoing.px_s?f.bind(g,()=>{f.scrollTop()>a.how.outgoing.after&&(f.unbind(g),k())}):setTimeout(()=>{k()},1e3*a.how.outgoing.after),j.on("click",".flat_pm_out .flat_pm_crs",function(){jQuery(this).parent().removeClass("show").addClass("closed")})}countMode&&(flat_count["block_"+a.ID]={},flat_count["block_"+a.ID].count=1,flat_count["block_"+a.ID].click=0,flat_count["block_"+a.ID].id=a.ID)}catch(a){console.warn(a)}}function flatPM_start(){let a=flat_pm_arr.length;if(0==a)return flat_pm_arr=[],void jQuery(".flat_pm_start, .flat_pm_end").remove();flat_body=flat_body||jQuery("body"),!flat_counter&&countMode&&(flat_counter=!0,flat_body.on("click","[data-flat-id]",function(){let a=jQuery(this),b=a.attr("data-flat-id");flat_count["block_"+b].click++}),flat_body.on("mouseenter","[data-flat-id] iframe",function(){let a=jQuery(this),b=a.closest("[data-flat-id]").attr("data-flat-id");flat_iframe=b}).on("mouseleave","[data-flat-id] iframe",function(){flat_iframe=-1}),jQuery(window).on("beforeunload",()=>{jQuery.isEmptyObject(flat_count)||jQuery.ajax({async:!1,type:"POST",url:ajaxUrlFlatPM,dataType:"json",data:{action:"flat_pm_ajax",data_me:{method:"flat_pm_block_counter",arr:flat_count}}})}).on("blur",()=>{-1!=flat_iframe&&flat_count["block_"+flat_iframe].click++})),flat_userVars.init();for(let b=0;bflat_userVars.textlen||void 0!==a.chapter_sub&&a.chapter_subflat_userVars.titlelen||void 0!==a.title_sub&&a.title_subc&&cc&&c>d&&(b=flatPM_addDays(b,-1)),b>e||cd||c-1!=flat_userVars.referer.indexOf(a))||void 0!==a.referer.referer_disabled&&-1!=a.referer.referer_disabled.findIndex(a=>-1!=flat_userVars.referer.indexOf(a)))&&(c=!0),c||void 0===a.browser||(void 0===a.browser.browser_enabled||-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser))&&(void 0===a.browser.browser_disabled||-1==a.browser.browser_disabled.indexOf(flat_userVars.browser)))){if(c&&void 0!==a.browser&&void 0!==a.browser.browser_enabled&&-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser)&&(c=!1),!c&&(void 0!==a.geo||void 0!==a.role)&&(""==flat_userVars.ccode||""==flat_userVars.country||""==flat_userVars.city||""==flat_userVars.role)){flat_pm_then.push(a),flatPM_setWrap(a),flat_body.hasClass("flat_pm_block_geo_role")||(flat_body.addClass("flat_pm_block_geo_role"),flatPM_ajax("flat_pm_block_geo_role")),c=!0}c||(flatPM_setWrap(a),flatPM_next(a))}}}let b=jQuery(".flatPM_sticky");b.each(function(){let a=jQuery(this),b=a.data("height")||350,c=a.data("top");a.wrap("
");let d=a.parent()[0];flatPM_sticky(this,d,c)}),debugMode||countMode||jQuery("[data-flat-id]:not([data-id-out]):not([data-id-modal])").contents().unwrap(),flat_pm_arr=[],jQuery(".flat_pm_start, .flat_pm_end").remove()}

В этой статье приведен перевод документации [1], которая описывает работу клавиатуры и мыши совместно с Interface 1bis (сокращенно IF1bis) и компьютером ZX Spectrum.

[Мышь]

К разъему PS/2 интерфейса может быть подключена мышь PS/2 или двухрежимная (мышь, поддерживающая оба интерфейса, и PS/2 и USB, но только не чисто мышь USB). В результате подключенная мышь будет работать в режиме совместимости с мышью Kempston, и предоставлять данные на следующих портах ввода/вывода Z80:

Порт I/O Функция бит
#FBDF или #1F Биты 0-7 это координата X (0..255).
#FFDF или #DF Биты 0-7 это координата Y (0..255).
#FADF или #5F Бит 0 соответствует правой кнопке, бит 1 соответствует левой кнопке (лог. 1 означает, что кнопка не нажата). Биты 2..7 не используются.

Чтобы мышь корректно определилась на интерфейсе PS/2, она должна быть подключена туда до того, как будет подано напряжение питания. Это особенность мыши PS/2, а не интерфейса IF1bis.

Текущее состояние мыши отображается светодиодом M (описание светодиодов см. в [3]):

• Если светодиод M не горит, то мышь не подключена или запрещена.• Светодиод M горит постоянно – мышь работает как мышь Kempston.

• Светодиод M мерцает – мышь работает как джойстик Kempston. Мерцание происходит на половине частоты опроса мыши.

Разрешение/запрет мыши. Работу мыши можно разрешать и запрещать с помощью нажатий на кнопки мыши следующим образом:

• Мышь будет запрещена, если нажать её обе кнопки одновременно.• Если мышь запрещена, то её можно разрешить как мышь Kempston, если нажать на её правую кнопку.• Если мышь запрещена, то нажатие на её левую кнопку разрешает работу мыши как джойстика Kempston.

• Также мышь может быть запрещена, если нажать на одну из кнопок джойстика.

Примечание: когда мышь разрешена, то коннектор джойстика не работает, и наоборот.

Мышь по умолчанию разрешена в “оконном” режиме, когда она сообщает о своих координатах относительно конфигурируемого окна. Также мышь может работать и в legacy-режиме мыши Kempston, когда значение координаты перепрыгивает через 255 в 0 и обратно.

Конфигурирование мыши. Для конфигурирования драйвера мыши можно посылать микроконтроллеру интерфейса специальные команды:

CAT 0;”m”+строка+..+строка

Строки Функция
“e” Разрешить мышь.
“d” Запретить мышь.
“w” Оконный режим.
“x”+CHR$X Установить ширину окна в пикселях X=16..255.
“y”+CHR$Y Установить высоту окна в пикселях Y=16..192.
“j” Запустить работу мыши как джойстика.
“s”+CHR$S Установить чувствительность мыши в режиме джойстика S=3..32.
“r”+CHR$R Установить частоту опроса мыши в режиме джойстика в Герцах R=1..10.

[Клавиатура]

Вместо мыши к интерфейсу 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

Клавиатура PS/2 ZX Spectrum
Esc BREAK
Tab EDIT
Caps Lock CAPS LOCK
Home TRUE VIDEO
End INVERSE VIDEO
Insert GRAPH
Backspace DELETE
` Символ фунта стерлингов
Delete Символ копирайта
Shift CAPS SHIFT
Ctrl SYMBOL SHIFT
Windows EXTENDED MODE

Режим эмуляции джойстика 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

Источник: http://microsin.net/adminstuff/others/mouse-and-keyboard-interface-1bis.html

Инструкция: Что делать, если не работает клавиатура на компьютере

Клавиатура – главный инструмент для ввода информации, без которого работа на компьютере невозможна. Чаще всего, чтобы данное устройство работало безотказно, его достаточно просто подключить к компьютеру, и все необходимые драйвера оно установит автоматически.

Так происходит в большинстве случаев, но не всегда. Бывают ситуации, когда при подключении клавиатуры в разъем USB или PS/2 она не определяется на компьютере и не подает никаких признаков работы – индикаторы не горят, а кнопки не срабатывают.

В рамках данной статьи мы предлагаем инструкции, что делать, если не работает клавиатура на компьютере.

Рекомендуем прочитать:  Как включать компьютер с помощью клавиатуры?

Почему не работает клавиатура на компьютере

Подключить клавиатуру к компьютеру максимально просто – ее провод достаточно вставить в соответствующий разъем на материнской плате, и после этого устройство начнет работать. Бывают беспроводные клавиатуры, радиоприемник от которых вставляется в USB-разъем, после чего устройство работает, если соблюдено расстояние между передатчиком и устройством.

В связи с простотой процесса подключения компьютера, можно сделать вывод, что причин, по которым клавиатура не работает на компьютере, всего 2:

  • Механическая. Могут возникнуть проблемы непосредственно с клавиатурой или проводом, которым она подключается к материнской плате. Так же причиной неисправности может быть сломанный разъем на материнской плате.
  • Программная. Драйвера для клавиатуры устанавливаются автоматически, но в процессе установки любого программного обеспечения могут произойти сбои, и данная ситуация не исключение. Кроме того, проблемы могут наблюдаться не на уровне операционной системы, а в BIOS, где отключены соответствующие настройки для работы клавиатуры.

В зависимости от того, каким разъемом клавиатура подключается к компьютеру, предлагаем разные варианты решения возникающих проблем.

Что делать, если клавиатура не работает на компьютере по протоколу USB

Наиболее распространенным интерфейсом подключения клавиатуры к компьютеру является USB. Скорости передачи информации от периферийного устройства компьютеру хватает, как через протокол USB 2.0, так и через USB 3.0, поэтому нет разницы в том, в какой разъем подключать клавиатуру.

Если при включении компьютера не работает USB-клавиатура, необходимо сделать следующее:

  1. Выключите компьютер и начните загружать его заново;
  2. Сразу после того как компьютер начнет загружаться, жмите на клавишу DEL, чтобы попасть в настройки BIOS;
  3. В настройках BIOS необходимо найти пункт USB Keyboard Support или Legacy USB (в зависимости от того, какая версия базового программного обеспечения используется в вашей материнской плате). Данный пункт следует переключить в положение Enable.

Стоит отметить, что у пользователей, клавиатура которых подключена к материнской плате через USB, могут возникнуть проблемы с переходом в BIOS на экране загрузки компьютера, если используется старая версия базового программного обеспечения. В таком случае необходимо отыскать клавиатуру с разъемом PS/2 или воспользоваться соответствующим переходником.

Что делать, если клавиатура не работает на компьютере по протоколу PS/2

Производители клавиатур стараются отходить от разъема PS/2, отказываясь от него в пользу USB. Встретить в продаже клавиатуру с PS/2 разъемом весьма сложно, но если вам попалась подобная периферия, и она не работает при загрузке Windows, вероятнее всего проблема связана с драйверами. Чтобы клавиатура заработала, необходимо сделать следующее:

  1. Нажмите правой кнопкой мыши на меню «Пуск» и выберите пункт «Диспетчер устройств»;
  2. Далее среди доступных устройств найдите клавиатуры и раскройте список с ними. На подключенной клавиатуре, с которой имеются проблемы, будет отметка в виде круга на желтом фоне с восклицательным знаком. Выберите данную клавиатуру, нажав на нее левой кнопкой мыши, после чего  в верхнем меню нажмите пункты «Действие» — «Удалить». Подтвердите желание удалить устройство из памяти компьютера и закрывайте «Диспетчер устройств»;
  3. Далее нажмите на кнопку «Пуск» правой кнопкой мыши и выберите пункт «Выполнить»;
  4. В открывшейся строке пропишите команду hdwwiz (используя виртуальную клавиатуру) и нажмите «ОК», после чего откроется «Мастер установки оборудования»;
  5. Нажмите «Далее» и выберите пункт «Поиск и автоматическая установка оборудования»;
  6. Некоторое время система будет вести поиск новых устройств, после чего на клавиатуре загорится NumLock, сигнализируя, что устройство найдено и устанавливается;
  7. Когда процесс установки будет завершен, можете пользоваться клавиатурой.

Стоит отметить, что подобная проблема с клавиатурами, подключенными по протоколу PS/2, чаще всего возникает из-за ошибки при установке драйвера i8042prt.sys или kbdclass.sys.

(420

Источник: https://okeygeek.ru/ne-rabotaet-klaviatura-na-kompyutere-chto-delat-prichiny/