OSDev

для всех
Текущее время: 28 апр 2024, 19:42

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: как быть с клавой?
СообщениеДобавлено: 04 дек 2013, 11:27 

Зарегистрирован: 17 окт 2013, 18:45
Сообщения: 23
есть обработчик клавиатуры. нажатые клавиши он пока выводит на экран для видимости своей работы, сейчас в его работе сомнений нету, поэтому хотелось бы сделать что-то типа буфера клавиатуры. только вот что и как - хз. есть идея сделать небольшой аналог досового кольцевого буфера, но тут возникает проблема с использованием его в многозадачности. можно конечно в каждой задаче сделать свой буфер, но это край. может есть что-то лучше этого?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как быть с клавой?
СообщениеДобавлено: 04 дек 2013, 12:52 

Зарегистрирован: 31 июл 2013, 09:40
Сообщения: 28
Пусть каждая задача, использующая клаву, сообщает об этом драйверу клавы, а драйвер клавы пусть шлёт сообщения о нажатиях и отпусканиях всем нуждающимся. Так количество запоминаемых клавиш не будет ограничиваться размером клавиатурного буфера.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как быть с клавой?
СообщениеДобавлено: 04 дек 2013, 13:20 

Зарегистрирован: 17 окт 2013, 18:45
Сообщения: 23
у меня сейчас "драйвер" клавиатуры - это обработчик прерывания в ядре. не гоже будет ему всю эту рутину выполнять. тогда можно, наверное, так сделать: в обработчик прерывания клавиатуры (который в ядре) засунуть код, который только будет принимать скан-коды клавишь, сам драйвер вынести в отдельный модуль, который будет работать на уровне ядра, но выполняться как процесс. т.е. примерно так:
Код:
keyboard_handler:
in al, 60h
mov [keyboard_driver_kye_scancode], al
in al, 61h
mov ah, al
or al, 80h
out 61h, al
mov al, ah
out 61h, al
iretd


keyboard_driver:
cmp [keyboard_driver_kye_scancode], 0
je keyboard_driver
;тут преобразование сканкода в аски код и посыл его всем процессам
mov [keyboard_driver_kye_scancode], 0
jmp keyboard_driver


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как быть с клавой?
СообщениеДобавлено: 04 дек 2013, 13:55 

Зарегистрирован: 31 июл 2013, 09:40
Сообщения: 28
ИМХО, при такой организации велик риск того, что клава пошлёт несколько кодов, а "драйвер" не успеет все обработать. Если не отказываться от архитектуры с кучей сообщений, то нужен буфер между "драйвером" и обработчиком. А вообще тут на форуме учебная ОС есть и оттуда можно взять схему работы с клавой


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как быть с клавой?
СообщениеДобавлено: 04 дек 2013, 14:37 

Зарегистрирован: 17 окт 2013, 18:45
Сообщения: 23
я просто думал, что пользователь не может нажимать так быстро клавиши. + у меня ось будет пока что в обычном консольном режиме, можно слать проге сообщение о том, что пользователь сменил консоль, та в свою очередь отправит драйверу сообщение о снятие запроса на клаву. можно сделать так!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как быть с клавой?
СообщениеДобавлено: 04 дек 2013, 23:01 

Зарегистрирован: 10 апр 2012, 23:19
Сообщения: 277
делай один буфер, пейджингом подставляй.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB