Стек драйверов для системных устройств ввода — КиберПедия 

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

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

Стек драйверов для системных устройств ввода

2022-10-03 39
Стек драйверов для системных устройств ввода 0.00 из 5.00 0 оценок
Заказать работу

Лазерные клавиатуры

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

 

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

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

Проводные клавиатуры

PS/2 и USB – две разновидности проводного соединения, соединяющие клавиатуры с компьютерами.

Порт PS/2 впервые появился в 1987 году на компьютерах IBM PS/2 (до этого для подключения клавиатуры использовался DIN-5. Скорость передачи данных — от 80 до 300 Кб/с и зависит от производительности подключенного устройства и программного драйвера.

Из шести контактов в разъёме используется четыре: частота, данные, питание, общий. При этом для клавиатуры используемые контакты шины данных и частоты могут отличаться от контактов для подключения мыши. Это позволяет использовать оба устройства сразу, но через разветвитель.

Некоторые материнские платы могут правильно работать при «неправильном» подключении мыши и клавиатуры (то есть при подключении клавиатуры в разъём, предназначенный для мыши, и, наоборот, мыши в разъём для клавиатуры) — это обусловлено тем, что каждый разъём является универсальным. Большинство же материнских плат при неправильном подключении (или при отключении во время работы) потребуют от пользователя «правильного» подключения устройств и иногда перезагрузки.

 

В зависимости от типа корпуса клавиатуры делятся на:

Традиционные (стандартные) – обычные AT-клавиатуры;

Эргономичные. Конструкции клавиатур данного типа учитывают естественное положение рук во время набора (в таких конструкциях клавиатура преломлялась в центре, клавиши находились под прямым углом к естественному положению кистей рук при наборе). Эргономичная клавиатура дает возможность повысить производитель­ность и избежать опасности некоторых хронических заболеваний.

Гибкие. — Клавиатура выполненная из нетоксичной высокоэластичной силиконовой резины и похожа на своеобразный коврик с выступами различной формы. Буквы и символы не стираются со временем так как нанесены на обратную сторону внешней плёнки. Внешняя плёнка может быть как матовой так и глянцевой. Главный плюс таких клавиатур в удобстве транспортировки — весят они всего около 350 грамм и легко сворачиваются в компактный рулон. Они хорошо защищены от загрязнений(водонепроницаема), легко чистятся и сравнительно легко переносят удары. Бесшумны и в некоторых реализациях имеют подсветку клавиш.

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

 

Программа может использовать клавиатуру по-разному. Она может задержать свое выполнение до тех пор, пока оператор не введет какое-нибудь число или пока не нажмет какую-нибудь клавишу. Выполняя некоторую работу, программа может периодически проверять, не нажал ли оператор на клавишу, изменяющую режим работы программы. Резидентные программы могут контролировать все нажатия на клавиши, активизируясь при нажатии определенной заранее комбинации. Можно использовать прерывание, вырабатываемое клавиатурой, например, для завершения работы программы.

Принципы работы клавиатуры

Что же находится внутри клавиатуры? Оказывается, там есть компьютер! Только этот компьютер состоит из одной микросхемы и выполняет специализированные функции. Он отслеживает нажатия на клавиши и посылает номер нажатой клавиши в центральный компьютер.

Клавиатура представляет собой совокупность датчиков, воспринимающих давление на клавиши и замыкающих определенную электрическую цепь. Длительное время выпускались клавиатуры с механическими датчиками. Современные клавиатуры — мембранного типа. Переключатель представляет собой набор мембран: активная – верхняя, пассивная – нижняя, разделяющая.

Внутри корпуса клавиатуры помимо датчиков расположены электронные платы дешифрации сигнала.

Обмен данными между клавиатурой и системной платой осуществляется 11-битовыми блоками (8 разрядов плюс служебная информация) по 2-проводному кабелю (сигнал и земля).

Принцип работы клавиатуры заключается в сканировании переключателей клавиш. Замыканию и размыканию любого из переключателей соответствует уникальный цифровой код (scancode) размеров 1 байт.

Подключение клавиатуры к системной плате производится с помощью разъема DIN или mini-DIN.

На системной плате прием и обработку сигналов от клавиатуры выполняет специальная микросхема — контроллер клавиатуры.

Если рассмотреть сильно упрощенную принципиальную схему клавиатуры, можно заметить, что все клавиши находятся в узлах матрицы:

Все горизонтальные линии матрицы подключены через резисторы к источнику питания +5 В. Клавиатурный компьютер имеет два порта - выходной и входной. Входной порт подключен к горизонтальным линиям матрицы (X0-X4), а выходной - к вертикальным (Y0-Y5).

Устанавливая по очереди на каждой из вертикальных линий уровень напряжения, соответствующий логическому 0, клавиатурный компьютер опрашивает состояние горизонтальных линий. Если ни одна клавиша не нажата, уровень напряжения на всех горизонтальных линиях соответствует логической 1 (т.к. все эти линии подключены к источнику питания +5 В через резисторы).

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

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

Номер клавиши, посылаемый клавиатурным процессором, однозначно связан с распайкой клавиатурной матрицы и не зависит напрямую от обозначений, нанесенных на поверхность клавиш. Этот номер называется скан-кодом (ScanCode).

Слово scan ("сканирование"), подчеркивает тот факт, что клавиатурный компьютер сканирует клавиатуру для поиска нажатой клавиши.

Но программе нужен не порядковый номер нажатой клавиши, а соответствующий обозначению на этой клавише ASCII-код. Этот код не зависит однозначно от скан-кода, т.к. одной и той же клавише могут соответствовать несколько значений ASCII-кода. Это зависит от состояния других клавиш. Например, клавиша с обозначением '1' используется еще и для ввода символа '!' (если она нажата вместе с клавишей SHIFT).

Поэтому все преобразования скан-кода в ASCII-код выполняются программным обеспечением. Как правило, эти преобразования выполняют модули BIOS. Для использования символов кириллицы эти модули расширяются клавиатурными драйверами.

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

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

Клавиатурные ловушки

В операционной системе MicrosoftWindows ловушкой, или хуком (hook) называется механизм перехвата событий с использованием особой функции (таких как передача сообщений Windows, ввод с мыши или клавиатуры) до того, как они дойдут до приложения. Эта функция может затем реагировать на события и, в некоторых случаях, изменять или отменять их.

Функции, получающие уведомления о событиях, называются фильтрующими функциями и различаются по типам перехватываемых ими событий. Для того чтобы Windows смогла вызывать функцию-фильтр, эта функция должна быть прикреплена к хуку (например, к клавиатурному хуку). Прикрепление одной или нескольких фильтрующих функций к какому-нибудь хуку называется установкой хука. Для установки и удаления фильтрующих функций приложения используют функции Win32 API SetWindowsHookEx и UnhookWindowsHookEx. Некоторые хуки можно устанавливать как для всей системы, так и для одного конкретного потока.

Если к одному хуку прикреплено несколько фильтрующих функций, Windows реализует очередь функций, причем функция, прикрепленная последней, оказывается в начале очереди, а самая первая функция — в ее конце. Очередь функций-фильтров (см. рисунок 8) поддерживается самой Windows, что позволяет упростить написание фильтрующих функций и улучшить производительность операционной системы.

Система поддерживает отдельные цепочки для каждого типа хуков. Цепочка хуков — это список указателей на фильтрующие функции (специальные функции обратного вызова, определяемые приложением). Когда происходит некоторое событие, связанное с конкретным типом хука, система последовательно передает сообщение каждой фильтрующей функции в цепочке хуков. Действие, которое может выполнить фильтрующая функция, зависит от типа ловушки: некоторые функции могут только отслеживать возникновение событий, другие могут модифицировать параметры сообщений или даже остановить обработку сообщений, заблокировав вызов следующей фильтрующей функции в цепочке хуков или функции обработки сообщений окна-назначения.

Когда к хуку прикреплена одна или более функций-фильтров и происходит событие, приводящее к срабатыванию хука, ОС Windows вызывает первую функцию из очереди функций-фильтров, и на этом ее ответственность заканчивается. Далее функция ответственна за то, чтобы вызвать следующую функцию в цепочке, для чего используется функция Win32 API CallNextHookEx.

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

Общая схема обработки

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

1. Операционная система при старте создает в системной процессе csrss.exe поток необработанного ввода и системную очередь аппаратного ввода.

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

3. Когда пользователь нажимает или отпускает клавишу на клавиатуре, микроконтроллер клавиатуры фиксирует нажатие/отпускание клавиши и посылает в центральный компьютер скан-код нажатой клавиши и запрос на прерывание.

4. Системный контроллер клавиатуры получает скан-код, производит преобразование скан-кода, делает его доступным на порту ввода-вывода 60h и генерирует аппаратное прерывание центрального процессора.

5. Контроллер прерываний вызывает процедуру обработки прерывания IRQ 1, — ISR, зарегистрированную в системе функциональным драйвером клавиатуры i8042prt.

6. Процедура ISR считывает из внутренней очереди контроллера клавиатуры появившиеся данные, переводит скан-коды в коды виртуальных клавиш (независимые значения, определенные системой) и ставит в очередь вызов отложенной процедуры I8042KeyboardIsrDpc.

7. Как только это становится возможным, система вызывает DPC, которая в свою очередь вызывает процедуру обратного вызова KeyboardClassServiceCallback, зарегистрированную драйвером класса клавиатуры Kbdclass.

8. Процедура KeyboardClassServiceCallback извлекает из своей очереди ожидающий завершения запрос от потока необработанного ввода и возвращает в нем информацию о нажатой клавише.

9. Поток необработанного ввода сохраняет полученную информацию в системной очереди аппаратного ввода и формирует на ее основе базовые клавиатурные сообщения Windows WM_KEYDOWN, WM_KEYUP, которые ставятся в конец очереди виртуального ввода VIQ активного потока.

10. Цикл обработки сообщений потока удаляет сообщение из очереди и передает его соответствующей оконной процедуре для обработки. При этом может быть вызвана системная функция TranslateMessage, которая на основе базовых клавиатурных сообщений создает дополнительные «символьные» сообщения WM_CHAR, WM_SYSCHAR, WM_DEADCHAR и WM_SYSDEADCHAR.

 

Лазерные клавиатуры

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

 

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

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

Проводные клавиатуры

PS/2 и USB – две разновидности проводного соединения, соединяющие клавиатуры с компьютерами.

Порт PS/2 впервые появился в 1987 году на компьютерах IBM PS/2 (до этого для подключения клавиатуры использовался DIN-5. Скорость передачи данных — от 80 до 300 Кб/с и зависит от производительности подключенного устройства и программного драйвера.

Из шести контактов в разъёме используется четыре: частота, данные, питание, общий. При этом для клавиатуры используемые контакты шины данных и частоты могут отличаться от контактов для подключения мыши. Это позволяет использовать оба устройства сразу, но через разветвитель.

Некоторые материнские платы могут правильно работать при «неправильном» подключении мыши и клавиатуры (то есть при подключении клавиатуры в разъём, предназначенный для мыши, и, наоборот, мыши в разъём для клавиатуры) — это обусловлено тем, что каждый разъём является универсальным. Большинство же материнских плат при неправильном подключении (или при отключении во время работы) потребуют от пользователя «правильного» подключения устройств и иногда перезагрузки.

 

В зависимости от типа корпуса клавиатуры делятся на:

Традиционные (стандартные) – обычные AT-клавиатуры;

Эргономичные. Конструкции клавиатур данного типа учитывают естественное положение рук во время набора (в таких конструкциях клавиатура преломлялась в центре, клавиши находились под прямым углом к естественному положению кистей рук при наборе). Эргономичная клавиатура дает возможность повысить производитель­ность и избежать опасности некоторых хронических заболеваний.

Гибкие. — Клавиатура выполненная из нетоксичной высокоэластичной силиконовой резины и похожа на своеобразный коврик с выступами различной формы. Буквы и символы не стираются со временем так как нанесены на обратную сторону внешней плёнки. Внешняя плёнка может быть как матовой так и глянцевой. Главный плюс таких клавиатур в удобстве транспортировки — весят они всего около 350 грамм и легко сворачиваются в компактный рулон. Они хорошо защищены от загрязнений(водонепроницаема), легко чистятся и сравнительно легко переносят удары. Бесшумны и в некоторых реализациях имеют подсветку клавиш.

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

 

Программа может использовать клавиатуру по-разному. Она может задержать свое выполнение до тех пор, пока оператор не введет какое-нибудь число или пока не нажмет какую-нибудь клавишу. Выполняя некоторую работу, программа может периодически проверять, не нажал ли оператор на клавишу, изменяющую режим работы программы. Резидентные программы могут контролировать все нажатия на клавиши, активизируясь при нажатии определенной заранее комбинации. Можно использовать прерывание, вырабатываемое клавиатурой, например, для завершения работы программы.

Принципы работы клавиатуры

Что же находится внутри клавиатуры? Оказывается, там есть компьютер! Только этот компьютер состоит из одной микросхемы и выполняет специализированные функции. Он отслеживает нажатия на клавиши и посылает номер нажатой клавиши в центральный компьютер.

Клавиатура представляет собой совокупность датчиков, воспринимающих давление на клавиши и замыкающих определенную электрическую цепь. Длительное время выпускались клавиатуры с механическими датчиками. Современные клавиатуры — мембранного типа. Переключатель представляет собой набор мембран: активная – верхняя, пассивная – нижняя, разделяющая.

Внутри корпуса клавиатуры помимо датчиков расположены электронные платы дешифрации сигнала.

Обмен данными между клавиатурой и системной платой осуществляется 11-битовыми блоками (8 разрядов плюс служебная информация) по 2-проводному кабелю (сигнал и земля).

Принцип работы клавиатуры заключается в сканировании переключателей клавиш. Замыканию и размыканию любого из переключателей соответствует уникальный цифровой код (scancode) размеров 1 байт.

Подключение клавиатуры к системной плате производится с помощью разъема DIN или mini-DIN.

На системной плате прием и обработку сигналов от клавиатуры выполняет специальная микросхема — контроллер клавиатуры.

Если рассмотреть сильно упрощенную принципиальную схему клавиатуры, можно заметить, что все клавиши находятся в узлах матрицы:

Все горизонтальные линии матрицы подключены через резисторы к источнику питания +5 В. Клавиатурный компьютер имеет два порта - выходной и входной. Входной порт подключен к горизонтальным линиям матрицы (X0-X4), а выходной - к вертикальным (Y0-Y5).

Устанавливая по очереди на каждой из вертикальных линий уровень напряжения, соответствующий логическому 0, клавиатурный компьютер опрашивает состояние горизонтальных линий. Если ни одна клавиша не нажата, уровень напряжения на всех горизонтальных линиях соответствует логической 1 (т.к. все эти линии подключены к источнику питания +5 В через резисторы).

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

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

Номер клавиши, посылаемый клавиатурным процессором, однозначно связан с распайкой клавиатурной матрицы и не зависит напрямую от обозначений, нанесенных на поверхность клавиш. Этот номер называется скан-кодом (ScanCode).

Слово scan ("сканирование"), подчеркивает тот факт, что клавиатурный компьютер сканирует клавиатуру для поиска нажатой клавиши.

Но программе нужен не порядковый номер нажатой клавиши, а соответствующий обозначению на этой клавише ASCII-код. Этот код не зависит однозначно от скан-кода, т.к. одной и той же клавише могут соответствовать несколько значений ASCII-кода. Это зависит от состояния других клавиш. Например, клавиша с обозначением '1' используется еще и для ввода символа '!' (если она нажата вместе с клавишей SHIFT).

Поэтому все преобразования скан-кода в ASCII-код выполняются программным обеспечением. Как правило, эти преобразования выполняют модули BIOS. Для использования символов кириллицы эти модули расширяются клавиатурными драйверами.

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

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

Стек драйверов для системных устройств ввода

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

Соответствующий функциональный драйвер (драйвер порта) реализует зависимую от конкретного устройства поддержку выполнения операций ввода-вывода. В ОС Windows для x86-платформ реализован единый драйвер системной клавиатуры (i8042) и мыши.


Поделиться с друзьями:

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.051 с.