На рисунку 2.7 зображена конструкція фотоелектричного клавішного перемикача. Кодування за допомогою клавіатури, побудованої на базі цих перемикачів, здійснюється шляхом переривання світлового потоку при натисканні клавіші. Пристрій складається з матричної панелі (МП), кодуючої маски (KM), зв'язаної з клавішами, джерела світла та фотоприймачів. Джерело світла та фотоприймач встановлені на протилежних стінках корпусу. МП та KM розмішують між ними таким чином, щоб забезпечувалась співосність відповідних отворів в МП та KM. Отвори в МП модулюють промені світла, що падають на фотоприймачі. При натисканні на клавішу між МП вводиться кодуюча маска, яка пропускає світловий потік, необхідний для одержання відповідної кодової комбінації.
Рисунок 7 – Конструкція фотоелектричної клавіатури.
Можна вважати, що при досягненні більш високої якості світлодіодів (мінімальний розкид по яскравості) оптронні клавіатури та модульні оптрони і перемикачі зможуть успішно конкурувати з перемикачами, що використовують ефект Холла.
Сенсорні перемикачі не мають рухомих механічних елементів. Процес вмикання (перемикання) викликається лише дотиком пальців оператора до клавіатури. Робота на сенсорній клавіатурі вимагає певних навиків, оскільки клавіші нерухомі або малорухомі, а "зворотний зв'язок" з оператором замикається через фіксатор інформації, що вводиться.
Перетворення електричного сигналу від тієї чи іншої клавіші в двійковий код (відповідно кодовій таблиці) здійснює шифратор. Шифратори можуть виконуватись на контактній або безконтактній основі, отже останні - на інтегральних елементах - отримали переважний розвиток.
Для узгодження клавіатури з мікропроцесором зазвичай використовуються БІС програмованих мікроконтролерів або мікропроцесорів клавіатури. В перших розробках персональних комп’ютерів використовувались контролери, які мали клавіатурну та дисплейну частини. Прикладом такого контролера є програмований контролер клавіатури й індикації (ПККІ) КР580ВВ79, структурна схема якого наведена на рисунку 2.8.
Буфер даних (БД) служить для узгодження із шиною даних DB7— DB0 локальної магістралі мікропроцесора. Блок керування введенням-виведенням (БКВВ) керує прийманням і видачею керуючої інформації і даних від МП. На входи RD (читання) і WR (запис) подаються керуючі сигнали шини керування локальної магістралі МП. Вхід СD зазвичай з'єднується з молодшим розрядом адресної шини і служить для поділу керуючої інформації і даних. Вхід СS (вибір мікросхеми) з'єднується з дешифратором адреси, що визначає розташування ПККІ в адресному просторі МП.
Буфер клавіатури, що містить схему захисту від дребезгу контактів, приймає по лініях RET0—RET7 код позицій клавіш і запам'ятовує його в стеці клавіатури на 8 байт із механізмом ПРО. Схема аналізу стека (САС) виробляє сигнал переривання на виході INT, якщо черга не порожня. Вхід V/STB використовується для подачі керуючого сигналу при скануванні або стробуванні в режимі введення по стробу. На вхід SН подається сигнал зсуву, який використовується для сканування клавіатури. Лічильник сканування з виходами S0—S3 призначений для сканування стану або клавіш дисплея.
Рисунок 8 – Структура контролера клавіатури типу КР 580ВВ79
Оперативний ЗП зберігає інформацію про натиснуті клавіші, яка відображується на дисплеї. Регістр адреси містить адресу даних, які записуються або зчитуються МП. Регістри відображення зберігають дані, що відображуються на виходах DISPA (0 - 3) і DISB (0 - 3). Схема керування і синхронізації (СКС) здійснює керування роботою мікросхеми. На вхід CLK надходять синхроімпульси, на вхід CLR.- сигнал скидання. На виході BD виробляється сигнал гасіння відображення.
Клавіатура персонального IBM сумісного комп'ютера містить контролер клавіатури (наприклад мікросхему типу Intel 8048), який зменшує навантаження на центральний процесор ПК. Основна діяльність контролера полягає в стеженні за клавішами і видачі повідомлень ROM-BIOS при натисканні і відпусканні клавіш чи їх комбінацій. Якщо будь-яка клавіша залишається натиснутою більш як напівсекунди, контролер надсилає сигнали через задані інтервали часу. Контоллер І8048 має також деякі можливості з діагностування та виявлення помилок, а додатково у буфері контролера може зберігатися інформація про натискання до 20 клавіш, які не зміг прийняти центральний процесор, що у реальному часі буває рідко. Щораз при натисканні чи відпусканні однієї з клавіш схеми клавіатури генерують однобайтове число, яке називається скен-кодом, що однозначно ідентифікує положення клавіші на матриці поля клавіатури. Клавіатура видає різні скен-коди при натисканні і відпусканні клавіші. При натисканні клавіші байт скен-кода містить число в діапазоні від 1 до 83, якщо клавіатура стандартна і містить у конкретному випадку 83 клавіші. При відпусканні клавіші клавіатура генерує скен-код, число якого на 128 більше, ніж скен-код при натисканні клавші, встановлюючи одиницю в старший (сьомий) розряд скен-кода. Наприклад, коли ми натискаємо клавішу Z, у вказаному стандарті клавіатура генерує скен-код 44, а при відпусканні цієї клавіші клавіатура генерує скен-код 172 (44+128). Діаграма на рисунку 2.9 показує клавіші стандартної клавіатури і відповідні їм скен-коди.
При введенні інформації, клавіатура не знає значення клавіші, що натискається, вона просто звітує про ті дії, що відбуваються. Переклад дії натискання клавіші у значущу інформацію, яка використовується програмами — це робота підпрограм ROM-BIOS, що обслуговують клавіатуру. Як ми побачимо, клавіатура зв'язується з ROM-BIOS за допомогою портів і переривань
Програми, що обслуговують клавіатуру, керують даними, що надходять із клавіатури, і змінюють їх будь-яким способом, який ми покажемо. Звичайно цим програмам передаються команди, які називаються макросами клавіатури, що повідомляють їм, на натискання яких клавіш звертати увагу і які при цьому робити зміни. Зміни можуть складатися з придушення натискань клавіш (тобто начебто нічого не відбулося), заміни одних клавіш іншими чи заміни одного натискання клавіші довгою серією натискань. Найбільш розповсюджене використання макросів - це скорочення фраз, що вводяться найбільш часто; наприклад, ми можемо дати команду перетворювати комбінацію клавіш, таку як Alt-S, у вітання, що ми використовуємо у своїй кореспонденції, таке як "Щиро Ваш". Ви можете також використовувати клавіші клавіатури для скорочення програмних команд таким чином, що трьох або чотирьох символьні команди можна буде вводити одним натисканням клавіші. Подібні програми працюють, використовуючи комбінацію можливостей двох спеціальних функцій: одна з них є частиною DOS, а друга - частиною ROM-BIOS.
Рисунок 9 – Схема та скен-коди стандартної клавіатури PC.
Функція DOS дозволяє програмі залишатися резидентною у пам'яті комп'ютера, непомітно керуючи його операціями, у той час як звичайне керування передається іншим програмам, таким, наприклад, як програма підготовки текстів. Можливості ROM-BIOS дозволяють перехопити потік інформації від клавіатури, так що до того, як інформація потрапить у яку-небудь програму, вона може бути переглянута і змінена.
Щоразу, коли натискається або відпускається яка-небудь клавіша на клавіатурі, про цю дію повідомляє ROM-BIOS за допомогою переривання 9, переривання від клавіатури. Переривання 9 викликає підпрограму обробки переривання, що відповідає на це читання з порту 96 (16-рична адреса 60), щоб визначити, яка клавіша була натиснута або відпущена. Потім очікуваний скен-код повертається і підпрограми, що обслуговують клавіатуру, переводять його в 2-байтний код. Молодший байт цього коду містить звичайно код ASCII клавіші, а старший байт — скен-код клавіатури. Спеціальні клавіші, такі як функціональні клавіші і клавіші додаткової цифрової клавіатури, мають у молодшому байті ноль, а в старшому — скен-код .
Потім підпрограми ROM-BIOS розміщують відтрансльований код у чергу, що знаходиться в молодших адресах пам'яті, з 0000 04IE. Ці коди знаходяться тут доти, поки не будуть запитані програмою, що очікує введення з клавіатури.