Апаратне забезпечення IBM PC. Типи клавіатур, конструктивне виконання та принцип дії

ЛАБОРАТОРНА РОБОТА 4

ПРИСТРОЇ ВВЕДЕННЯ ІНФОРМАЦІЇ в ПК –клавіатура та миша

Мета роботи

Мета роботи полягає у вивченні принципів роботи клавіатури ПК, а також у керуванні параметрами клавіатури та миші засобами Windows.

Основні відомості

Клавіатура – ​​це пристрій, призначений для введення інформації від користувача до комп'ютера.
Звичайна стандартна клавіатура для персонального комп'ютера має більше 100 клавіш, серед яких алфавітно-цифрові, функціональні, бухгалтерські та інші клавіші.
За допомогою алфавітно-цифрових клавіш користувач може вводити цифри, літери та розділові знаки. У Росії найчастіше використовуються російська та англійська розкладка. Однак користувач у налаштуваннях комп'ютера може вибрати будь-яку клавіатурну розкладку – від китайської до арабської. Якщо на клавішах клавіатури не намальовано всіх необхідних символів вибраної вами розкладки, ситуацію можна виправити, придбавши спеціальні клавішні наклейки.
Верхній ряд клавіатури становлять багатофункціональні кнопки – від F1 до F12. За допомогою функціональних клавіш або їх комбінацій з іншими клавішами можна керувати комп'ютером, наприклад, відкривати вікно допомоги, вікно провідника, вмикати та вимикати комп'ютер.
У правій частині клавіатури розміщено так звані бухгалтерські клавіші – із зображенням цифр та математичних знаків, використання яких прискорює набір числової інформації та роботу з нею. Також бухгалтерські кнопки виконують функцію управління курсором.

Основні параметри сучасних клавіатур

Механізм кнопок.Визначає насамперед вартість клавіатури, а також тактильність (відчутне відчуття).

Для механічних клавіатур можливий вибір із кліком або без. Клік означає чіткий дотик натискання кнопки (супроводжуване звуком), що багатьом подобається.

Тактильні параметри.

До тактильних параметрів відносяться жорсткість клавіш та довжина ходу.

Жорсткість клавіш визначається силою натискання клавіші.



Середньою довжиною ходу кнопки є 3.5 мм. Для тих, хто швидко набиває текст, краще короткий хід.

Обидва параметри визначаються смаком користувача та осмислено вибираються лише після накопичення особистого досвіду. Вперше досить пробігтися клавіатурою в магазині.

Ще один тактильний параметр – клік. Клавіатури бувають з кліком плі без. У буквальному перекладі click – клацання. Точний переклад - тактильний (т. с. дотик) бар'єр, що з'являється на середині натискання і з клацанням долається (звідки назва). Реалізується тонкою дугоподібною пластиною під клавішею, яка «ривком» прогинається.

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

Зазвичай клік зустрічається у механічних клавіатур, оскільки мало змінює їхню вартість, але іноді зустрічається і в інших типів клавіатур.

Форм-факторвизначальних клавіш (обидві Shift,. Backspace та Enter). Коли ці кнопки мають комфортну форму і розташування, то робота полегшується.

Клавіша Enter може мати такі форми: пряму, L-подібну та Г-подібну (треба зробити дзеркальне відображення букв L та Г щодо вертикалі, щоб отримати справжню форму клавіші. Enter). L-подібна форма є найзручнішою, тому що великою Enter можна потрапляти, не дивлячись на неї.

Розкладка кирилиці.Є дві розкладки кирилиці, одна з яких зручніша.

Розкладка (тобто розташування літер на клавішах) кирилиці буває двох типів: Windows (розпізнається за розташуванням літери Е в лівому верхньому кутку) і машинописна (розпізнається за розташуванням літери Е в правому нижньому кутку).

Машинописна розкладка, за назвою, повторює клавіші друкарської машинки. Windows-розкладка з'явилася в Windows. Порівняно з машинописною до неї було внесено невеликі, але дуже ефективні вдосконалення. Наприклад, дуже рідко використовувана буква Е була перенесена в далекий кут, а на її місце помістили клавішу з точкою і комою, що часто використовуються. У машинописній розкладці вони винесені верхній ряд і вводяться через верхній регістр. Дивно те, що досконалішу розкладку розробила закордонна компанія.

Деякі виробники наносять лише російську розкладку, деякі наносять обидві, надаючи користувачеві вибір.

У кирилиці зустрічається два кольори (літери знаходяться в правому нижньому куті клавіш): червоний (у більшості виробників) і темний. У другому випадку кирилиця плутається з латиницею навіть тоді, коли остання нанесена світлим подвійним контуром.

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

Наявність підставки для рук. Підставки знижує стомлення та покращує зовнішній вигляд.

Групи додаткових кнопок. Це можуть бути інтернетівські, мультимедійні та інші групи клавіш. Прискорюють роботу, дозволяючи менше перемикатися на мишу та назад. Розташування клавіш сну має бути таким, щоб випадково їх не зачепити.

Інтерфейс.Пов'язаний із розвитком системних плат. Говорячи про інтерфейс, мають на увазі провідні клавіатури. Використовуються такі інтерфейси:

PS/2.. Є тонким круглим роз'ємом - 6-контактний miniDIN. Такий же використовується для PS/2 миші, і щоб їх не переплутати, в специфікації РС "99 для цих штекерів передбачена різна колірна розмальовка: фіолетовий - для клавіатури і зелений - для миші.

USB. Може використовуватися з усіма більш-менш новими системними платами, тому що останніми є USB портита підтримка в BIOS. Роз'єм - плоский, прямокутний

Форми.USB-інтерфейс є більш сучасним і надає більше можливостей, має більшу пропускну здатність, ніж порти старих типів.

Принцип дії клавіатури

Принцип дії клавіатури пояснюється рис. 1. Незалежно від того, як механічно реалізовано процес натискання клавіш, сигнал при натисканні клавіші реєструється контролером клавіатури (наприклад, 8049) і передається у вигляді так званого скен-кодуна материнську платню. Скен-код - це однобайтове число, молодші 7 біт якого є ідентифікаційний номер, присвоєний кожній клавіші. p align="justify"> На материнській платі PC для підключення клавіатури також використовується спеціальний контролер. Для PC типу AT зазвичай застосовується мікросхема універсального периферійного інтерфейсу (Universal Peripheral Interface, UPI) 8049.

Коли скен-код надходить у мікросхему (8049), ініціалізується апаратне переривання (IRQ 1), процесор припиняє свою роботу і виконує процедуру, що аналізує скен-код. Це переривання обслуговується спеціальною програмою, що входить до складу ROM BIOS. При надходженні скен-коду від клавіш , або , зміна статусу записується у RAM. У всіх інших випадках скен-код трансформується на код символу (так звані коди ASCII або розширені коди). При цьому обробна процедура спочатку визначає установку клавіш і перемикачів, щоб правильно отримати код, що вводиться ("а" або "А"). Потім введений код поміщається в буфер клавіатури, що представляє собою область пам'яті, здатну запам'ятати до 15 символів, що вводяться, поки прикладна програма не може їх обробити. Буфер організований за принципом FIFO(Перший увійшов – перший вийшов).

Для роботи з клавіатурою використовуються порти та переривання. У відповідь на переривання службова процедура системи BIOS в ПЗУ зчитує скен-код клавіші з порту клавіатури (порт номер 96), а потім пересилає в порт клавіатури команду очистити буфер процесора клавіатури. Якщо системний блокне реагує на переривання клавіатури, то коди сканування накопичуються в буфері процесора клавіатури, хоча при нормальній роботіцього має відбуватися. Спеціальний код сканування255, шістнадцяткове значення FF, використовується блокомклавіатури, для повідомлення, що його буфер заповнений.

Примітка

Кожна клавіша генерує два типи скен-кодів: код натискання,коли клавіша натискається, та код звільнення,коли кнопка відпускається. Для PC класу AT використовується один і той же ланцюжок бітів для кодів натискання та кодів звільнення, але коди звільнення складаються з двох байтів, перший з яких завжди дорівнює 0F0H. Для PC XT-генерації код звільнення на 128 більший за код натискання (сьомий біт 7 дорівнює 1). Наприклад, 7-бітовий скен-код клавіші<В>дорівнює 48 або 110000 у двійковій системі числення. Коли натискають клавішу, на контролер клавіатури надходить код 10110000, а коли відпускають - код 00110000.

Контролер 8049 відповідає не тільки за генерування скен-кодів, але і необхідний для виконання функцій самоконтролю та перевірки натиснутих клавіш у процесі завантаження системи. Процес самоконтролю відображається одноразовим блиманням трьох індикаторів LED клавіатури під час виконання програми POST. Таким чином, несправність клавіатури виявляється на стадії завантаження PC.

Контролер на материнській платі може приймати, а й передавати дані, щоб повідомити клавіатурі різні параметри, наприклад, частоту повтору натиснутої клавіші та інших.

У табл. 1-2 представлені приклади скен-кодів, які відповідають найбільш поширеній в даний час клавіатурі зі 102 клавішами.

Шістнадцяткові скен-коди функціональних клавіш

Таблиця 1

Шістнадцяткові скен-коди клавіш введення даних

Таблиця 2


Таким чином, процес обробки клавіатурного введення (рис.2) забезпечують два мікроконтролери: один знаходиться на материнській платі комп'ютера, другий вбудований у саму клавіатуру.

Як видно на схемі, всі горизонтальні лінії матриці клавіш підключені через резистори до джерела живлення. Вбудований чіп клавіатури має два порти – вихідний та вхідний. Перший підключений до вертикальних (Y0-Y5) ліній матриці, а другий - до горизонтальних (X0-X4).

Клавіатурний контролер працює за таким алгоритмом. Встановлюючи по черзі на кожній з вертикальних ліній рівень напруги, що відповідає логічному нулю, клавіатурний мікрокомп'ютер безперервно оцінює стан горизонтальних ліній незалежно від активності на центральному процесорі.

Якщо жодна клавіша не натиснута, рівень напруги всіх горизонтальних лініях відповідає логічної одиниці. Як тільки здійснюється натискання, відповідні клавіші вертикальна та горизонтальна лінії замкнуться. Коли процесор встановить на вертикальній лінії значення логічного нуля, рівень напруги на горизонтальній лінії також буде відповідати логічному нулю.

Якщо на одній із горизонтальних ліній з'явиться рівень логічного нуля, клавіатурний процесор зафіксує натискання на клавішу. Він надішле до комп'ютера (через внутрішній 16-байтовий буфер) запит на переривання і номер клавіші в матриці (він називається скан-кодом – це випадкове значення, вибране компанією IBM ще тоді, коли вона створювала першу клавіатуру для ПК). Обмін даними з комп'ютером повториться, коли натиснута клавіша буде відпущена.

Сканкод однозначно пов'язаний з клавіатурною розпаюванням і не залежить безпосередньо від позначень, нанесених на поверхню клавіші. Але програмі потрібен не порядковий номер натиснутої кнопки, а відповідний знак на цій кнопці ASCII-код. Важливо розуміти, що цей код не повністю залежить від скан-коду, адже одній і тій же клавіші може бути надано кілька значень. Це залежить від стану інших клавіш (наприклад, кнопка 0 використовується і для введення символу), коли вона натиснута разом з кнопкою) і системних налаштувань. Саме це дозволяє варіювати розкладку клавіатури (тобто порядок розташування клавіш на ній).

Усі перетворення скан-коду в ASCII-код виконуються програмними засобами. Як правило, ці функції беруть на себе відповідні модулі BIOS. Для кодування символів кирилиці ці модулі розширюються клавіатурними драйверами (зараз вони включені до складу операційних систем).

Схема (рис.3) пояснює роботу контролера клавіатури.

Г-генератор тактових імпульсів; СЧ-лічильник; С – селектор.

Рис.3. Найпростіша структура клавіатури

Дешифратор послідовно опитує стан ключів, які розташовані в стовпцях X матриці клавіатури. Якщо яка-небудь клавіша натиснута, сигнал через замкнутий контакт надходить на відповідну горизонтальну шину Y і через селектор (регістр) надходить на вхід ПЛМ (ПЗУ). Сигнали з дешифратора та селектора утворюють адресний вхід ПЛМ (ПЗП), у комірках якої записані коди символів (їх молодші розряди). Код символу записується у вихідний регістр. Старші розряди коду визначаються вмістом спеціального регістру, що змінює своє значення лише за натискання клавіші зміни регістрів (Shift, Alt та інших.).

Миша

Мишкою називається двомірний аналоговий маніпулятор, що підключається до персонального комп'ютера і має одну, дві або три кнопки на верхній кришці і, можливо, коліщатком.

Миша працює разом з екраном, керуючи переміщенням курсором (вказівником). Найпопулярніші -двокнопкові миші. Наприклад, одна кнопка може використовуватися для запуску функції, а друга для її скасування. У графічних системах одна може включати світловий олівець, а друга – вимикати його. Є миші з додатковими пристроямидля скролінгу (скролінг - це прокручування вгору, вниз, вліво або вправо великого зображення, наприклад тексту (або WEB-сторінки), що не вміщується повністю на екрані). Зустрічаються миші і з двома коліщатками, кожне з них «завідує» скролінгом однією з осей. Деякі миші мають додаткову кнопку збоку корпусу під великим пальцем. Цю кнопку можна перепрограмувати для виконання різних дій. Перші миші мали механічну конструкцію. У ній використовувався маленький шар, який виступав через нижню поверхню пристрою і обертався в міру його переміщення по поверхні. Механічні переміщення (лінійні або кутові) перетворюються на двійкові коди. Так, наприклад, механічна миша(рис.4) містить кульку, яка обертається при переміщенні пристрою по плоскій поверхні.

У цій схемі:

1. Куля управління

2. Вікно для розміщення кульки

3. Контактуючий ролик, що забезпечує переміщення курсору вздовж осей х та у на екрані монітора.

4. Джерело спрямованого світла.

5. Кроковий диск

6. Фотоелемент

7. Електричні імпульси на виході фотоелемента.

8. Кнопки керування

9. Блок управління маніпуляторів та блок зв'язків маніпулятора з комп'ютером.

Принцип роботи.

При переміщенні миші по горизонтальній поверхні обертається кулька управління і передає обертання одному з контактуючих валиків осі х або у. Разом із валиками обертається кроковий диск. При обертанні він закриває доступ світловому потоку на фотоелемент (фотодіод, фототранзистор або фоторезистор). Такий режим створює на виході фотоелемента групу електричних імпульсів, які надходять блок управління маніпулятора. Таким чином, обертання кульки перетворюється на кути повороту крокового диска по осях. Xі Yта фіксуються двома лічильниками. Оскільки відстань, пройдена мишею, пропорційна цим кутам, коди лічильників визначають положення миші на поверхні. Ці ж коди, передані процесор, управляють положенням маркера на екрані монітора.

Крім лічильників, миша містить кнопки, інформація від яких також включається до складу коду, що передається в процесор.

До мінусів механічних мишей можна віднести той факт, що для їхньої роботи потрібен простір (зазвичай місця на робочих столах завжди не вистачає). Крім того, механічні частини часто ламаються. Миші мають тенденцію до збирання бруду, що призводить до зменшення надійності їхнього функціонування. Тому цей пристрій необхідно періодично чистити, хоча він ніби працює на чистій поверхні столу. Дешевизна та простота механічних мишей зробила їх найпоширенішими пристроями.

Альтернативою механічної миші є оптична миша.

У сучасній оптичної мишівикористовується зовсім інший принцип (рис.5).

У цій схемі:

1. Поверхня столів.

2. Корпус маніпулятора.

3,4. Кнопки керування.

5. Джерело спрямованого монохромного світла.

6. Вікно в корпусі маніпулятора для підсвічування поверхні столу.

Принцип роботи.

В оптичній миші для сканування поверхні використовується мініатюрна відеокамера, що працює зі швидкістю 1500 знімків за секунду. Для підсвічування поверхні застосовується світлодіод. Перетворений на двійковий код кадри поверхні столу записуються в пам'ять маніпулятора.

Процесор послідовно вибирає кадри з пам'яті, порівнюють їх між собою і на основі порівняння обчислює маршрут переміщення курсору на екрані монітора вздовж осі х та у. Процесор також відстежує сигнал, що надходить з кнопок управління. Через блок зв'язку передається всі дані у ПК.

Відсутність рухомих частин та висока точність – переваги цього методу.

Якість миші визначається її роздільною здатністю, яка вимірюється кількістю точок або відліків на дюйм (1 дюйм = 25,4 мм). Якщо миша має роздільну здатність 1000 відліків/дюйм і пересувається однією дюйм, то електронна схема формує 1000 імпульсів (звичайне дозвіл оптичної миші – близько 400 отсчетов/дюйм). Драйвер миші, отримавши цю інформацію, усереднює її залежно від графічної роздільної здатності монітора і позиціонує курсор з його екрані.

Клавіатура- Клавішний пристрій керування персональним комп'ютером. Служить для введення алфавітно-цифрових (знакових) даних та команд управління. Комбінація монітора та клавіатури забезпечує найпростіший інтерфейс користувача. За допомогою клавіатури керують комп'ютерною системою, а за допомогою монітора одержують від неї відгук.

Існує три основних типимеханізму клавіш: мембранний, напівмеханічнийі механічний. Мембранні клавіатури зазвичай дешевші за механічні в кілька разів.

Мембранні клавіатури

Назва походить від того, що при натисканні клавіші замикаються дві мембрани. Повернення кнопки здійснюється гумовим куполом (з «шахтою» в центрі). Для поділу мембран служить проміжна плівка з отворами.

Так як мембрани знаходяться на внутрішніх сторонах плівок, то конструкція добре захищена, наприклад, від розлитої кави.

У більш захищеній реалізації все виглядає як єдиний гумовий килимок з куполами, що виступають, розташованими під клавішами.

Плюсами мембранного типу клавіш є захищеність, низький шумі ціна.

Мінус даного типу - недовговічність.

Напівмеханічні клавіатури

У цих клавіатурах використовуються більш довговічні металеві контакти, що не протираються. Все це розміщується на друкованій платі. Клавіша повертається гумовим куполом.

Механічні клавіатури

У механічних клавіатурах клавіша повертається пружиною.

Механічні клавіатури не вимагають повного натискання "до упору" щоб зареєструвати сигнал, тому сила для зміщення клавіші з місця є єдиною силою, яку вам потрібно докласти для реєстрування сигналу. Бити клавішу про каркас клавіатури вже не обов'язково.

Мінуси такого механізму: відсутність герметичності, вартість.

Плюсом є довговічністьі надійністьособливо коли контакти позолочені.

Довговічність (число натискань, при якому забезпечується надійний контакт):

для мембранних клавіатур: 10-30 млн.;

для механічних (напівмеханічних): 50 млн. і навіть 100 млн. для позолочених контактів.

Для звичайного користувача 20 млн. при звичайній роботі вистачить на 10 років і більше. За цей час зміниться щонайменше 2 покоління клавіатур.

Принцип дії.

Основні функції клавіатури не потребують підтримки драйверів.

Необхідне програмне забезпечення для початку роботи з комп'ютером вже є в мікросхемі ПЗП (Постійне Запам'ятовуючий Пристрій) у складі базової системи вводу-виводу (BIOS), і тому комп'ютер реагує на натискання клавіш відразу після включення.

Контролер процесора сканує перемикачі клавіш і при натисканні на будь-яку клавішу передається унікальний скан-код розміром один байт. Коли скан-код потрапляє в процесор, ініціалізується апаратне переривання. Скан-код аналізується процесором і перетворюється на код символу. Далі отриманий код символу міститься в невелику область пам'яті, відому буфер клавіатури. Введений символ зберігається в буфері клавіатури доти, доки його не забере звідти та програма, для якої він і призначався, наприклад, текстовий редактор або текстовий процесор. Якщо символи надходять до буфера частіше, ніж забираються звідти, настає ефект переповнення буфера. В цьому випадку введення нових символів припиняється на деякий час. На практиці в цей момент при натисканні клавіші ми чуємо попереджувальний звуковий сигнал і не спостерігаємо введення даних.

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

Склад клавіатури.

Алфавітно-цифрові клавіші

Призначені для введення знакової інформації та команд, що набираються за літерами. Кожна клавіша може працювати в кількох режимах (регістрах) і, відповідно, використовуватиметься для введення кількох символів.

ФУНКЦІОНАЛЬНІ КЛАВИШІ (F1- F12)

Функції, закріплені за цими клавішами, залежать від властивостей конкретної програми, що працює в даний момент, а в деяких випадках і від властивостей операційної системи. F1 викликає довідкову систему, де можна знайти довідку про дію інших клавіш.

СЛУЖБОВІ КЛАВИШІ

SHIFT; ENTER; ALT; CTRL; TAB; ESC; BACKSPACE;

PRINT SCREEN– друк поточного стану екрана на принтері (для MS-DOS) або збереження його в спеціальній області оперативної пам'яті, яка називається буфером обміну (для Windows).

SCROLL LOCK– переключення режиму роботи в деяких (зазвичай застарілих) програмах.

PAUSE/BREAK– призупинення/переривання поточного процесу.

УПРАВЛІННЯ КУРСОРОМ

Курсор- Екранний елемент, що вказує місце введення знакової інформації, використовується при роботі з програмами, що виконують введення даних та команд з клавіатури. Клавіші керування курсором дозволяють керувати позицією введення.

UP / DOWN / LEFT / RIGHT

HOMEі ENDпереводять курсор на початок чи кінець поточного рядка, відповідно. Їхня дія також модифікується реєстровими клавішами.

INSERTперемикає режим введення даних (перемикання між режимами вставки та заміни). Якщо текстовий курсор знаходиться всередині існуючого тексту, то в режимі вставки відбувається введення нових знаків без заміни існуючих символів (текст розсувається). У режимі заміни нові знаки замінюють текст, що був раніше у позиції введення.

DELETEпризначена для видалення знаків праворуч від поточного положення курсору. У цьому становище позиції введення залишається незмінним.

ДОДАТКОВА ПАНЕЛЬ

дублює дію цифрових та деяких знакових клавіш основної панелі.

Налаштування клавіатури.

Клавіатури персональних комп'ютерів мають властивість повтору символів, що використовується для автоматизації процесу введення. Воно полягає в тому, що при тривалому утриманні клавіші починається автоматичне введення пов'язаного з нею коду.

Клавіатура – ​​клавішний пристрій керування персональним комп'ютером. Служить для введення алфавітно-цифрових (знакових)даних, і навіть команд управління. Комбінація монітора та клавіатури забезпечує найпростіший інтерфейс користувача. Зза допомогою клавіатури управляють комп'ютерною системою, а за допомогою монітора одержують від неї відгук.

Принцип дії. Клавіатура відноситься до стандартним засобамперсональний комп'ютер. Її основні функції не потребують підтримки спеціальними системними програмами (драйверами). Необхідне програмне забезпечення для початку роботи з комп'ютером вже є в мікросхемі ПЗУ у складі базової системи вводу-виводу (BIOS),тому комп'ютер реагує на натискання клавіш відразу після включення. Принцип дії клавіатури ось у чому.

10) При натисканні клавіші (або комбінації клавіш) спеціальна мікросхема, вбудована в клавіатуру, видає так званий скан-код.

11) Скан-код надходить у мікросхему, що виконує функції портуклавіатури. (Порти - спеціальні апаратно-логічні пристрої, відповідальні за зв'язок процесора коїться з іншими пристроями.) Дана мікросхема перебуває в основній платі комп'ютера всередині системного блока.

12) Порт клавіатури видає процесору переривання ( Переривання- тимчасове зупинення виконання однієї програми з метою оперативного виконання іншої, на даний момент важливішої (пріоритетної) програми з фіксованим номером. Для клавіатури номер переривання – 9 (Interrupt 9, Int9).

13) Отримавши переривання, процесор відкладає поточну роботу і за номером переривання звертається до спеціальної області оперативної пам'яті, у якій перебуває так званий вектор переривання.Вектор переривань – це список адресних даних із фіксованою довжиною запису. Кожен запис містить адресу програми, яка має обслуговувати переривання з номером, що збігається з номером запису.

14) Визначивши адресу початку програми, що обробляє переривання, процесор переходить до її виконання. Найпростіша програмаобробки клавіатурного переривання "зашита" в мікросхему ПЗУ, але програмісти можуть "підставити" замість неї свою програму, якщо змінять дані у векторі переривань.

15) Програма-обробник переривання направляє процесор до порту клавіатури, де він знаходить скан-код, завантажує їх у свої регістри, потім під керівництвом обробника визначає, який код символу відповідає даному скан-коду.

17) Процесор припиняє обробку переривання та повертається до відкладеного завдання.

Введений символ зберігається в буфері клавіатури доти, доки його не забере звідти та програма, для якої він і призначався, наприклад, текстовий редактор або текстовий процесор. Якщо символи надходять до буфера частіше, ніж забираються звідти, настає ефект переповнення буфера. В цьому випадку введення нових символів припиняється на деякий час. На практиці в цей момент при натисканні клавіші ми чуємо попереджувальний звуковий сигнал і не спостерігаємо введення даних.

Поряд із мишею або тачпадом, клавіатура основний пристрій введення інформації від користувача.

Сучасні клавіатури, також звані PC/AT клавіатурами, мають 101 клавішу, хоча деякі моделі, зокрема призначені для використання в ноутбуках, частина клавіш можуть бути відсутніми.

Розташування клавіш на клавіатурі називається клавіатурною розкладкою. Для кожної мови розкладка клавіатури відрізняється, але основні блоки клавіш завжди зберігаються незмінними.

Отже, будь-яка клавіатура містить у собі функціональні клавіші, алфавітно-цифрові клавіші, клавіші цифрової панелі, клавіші керування курсором та різні службові та керуючі клавіші. Розглянемо їх докладніше і заразом дізнаємося про місце їх розміщення на клавіатурі.

Функціональні клавіші – це клавіші від F1 до F12. Розташовані вони горизонтальним рядом у верхній частині клавіатури. Вони використовуються для швидкого виклику певних функцій поточної програми. Залежно від програми їх призначення може повністю змінюватися.

Алфавітно-цифрові клавіші розміщені нижче функціональних і займають 4 горизонтальні ряди в лівій та центральній частинах клавіатури. Ці клавіші використовуються для введення тексту, текстових символів та чисел. Саме цей блок змінюється залежно від мови, якою друкують. Зазвичай цей блок містить клавіші англійської та національної мов (для нашої країни – англійську та російську розкладки, іноді ще й українську).

Клавіші цифрової панелі дублюють цифрові клавіші та деякі керуючі. Це зроблено для зручнішої роботи з обчисленнями. Блок цих клавіш розміщений у правій частині клавіатури. В ряді ноутбуків цей блок відсутній для економії місця.

Клавіші управління курсором призначені для переміщення курсору на задану позицію. Це клавіші Home, End, клавіші зі стрілками та інші. Розташовуються вони між алфавітно-цифровим блоком та цифровою панеллю.

Службові та керуючі клавіші – це клавіші, що керують режимами введення тексту та різними функціями операційної системи. Знаходяться вони в нижніх кутах цифрового блоку (клавіші Alt, Shift, Windows), у лівому стовпці цифрового блоку (Caps Lock, Tab), біля функціональних клавіш та клавіш керування курсором.

Пристрій та принцип роботи клавіатури

Якщо уявити клавіатуру як решітки, то клавіші розташовуватимуться дома перетину вертикального і горизонтального прутів.

Працює вона в такий спосіб. На горизонтальні лінії подається струм. За відсутності натискання горизонтальні та вертикальні лінії не замикаються і на горизонтальних лініях буде сигнал логічної одиниці (на лініях є напруга). На вертикальних лініях по черзі подаватиметься логічний нуль.

Горизонтальні лінії по черзі опитуються. Якщо натиснути клавішу, вона замкне вертикальну та горизонтальну лінію і на горизонтальній лінії встановиться сигнал логічного нуля, отриманий від вертикальної лінії.

Знаючи яку вертикальну лінію був подано нуль і яка горизонтальна лінія замість одиниці подала нульовий сигнал, можна точно визначити натиснуту клавішу.

Цим займається контролер клавіатури. Він надає отриманому сигналу так званий скан-код. Після цього він дає центральному процесору запит на переривання та передає йому скан-код натиснутої клавіші.

У клавіатури також є свій буфер для зберігання скан коду натиснутих клавіш. Він призначений для тих випадків, коли натиснуто кілька клавіш одночасно. З буфером процесор обробляє одночасно ці натискання чи поєднання натиснутих клавіш.

У коді кнопки є маленький аспект. Скан-код, який передається на процесор, не є тим самим літерним позначенням, що нанесено на клавішу. Це просто номер кнопки, яка натиснута. Саме значення клавіші визначається ASCII кодом клавіші. Однією і тією ж клавішею можуть відповідати кілька значень цього коду. Перетворення скан-коду в ASCII код здійснюється програмно засобами BIOSа та драйвера клавіатури.

Клавіатура ноутбука

У ноутбуці, як і в персональному комп'ютері, є клавіатура, але у зв'язку з тим, що ноутбук цільний виріб, клавіатура в ньому становить більшу цінність, ніж у звичайному ПК.

Через невеликі розміри ноутбука, його клавіатура має свої характерні особливості.
Щоб не виступати вище клавіатурного блоку і не дряпати екран, клавіші ноутбука набагато тонші за звичайні і мають спеціальний slim-пристрій, для забезпечення короткого ходу клавіш.

Для зменшення площі самої клавіатури виробники зменшують розмір клавіш. Також у деяких моделях може бути відсутній цифровий блок клавіш праворуч клавіатури. Деякі клавіші розташовують в одній компактній групі, особливо це стосується клавіш керування курсором та службових клавіш.

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

Плюсом є м'який хід клавіш, їхня практично безшумна робота, приємні тактильні відчуття.
Мінусом буде відсутність цифрового блоку у деяких моделях, нестандартна розкладка, малий розмір деяких клавіш.

Також мінусом порівняно з комп'ютерною клавіатурою є проблематичність заміни та . Комп'ютерна клавіатура коштує недорого та легко змінюється. Її розбирання, чищення і ремонт здійснюється набагато простіше і коштує набагато дешевше аналогічних робіт з клавіатурою ноутбука.
Отже, розглянемо головні проблеми та поломки клавіатури ноутбука та шляхи їх усунення.

Несправності та ремонт клавіатури ноутбука

Як і у випадку з будь-яким пристроєм, існує два основних типи несправностей – поломки з вини користувача ноутбука та апаратні поломки.

Поломки з вини користувача найчастіші для цього пристрою.

Найпоширенішою причиною є пролита на клавіатуру рідина. Щоб цього не сталося, не ставте рідини біля ноутбука і не пийте нічого сидячи за ним. Якщо проблема вже виникла, акуратно ватою та серветками зберіть рідину з клавіатури та несіть її до сервісного центру. Також рекомендується вийняти акумулятор із ноутбука. Слід пам'ятати, що чим швидше Ви звернетеся до сервісного центру – тим більше шансів, що рідина не встигне потрапити всередину ноутбука. При самостійному або некваліфікованому розбиранні, рідина може потрапити всередину корпусу і призвести до набагато серйознішої та найдорожчої поломки.

Також клавіатура може страждати від сильних ударів клавіш. Як наслідок, деякі кнопки з часом ламаються або вилітають. Якщо у Вас є відповідні клавіші, то заміну можна здійснити самому, якщо їх немає або зламався сам механізм натискання, то краще віддати її в сервісний центр. Профілактикою цієї несправності є дбайливе поводження з кнопками.

Іноді клавіші погано натискаються, залипають або перестають натискатися. Це відбувається через те, що при вживанні їжі за клавіатурою вона з часом засмічується. Клавіші перестають натискатись або погано натискаються через сміття, що знаходиться під ними. Іноді клавіатура засмічується від пилу. У випадку зі звичайною клавіатурою вона легко чиститься, але в клавіатурі ноутбука використовуються свої кріплення клавіатури. При розбиранні можна пошкодити шлейф, що йде до неї, або зламати клавіші. Тому не завадило б регулярно віддавати клавіатуру на чищення в сервісний центр для профілактики цієї проблеми. Можна поєднувати цю процедуру чищенням ноутбука від пилу в сервісному центрі.

До апаратних поломок відносяться пошкодження контактів шлейфу, пошкодження самого шлейфу, вихід з ладу контролера клавіатури, клавіатурної плати та інші. Усі апаратні несправності рекомендується проводити у сервісному центрі. Це тонкий ремонт, який неможливо провести, не маючи досвіду та потрібного обладнання.

Слід також враховувати, що в деяких випадках ремонт апаратної частини може обійтися дорожче, ніж заміна клавіатури на нову. Після діагностики не зайвим буде порівняти ціну за ремонт та ціну на нову клавіатуру. Заміну краще доручити фахівцям, тому що певна модель ноутбука має свій тип кріплення клавіатури та свою модель, підібрати та встановити яку можуть тільки в .

Лекція 6

Клавіатура: периферійний пристрій введення інформації

Види клавіатур:

Прості клавіатури зі стандартним набором клавіш (літерні, цифрові, функціональні і т.д.)

Умультимедійні клавіатури крім стандартних клавіш додано мультимедійні. Такі клавіатури спрощують роботу з мультимедіа

Ігрові клавіатури розраховані для застосування у іграх.

Також при виборі клавіатури можна звернути увагу до її технічні параметри. Серед таких параметрів є механізм клавіш клавіатури.

Є три основні типи: мембранний, механічний та напівмеханічний.

У мембранна клавіатура - електронна клавіатура без окремих механічних частин, що рухаються, виконана у вигляді плоскої, зазвичай гнучкої, поверхні з нанесеним на неї малюнком клавіш. Клавіатури цього типу відрізняються дуже низькою вартістю, винятковою компактністю (товщина становить частки міліметра), здатністю до згинання, високою надійністю та практично ідеальною захищеністю від бруду та вологи. Головним недоліком є ​​майже повна відсутність тактильного зворотного зв'язку, що ускладнює безпомилковий і сліпий набір. Для компенсації цього недоліку пристрою з мембранною клавіатурою мають звукове підтвердження натискання клавіші. Крім цього, навантаження на мембрани не "дозується" системою "штовхач-ковпачок" (див. нижче), а визначається виключно пальцями оператора, що відчутно знижує ресурс мембран.

У 1980-х роках мембранні клавіатури використовувалися у деяких домашніх комп'ютерах нижнього цінового діапазону. В даний час вони продовжують використовуватися в побутовій техніці (наприклад, мікрохвильових печах), спеціалізованому та промисловому устаткуванні. Сучасні комп'ютерні клавіатури використовують комбіновану технологію мембранної, гумової та механічної клавіатур, де натискання на пластикову клавішу продавлює гумовий ковпачок, забезпечуючи тактильний зворотний зв'язок і натискає на мембрану. Принцип роботи.

Мембранна клавіатура зазвичай складається із трьох шарів. На двох з них нанесені доріжки, що проводять. Третій, ізолюючий шар є розділяючим. У місцях, де розташовуються клавіші, він має вирізи, що дозволяють доріжкам верхнього та нижнього шарів стикатися при натисканні. Товщина шарів клавіатури зазвичай не більша за товщину паперу або картону.

Умеханічні клавіатури Для повернення клавіш використовуються металеві пружини. Схеми клавіатур такого типу не дуже захищені від пилу та вологи. Довговічність роботи є основною перевагою механічних клавіатур.

Напівмеханічні клавіатури це щось середнє між мембранними та механічними, де замість нижньої мембрани використовують друковану плату. Така конструкція вважається довговічнішою. Клавіша повертається у вихідне положення також гумовим куполом. Іноді маленькою пружинкою. У цьому випадку забезпечується плавніший хід протягом усього натискання. Але пружинна технологія має один специфічний ефект: спрацьовування клавіші відбувається навіть при неповному натисканні, в той час як мембранна концепція дозволяє вам передумати в процесі натискання. Це важливо при швидкісному друку. Ціна на такі пристрої вища, ніж на мембранні, але крім того, що вони мають певний захист від забруднення, ці клавіатури прослужать вам довше.

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

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

У бездротових клавіатурахвикористовуються три основні види з'єднання, а саме з'єднання Bluetooth, інфрачервоне з'єднання та радіочастотне з'єднання.

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

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

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

Порт PS/2 вперше з'явився в на комп'ютерах (До цього для підключення клавіатури використовувався . Швидкість передачі даних - від 80 до 300 Кб/с і залежить від продуктивності підключеного пристрою та програмного .

З шести контактів у роз'ємі використовується чотири: частота, дані, живлення, загальний. При цьому для клавіатури контакти шини даних і частоти, що використовуються, можуть відрізнятися від контактів для підключення миші. Це дозволяє використовувати обидва пристрої відразу, але через розгалужувач.

Деякі можуть правильно працювати при «неправильному» підключенні миші та клавіатури (тобто при підключенні клавіатури в роз'єм, призначений для миші, і, навпаки, миші в роз'єм для клавіатури) - це обумовлено тим, що кожен роз'єм універсальний. Більшість же материнських платпри неправильному підключенні (або при відключенні під час роботи) вимагають від користувача «правильного» підключення пристроїв і іноді .

Залежно від типу корпусу клавіатури поділяються на:

Традиційні (стандартні)- Звичайні AT-клавіатури;

Ергономічні.Конструкції клавіатур цього типу враховують природне положення рук під час набору (у таких конструкціях клавіатура переломлювалася в центрі, клавіші знаходилися під прямим кутом до природного положення рук при наборі). Ергономічна клавіатура дає можливість підвищити продуктивність та уникнути небезпеки деяких хронічних захворювань.

Гнучкі.- Клавіатура виконана з нетоксичної високоеластичної силіконової гуми і схожа на своєрідний килимок із виступами різної форми. Букви та символи не стираються з часом, оскільки нанесені на зворотний бік зовнішньої плівки. Зовнішня плівка може бути як матовою так і глянсовою. Головний плюс таких клавіатур у зручності транспортування – важать вони лише близько 350 грамів та легко згортаються у компактний рулон. Вони добре захищені від забруднень (водонепроникна), легко чистяться та порівняно легко переносять удари. Безшумні та в деяких реалізаціях мають підсвічування клавіш.

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

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

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

Що ж знаходиться усередині клавіатури? Виявляється, там є комп'ютер! Тільки цей комп'ютер складається з однієї мікросхеми та виконує спеціалізовані функції. Він відстежує натискання клавіші і надсилає номер натиснутої клавіші на центральний комп'ютер.

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

Усередині корпусу клавіатури крім датчиків розташовані електронні плати дешифрації сигналу.

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

Принцип роботи клавіатури полягає у скануванні перемикачів клавіш. Замикання та розмикання будь-якого з перемикачів відповідає унікальний цифровий код (scan code) розмірів 1 байт.

Підключення клавіатури до системної плати здійснюється за допомогою роз'єму DIN або mini-DIN.

На системній платі прийом та обробку сигналів від клавіатури виконує спеціальна мікросхема.контролер клавіатури.

Якщо розглянути дуже спрощену схему клавіатури, можна помітити, що всі клавіші знаходяться у вузлах матриці:

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

Встановлюючи по черзі кожної з вертикальних ліній рівень напруги, відповідний логічному 0, клавіатурний комп'ютер опитує стан горизонтальних ліній. Якщо жодна клавіша не натиснута, рівень напруги на всіх горизонтальних лініях відповідає логічній 1 (бо всі ці лінії підключені до джерела живлення +5 В через резистори).

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

Як тільки на одній із горизонтальних ліній з'явиться рівень логічного 0, клавіатурний процесор фіксує натискання клавіші. Він надсилає до центрального комп'ютера запит на переривання і номер клавіші в матриці. Аналогічні дії виконуються і тоді, коли оператор відпускає натиснуту клавішу.

Номер клавіші, що посилається клавіатурним процесором, однозначно пов'язаний з розпаюванням клавіатурної матриці і не залежить безпосередньо від позначень, нанесених на поверхню клавіш. Цей номер називається скан-кодом (Scan Code).

Слово scan ("сканування"), наголошує на тому, що клавіатурний комп'ютер сканує клавіатуру для пошуку натиснутої клавіші.

Але програмі потрібен не порядковий номер натиснутої кнопки, а відповідний позначенню на цій кнопці ASCII-код. Цей код залежить однозначно від скан-коду, т.к. однієї й тієї клавіші можуть відповідати кілька значень ASCII-кода. Це залежить від стану інших кнопок. Наприклад, клавіша з позначенням "1" використовується ще й для введення символу "!" (якщо вона натиснута разом із кнопкою SHIFT).

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

Якщо натиснути і не відпускати клавішу, клавіатура перейде в режим автоповтору. У цьому режимі в центральний комп'ютер автоматично через деякий період часу, що називається періодом автоповтору, надсилається код натиснутої клавіші. Режим автоповтору полегшує введення великої кількості однакових символів з клавіатури.

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

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

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

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

Стек драйверів для Plug and Play PS/2-клавіатури

Стек драйверів містить (згори донизу):

    Kbdclass – верхньорівневий фільтр-драйвер класу клавіатури;

    опціональний верхньорівневий фільтр-драйвер класу клавіатури;

    i8042prt – функціональний драйвер клавіатури;

    кореневий драйвер шини.

В Windows 2000 і старше драйвером класу клавіатури є драйверKbdclass , основними завданнями якого є:

    забезпечення загальних та апаратно-незалежних операцій класу пристроїв;

    підтримка Plug and Play,

    одночасне виконання операцій більш ніж одного пристрою;

    реалізація class service callback routine, яка викликається функціональним драйвером передачі даних з вхідного буфера пристрою в буфер даних драйвера класу пристроїв.

У Windows 2000 і старше функціональним драйвером для пристроїв введення, що використовують PS/2-порт (клавіатури та миші), є драйверi8042prt , основні функції якого такі:

    забезпечення апаратно-залежних одночасних операцій PS/2-пристроїв введення (клавіатури та миші поділяють загальні порти введення виведення, але використовують різні переривання, процедури обробки переривань (ISR) та процедури завершення обробки переривань);

    підтримка Plug and Play,підтримка управління живленням та Windows Management Instrumentation (WMI);

    підтримка операцій для legacy-пристроїв;

    виклик class service callback routine для класів клавіатури та миші для передачі даних з вхідного буфера даних i8042prt у буфер даних драйвера класу;

    виклик набору функцій зворотного дзвінка, які можуть реалізувати драйвера-фільтри високого рівня для гнучкого керування пристроєм.

В цілому стек пристроїв (правильніше говорити про стек об'єктів пристроїв) PS/2-клавіатури складається з:

    фізичного об'єкта пристрою клавіатури (PDO), створеного драйвером шини (у цьому випадку, шини PCI) - \Device\00000066;

    функціонального об'єкта пристрою клавіатури (FDO), створеного та приєднаного до PDO драйвером i8042prt – неіменований об'єкт (unnamed);

    опціональних фільтр-об'єктів пристрою клавіатури, що створюються фільтр-драйверами клавіатури, що розробляються сторонніми розробниками;

    верхньорівневий фільтр-об'єкт пристрою класу клавіатури, створений драйвером класу Kbdclass – \Device\KeyboardClass0.

Обробка клавіатурного введення програмами

Підсистема Microsoft Win32 отримує доступ до клавіатури, використовуючи потік необробленого введення (Raw Input Thread, RIT), який є частиною системного процесу csrss.exe. Операційна системапри старті створює RIT та системну чергу апаратного введення (system hardware input queue, SHIQ).

RIT відкриває об'єкт «пристрій» драйвера класу клавіатури для ексклюзивного використання та за допомогою функції ZwReadFile надсилає йому запит вводу-виводу (IRP) типу IRP_MJ_READ. Отримавши запит, драйвер Kbdclass відзначає його як той, хто чекає завершення (pending), ставить у чергу і повертає код повернення STATUS_PENDING. Потоку необробленого введення доводиться чекати завершення IRP, навіщо використовується виклик асинхронної процедури (Asynchronous Procedure Call, APC).

Коли користувач натискає або відпускає одну клавішу, системний контролер клавіатури виробляє апаратне переривання. Його обробник викликає спеціальну процедуру обробки переривання IRQ 1 (Interrupt Service Routine, ISR), зареєстровану в системі драйвером i8042prt. Ця процедура зчитує з внутрішньої черги контролера клавіатури дані, що з'явилися. Обробка апаратного переривання має бути максимально швидкою, тому ISR ставить у чергу виклик відкладеної процедури (DPC) I8042KeyboardIsrDpc і завершує свою роботу. Як тільки це стане можливим (IRQL знизиться до DISPATCH_LEVEL), DPC буде викликана системою. У цей момент буде викликана процедура зворотного виклику KeyboardClassServiceCallback, зареєстрована драйвером Kbdclass драйвера i8042prt. KeyboardClassServiceCallback витягне з своєї черги запит IRP, що очікує завершення, заповнить максимальну кількість структур KEYBOARD_INPUT_DATA, що несуть всю необхідну інформацію про натискання/відпускання клавіш, і завершить IRP. Потік необробленого введення пробуджується, обробляє отриману інформацію і знову надсилає IRP типу IRP_MJ_READ драйверу класу, який знову ставиться до наступного натискання/відпускання клавіші. Таким чином, у стека клавіатури завжди є принаймні один очікуваючий завершення IRP, і він знаходиться в черзі драйвера Kbdclass.

За допомогою утиліти IrpTracker, розробленої згадуваною раніше компанією Open Systems Resources, можна відстежити послідовність викликів, що відбуваються під час обробки клавіатурного введення.

Як же RIT обробляє інформацію, що надійшла? Всі клавіатурні події, що прийшли, поміщаються в системну чергу апаратного введення, після чого вони послідовно перетворюються в повідомлення Windows(Типу WM_KEY*, WM_?BUTTON* або WM_MOUSEMOVE) і ставляться в кінець черги віртуального введення (virtualized input queue, VIQ) активного потоку. У повідомленнях Windows скан-коди клавіш замінюються на коди віртуальних клавіш, які відповідають не розміщенню клавіші на клавіатурі, а дії, яку виконує ця клавіша. Механізм перетворення кодів залежить від активної розкладки клавіатури, одночасного натискання інших клавіш (наприклад, SHIFT) та інших факторів.

Коли користувач входить до системи, Windows Explorer породжує потік, який створює панель завдань і робочий стіл (WinSta0_RIT). Цей потік прив'язується RIT. Якщо користувач запускає MS Word, його потік, створив вікно, негайно підключиться до RIT. Після цього потік, що належить Explorer, відключається від RIT, оскільки одночасно з RIT може бути пов'язаний лише один потік. При натисканні клавіші в SHIQ з'явиться відповідний елемент, що призведе до того, що RIT прокинеться, перетворить подію апаратного введення повідомлення від клавіатури і помістить його в VIQ потоку програми MS Word.

Масиви стану клавіш клавіатури

Одним із завдань при розробці моделі апаратного введення Windows було забезпечення її стійкості до відмови. Відмовостійкість забезпечується незалежною обробкою введення потоками, що запобігає несприятливому впливу одного потоку на інший. Але цього замало надійної ізоляції потоків друг від друга, тому система підтримує додаткову концепцію - локальне стан введення. Кожен потік має власний стан введення, відомості про який зберігаються в структурі THREADINFO. У інформацію про цей стан включаються дані про чергу віртуального введення потоку, а також група змінних. Останні містять інформацію про стан введення. Щодо клавіатури підтримуються такі відомості: яке вікно знаходиться у фокусі клавіатури, яке вікно активно в даний момент, які клавіші натиснуті, стан курсору введення.

Інформація про натискання клавіш зберігається в масиві синхронного стану клавіш. Цей масив включається до змінних локального стану введення кожного потоку. У той самий час масив асинхронного стану клавіш, у якому міститься аналогічна інформація, - лише одне, і він розділяється всіма потоками. Масиви відображають стан всіх клавіш на даний момент, і функція GetAsyncKeyState дозволяє визначити, чи зараз натиснута задана клавіша. GetAsyncKeyState завжди повертає 0 (не натиснута), якщо її викликає інший потік, а не той, який створив вікно, що зараз знаходиться у фокусі введення.

Функція GetKeyState відрізняється від GetAsyncKeyState тим, що повертає стан клавіатури на той момент, коли з черги потоку вилучено останнє повідомлення від клавіатури. Цю функцію можна викликати будь-якої миті; для неї не має значення, яке саме вікно у фокусі.

Клавіатурні пастки

В операційній системі Microsoft Windows пасткою, або хуком (hook) називається механізм перехоплення подій з використанням особливої ​​функції (таких як надсилання повідомлень Windows, введення з миші або клавіатури) до того, як вони дійдуть до програми. Ця функція може реагувати на події і, в деяких випадках, змінювати або скасовувати їх.

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

Якщо до одного хуку прикріплено кілька функцій, що фільтрують, Windows реалізує чергу функцій, причому функція, прикріплена останньою, виявляється на початку черги, а найперша функція - в її кінці. Черга функцій-фільтрів (див. малюнок 8) підтримується самої Windows, що дозволяє спростити написання функцій, що фільтрують, і поліпшити продуктивність операційної системи.

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

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

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

Загальна схема обробки

Узагальним усі отримані вище знання про процедуру клавіатурного введення в єдиному алгоритмі. Отже, алгоритм проходження сигналу від натискання користувачем клавіш на клавіатурі до появи символів на екрані можна так:

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

    Потік необробленого введення у циклі надсилає запити читання драйверу класу клавіатури, які залишаються в стані очікування до появи подій від клавіатури.

    Коли користувач натискає або відпускає клавішу на клавіатурі, мікроконтролер клавіатури фіксує натискання/відпускання клавіші та надсилає на центральний комп'ютер скан-код натиснутої клавіші та запит на переривання.

    Системний контролер клавіатури отримує скан-код, робить перетворення скан-коду, робить його доступним на порту введення-виведення 60h і генерує апаратне переривання центрального процесора.

    Контролер переривань викликає процедуру обробки переривання IRQ 1 - ISR, зареєстровану в системі функціональним драйвером клавіатури i8042prt.

    Процедура ISR зчитує з внутрішньої черги контролера клавіатури дані, що з'являються, переводить скан-коди в коди віртуальних клавіш (незалежні значення, визначені системою) і ставить в чергу виклик відкладеної процедури I8042KeyboardIsrDpc.

    Як тільки це стає можливим, система викликає DPC, яка, у свою чергу, викликає процедуру зворотного виклику KeyboardClassServiceCallback, зареєстровану драйвером класу клавіатури Kbdclass.

    Процедура KeyboardClassServiceCallback витягує з своєї черги запит, що очікує завершення, від потоку необробленого введення і повертає в ньому інформацію про натиснуту клавішу.

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

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

mob_info