Ноутбуки   
   Софт   
   Компьютеры   
   Компьютерные фирмы   
  Меню сайта

BIOS

SSD-накопители

Акустика для ПК

Видеокарты

Видеокарты - История

Джойстики, клавиатуры и мыши

Дигитайзеры

Жесткие диски

Жесткие диски - история

Звуковые карты

Именитые люди компьютерной индустрии

История компьютеров

Карманные компьютеры

Компьютер десктоп - готовая сборка

Компьютерные фирмы

Компьютеры в теории и практике

Копировальные аппараты

Корпуса, вентиляторы, блоки питания

Маршрутизаторы, коммутаторы, хабы

Материнские платы

Модемы

Модули памяти

Мониторы

Мониторы и видеокарты - история

Новости

Ноутбуки и субноутбуки

Оборудование беспроводной связи, bluetooth, wi-fi

Оптические накопители CD, DVD, Blueray

Оргтехника

Память - история

Плоттеры

Принтеры

Процессоры

Процессоры - история

Сетевые карты

Сетевые фильтры, ИБП

Сети

Сканеры

Сменные жесткие диски

Советские ПК

ТВ-тюнеры

Типы компьютеров

Устройства архивации данных и стримеры

Факс

Флоппи-дисководы

Флэшки и всяко-разно

Шины и чипсеты - история




Главная страница Прайс-лист Интернет-магазин

Определение смысла нажатых клавиш

Служебная процедура системы BIOS для прерывания 9 или прерывания клавиатуры определяет смысл каждого действия с клавиатурой. Это включает слежение за состоянием смещения кодов и преобразование нажатий клавиши в их значения, будь то буквы алфавита или сигналы функциональных клавиш. Ниже мы будем рассматривать эту функцию подробнее.
Часть задачи обслуживания клавиатуры со стороны системы BIOS заключается в слежении за всеми возможными состояниями смещений. Состояния смещений довольно часто вызывают путаницу, поскольку клавиатура обычной пишущей машинки, с которой большинство из нас начинало свое знакомство с клавишами, имеет всего одну клавишу смещения, Клавиатуры многих компьютеров, в том числе и IBM/PC, имеют три типа смещений.
Во-первых, имеются обычные функции клавиш, без всякого смещения (например, для получения букв в нижнем регистре). Затем имеется обычное смещение, такое же как у пишущих машинок, которое служит для получения букв верхнего регистра и, как правило, всех знаков, нанесенных на верхнюю часть клавиши. Кроме того, имеются еще два вида смещения, изменяющее смещение ("ALT") и управляющее смещение ("CTRL"). Эти два специальных вида смещения используются аналогично обычному смещению в том смысле, что просто "а" не совсем то же самое, что "А" в верхнем регистре, и Ctrl-A и Alt-A также имеют собственные значения. (Некоторые читатели могут считать клавишу "ESC" еще одной клавишей смещения. Это связано с тем, что в некоторых старых терминалах компьютеров, особенно таких, которые использовались подобно клавишам смещения. Однако, при использовании клавиши "ESC" она не удерживалась в нажатом состоянии, подобно клавишам смещения, - сначала нажималась клавиша "ESC", а после нее какая-либо другая клавиша. Оба этих нажатия рассматривались как специальная последовательность. Такое действие нельзя рассматривать как операцию смещения. Обычно, клавиша "ESC" подобным образом в IBM/PC не используется.)
Допустимыми считаются не все сочетания обычных клавиш и клавиш смещения. Если ввести одну из недопустимых комбинаций, то система BIOS ее просто проигнорирует, как будто ничего не произошло. Несколько позже мы перечислим все допустимые комбинации смещений клавиш, чтобы Вы могли воспользоваться ими в своих программах.
На клавиатуре IBM/PC имеется четыре специальных "переключательных" клавиши, которые действуют в качестве тумблера "включения-отключения" для определенных функций. Эти клавиши Insert (вставка), Caps-Lock (закрепление заглавных букв), Num-Lock (закрепление цифровой клавиатуры) и клавиша, которой практически не пользуются, Scroll-Lock (закрепление "скроллинга"). Две из этих клавиш, Caps-Lock и Num-Lock, являются частью механизма смещения, а оставшиеся две управляют определенными специальными режимами работы.
Информация о состоянии этих четырех переключательных клавиш и том, удерживается ли в данный момент в нажатом состоянии одна из клавиш смещения, хранится в специально выделенной для этих целей области в нижних адресах оперативной памяти. Вся эта информация хранится в двух байтах с адресами 1047 и 1048 (или 417 и 418 шестнадцатиричных). Во время работы IBM/PC, в этих двух байтах сохраняются все состояния смещения и состояния переключателей. Естественно, что после выключения компьютера эти байты сбрасываются в нормальное состояние.
Программа на Бейсике, листинг которой 10.1 приведен в конце этой главы, отображает эти два байта и демонстрирует воздействие на них нажатий клавиш смещения и переключателей. Описание смысла отдельных битов приведено ниже.
Поскольку клавиши смещения действуют только в нажатом состоянии, система BIOS следит за их нажатиями и освобождениями и вносит необходимые изменения в интерпретацию обычных клавиш. Система BIOS следит за кодами сканирования при освобождении только для клавиши смещения, так как для всех остальных клавиш эта функция не имеет смысла.
Когда система BIOS получает код сканирования обычной клавиши, она проверяет все варианты смещения и преобразует этот код в соответствующее значение, которое может быть как символьным кодом ASCII, так и кодом специального назначения.
Процедура обслуживания клавиатуры системы BIOS следит не только за состояниями смещения. Состояние клавиатуры хранится в первых тринадцати битах указанных выше двух байт по адресу 1047. Ниже приведена таблица значений этих битов, изменения которых можно проследить с помощью программы 10.1:
_____________________________________________________________
Байт Бит Смысл Значение, когда бит равен 1
_____________________________________________________________
1 1 Insert состояние активное
1 2 Caps-Lock состояние активное
1 3 Num-Lock состояние активное
1 4 Scroll-Lock состояние активное
1 5 Alt клавиша нажата
1 6 Ctrl клавиша нажата
1 7 смещение слева клавиша нажата
1 8 смещение справа клавиша нажата
2 1 Insert клавиша нажата
2 2 Caps-Lock клавиша нажата
2 3 Num-Lock клавиша нажата
2 4 Scroll-Lock клавиша нажата
2 5 Состояние захвата активное состояние
2 6 (не используется) (после Ctrl-Num-Lock)
2 7 (не используется)
2 8 (не используется)
____________________________________________________________
В этой таблице нашел отражение ряд интересных моментов. Во-первых, можно отметить параллельность использования первых четырех битов обоих байтов для клавиш-переключателей. В первом байте отражается текущее состояние клавиши, а во втором байте указывается нажатие соответствуюших клавиш. Во-вторых. обратив внимание на биты, соответствующие нажатию обычных клавиш смещения, расположенные в правой и в левой частях клавиатуры, распознаются по отдельности. Для такого разделения трудно придумать разумное применение, но тем не менее оно имеет место.
Кроме того, система BIOS следит за состоянием вставки, управляемым переключателем. Эта функция обычно игнорируется программами, которые используют клавишу Iusert, например, текстовыми процессорами. Обычно. все программы, использующие эту клавишу, сами следят за режимом вставки. Практического значения это не имеет, но нам показалось любопытным отметить и такой факт.
И, наконец, обратите внимание на бит состояния захвата, который устанавливается, когда процедура обслуживания клавиатуры системы BIOS обнаруживает комбинацию клавиши Ctrl-NumLock. Эта комбинация используется системой BIOS для управления состоянием захвата, которое программам обнаружить трудно, поскольку в этом состоянии программы не выполняются. В состоянии захвата система BIOS выполняет короткий цикл, ожидая нажатия клавиши, которое выводит систему из этого состояния. В этом состоянии распознаются и обслуживаются все прерывания. Если прерывание поступит от клавиатуры (при нажатии обычной клавиши), то состояние захвата завершается, код нажатой клавиши отбрасывается и управление возвращается той программе, которая выполнялась до установления состояния захвата. Если прерывание имело другую природу (номер, прерывание от дисков), то оно обслуживается, но состояние захвата сохраняется пока не будет нажата клавиша.
Комбинация клавиш Ctrl-NumLock - это один из четырех особых случаев, отслеживаемых процедурой системы BIOS. Когда процедура обслуживания клавиатуры обрабатывает коды, принимаемые от клавиатуры, она постоянно проверяет появление одной из четырех особых комбинаций, которые обслуживаются специальным образом.
Фактически, эти четыре комбинации рассматриваются как команды, по которым должно начинаться выполнение определенных служебных процедур. Эти четыре комбинации: Ctrl-NumLock, PrtSc, Ctrl-Alt-Del и Ctrl-Break.
Как мы уже видели, комбинация Ctrl-NumLock используется для приостановки работы компьютера. Процедура обслуживания клавиатуры не позволяет компьютеру продолжать выполнение любой программы, пока приостановка не будет отменена нажатием клавиши.
Команда распечатки экрана или PrtSc предназначена для вывода содержимого экрана на устройство печати. Поскольку эта операция выполняется на самом примитивном уровне, она не может использовать возможности ДОС, такие как пересылка сообщения в линию связи вместо устройства печати. Процедура распечатки экрана доступна и Вашим программам на уровне прерываний, что будет показано в главе 11.
Комбинация клавиш Ctrl-Alt-Del используется для перезапуска или для перезагрузки системы. Когда встречается такая комбинация, процедура обслуживания клавиатуры передает управление программе проверки системы и запуска работы операционной системы.
Эту комбинацию клавиш можно использовать в любой момент времени для перезапуска системы, если произошло какое-либо отклонение от нормального функционирования. Однако, как можно заметить, эта комбинация действует не всегда. В некоторых случаях IBM/PC необходимо бывает выключить, а затем снова включить и уже после этого пытаться ее перезапустить. Для чего это бывает необходимо? Комбинация Ctrl-Alt-Del срабатывает всегда, когда работает процедура обслуживания клавиатуры. Это условие может оказаться невыполненным в двух случаях. Первый и наиболее распространенный связан с запретом прерываний. Из главы 3 Вам должно быть известно, что прерывания запрещаются машинной командой CLI и не обслуживаются пока не будет выдана команда STI. Обычно команда STI следует за командой CLI через очень короткий промежуток времени. Однако, если программа по ошибке, оставила прерывания запрещенными, то нажатие клавиш Ctrl-Alt-Del не приведет ни к какому результату. Другая причина нарушения работы процедуры обслуживания клавиатуры может быть связана с изменением значения вектора прерывания от клавиатуры. Если изменить ячейки памяти с 36 по 39, в которых находится вектор прерывания от клавиатуры, тогда клавиатура не будет работать, в том числе и клавиши Ctrl-Alt-Del. Естественно, что программа запуска после включения питания восстанавливает все вектора прерываний.
Комбинация Ctrl-Break предназначена для прерывания текущей операции. В отличие от остальных трех специальных комбинаций она может отрабатываться программно. Прерывание номер 27, шестнадцатиричное значение 1В, зарезервировано для процедуры, которая должна вызываться при нажатии клавиш Ctrl-Break. Если программа хочет использовать это средство, она должна занести адрес процедуры обслуживания прерывания в ячейки вектора прерывания 27 - ячейку с адресом 108, шестнадцатиричное значение 6С. Эту возможность можно исследовать, нажимая клавиши Ctrl-Break при работе с интерпретатором БЕЙСИКА или редактором Edlin, поставляемым в составе ДОС. Если программа не устанавливает адрес процедуры обслуживания прерывания в ячейку 108, то система BIOS совместно с ДОС прерывают выполнение текущей программы или файла пакетной обработки. Управление возвращается ДОС.
Поскольку блок клавиатуры сообщает обо всем, что происходит с клавишами и процедуры системы BIOS в ПЗУ интерпретируют любые действия, выполняемые с клавиатурой, Ваша программа может следить за всеми действиями, производимыми с клавиатурой. Программам редко требуются какие-либо сведения помимо тех, которые сообщаются процедурами обслуживания клавиатуры системы BIOS в ПЗУ, поэтому не обеспечена специальная возможность, позволяющая программе определить какие в точности действия выполнялись с клавиатурой.
Если Вам все-таки необходимо более точно знать, что происходит с клавиатурой, Ваши программы могут подменить вектор прерываний для клавиатуры, который расположен по адресу 36, шестнадцатиричное значение 24. Если Вы разрабатываете собственную процедуру обслуживания прерываний от клавиатуры, то она может либо выполнять абсолютно все функции обслуживания, либо служить пред-процессором для стандартной процедуры системы BIOS. Предпроцессор может извлекать любую информацию, которая Вам необходима, и передавать управление стандартной процедуре для выполнения обычных действий.


Беспроводная мышь - то, что мне нужно было

Деревянная мышка и клава

Джойстик (Joystick), или рычажный манипулятор

Как подключить джойстик, акустическую систему или мышь

Клавиатура

Клавиатуры современных домашних ПК

Манипуляторы, или координатные устройства ввода информации

Мыши на свободе, ML-1600 и ML-1000 – новые модели манипуляторов от SVEN

Мышка - история, способы подключения к компьютеру

Мышь Delux DLM-358B

Определение смысла нажатых клавиш

Основные принципы функционирования клавиатуры

Трекбол (Trackball)

Трекпойнт (TrackPoint)




Немного рекламы:


















































































Rambler's Top100