Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.03;
Скачать: CL | DM;

Вниз

Буфер клавы   Найти похожие ветки 

 
Snap ©   (2002-11-11 21:56) [0]

Мож кто знает, где находится системный буфер клавы?


 
TurtleSage   (2002-11-11 22:03) [1]

Напиши конкретно, что надо


 
Snap ©   (2002-11-11 22:06) [2]

Куда прерывание клавы пишет нажатые клавиши? Не может же оно сразу их в Винду, и в поток сообщений нужного процесса? Для начала наверное в системный клавиатурный буфер? Или я чего то не понимаю?


 
turtlesage   (2002-11-11 22:11) [3]

А пока информация к размышлению...
Надеюсь ассемблерными вставками пользоваться умеешь
101-клавишная клавиатура имеет буфер,
организованный в виде очереди (FIFO - "первый пришел, первый ушел").
Этот клавиатурный буфер может хранить 32 кода (нажатия и отжатия) в
режиме 1 и по 16 кодов сканирования в режимах 2 и 3. Сканкоды
сохраняются в буфере до тех пор, пока система не будет готова их
принять. Если буфер клавиатуры переполнен, то новый сканкод не
генерируется, а в буфер помещается код переполнения (FFh в режиме 1, 00h
в режимах 2 и 3), для которого в буфере постоянно резервируется место.
Доступ к клавиатуре через порты
ввода-вывода является самым низкоуровневым методом доступа.
Такой метод используется обычно только прерываниями INT 09h, INT
15h и драйверами клавиатуры.

Порт 60h предназначен для чтения данных с клавиатуры и сохранен для
совместимости с клавиатурой PC XT.
С помощью порта 64h можно читать данные с клавиатуры (коды клавиш и
статус), программировать и осуществлять настройку клавиатуры.
Рекомендуется использовать порт 60h для чтения сканкодов, а 64h - для
определения статуса и программирования клавиатуры. Такое разделение
функций обеспечит максимальную гибкость программам.
Пример чтения сканкода с помощью порта 60h:

in al,60h ; прочитать сканкод
mov bl,al ; в bl - сканкод

in al,61h ; см. предыдущий пример
mov ah,al
or al,80h
out 61h,al
xchg ah,al
out 61h,al

mov al,20H ; послать сигнал конца прерывания
out 20H,al ; в контроллер прерываний

При программировании контроллера клавиатуры необходимо первоначально в
порт 64h записать код команды, сделать задержку и затем записать байт
данных (список команд приведен ниже):

mov al, код команды ; см. ниже
out 64h, al ; запись кода команды в порт
; если нужно посылать данные,
mov cx, 2000h ; то необходима задержка
pause: loop pause ; задержка
mov al, байт данных ; запись параметра команды
out 64h, al


 
Snap ©   (2002-11-11 22:14) [4]

Это всё очень хорошо, но так вот где лежит этот буфер?
И можно ли в него записать какую- нить инфу из Винды?


 
Snap ©   (2002-11-11 22:30) [5]

Ну ответьте, пожалуйста!


 
Ich Hasse ©   (2002-11-11 22:45) [6]

ИМХО

mem[Seg0040: $17] //это на скорлько я понимаю обычные клавиши
mem[Seg0040: $18] //это Alt, Ctrl, Shift


Не знаю как поможет, но это адреса в памяти.


 
Snap ©   (2002-11-12 11:25) [7]

otvette plizz


 
Игорь Шевченко ©   (2002-11-12 11:57) [8]

GetAsyncKeyState


 
Snap ©   (2002-11-12 11:58) [9]

Tak mne nado ne vzat a polozhit!


 
Song ©   (2002-11-12 13:30) [10]

Надо получить Ring0 чтобы можно было через порты работать.


 
Игорь Шевченко ©   (2002-11-12 14:23) [11]

Положить - keybd_event. Но к буферу клавиатуры это никакого отношения не имеет.


 
Snap ©   (2002-11-20 14:38) [12]

keybd_event не работает, поютому и хочу в буфер



Страницы: 1 вся ветка

Текущий архив: 2003.02.03;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
7-5293
Borys
2002-11-22 16:59
2003.02.03
LPT (COM) под Windows


4-5359
try33
2002-12-19 00:59
2003.02.03
без таймера


14-5142
GebbelZ
2003-01-14 22:33
2003.02.03
Создание помощи


14-5185
о
2003-01-14 16:09
2003.02.03
Нужны приколы про электриков


3-4745
andwcomm
2003-01-15 21:20
2003.02.03
Как програмно узнать физическое расположение файла базы данных