Буфер клавиатуры

Тема в разделе "WASM.X64", создана пользователем Hell_Knight, 25 фев 2011.

  1. Hell_Knight

    Hell_Knight New Member

    Публикаций:
    0
    Регистрация:
    3 ноя 2009
    Сообщения:
    51
    Пишу драйвер для клавиатуры... но вот проблема... нужно очистить буфер клавиатуры... только вот что-то не найду как это можно реализовать?
    Мне нужно для режима Long Mode... т. е. я как понимаю здесь только через порты...
    Где можно про это всё дело посмотреть?
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Через биос чтоль? Напишите свой обработчик.
     
  3. Hell_Knight

    Hell_Knight New Member

    Публикаций:
    0
    Регистрация:
    3 ноя 2009
    Сообщения:
    51
    Вот как раз обработчик и пишу...
    Я где-то слышал, что в Long Mode уже нельзя воспользоваться прерываниями Биоса...
    Да оно и понятно... я ведь IDT новый объявляю... да и к тому же разрядность поднял до 64 бит

    нужно очистить буфер клавиатуры... т. к. почему-то туда не поступают новые данные...
    я получаю скан-коды от первых 2 клавиш + их отпускание...
    а дальше NULL
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Попробуйте.
    Код (Text):
    1.  mov dx,$041a
    2.  in al,dx
    3.  mov dx,$041c
    4.  out dx,al
    Устанавливаем указатель на хвост в указатель на голову.
     
  5. Hell_Knight

    Hell_Knight New Member

    Публикаций:
    0
    Регистрация:
    3 ноя 2009
    Сообщения:
    51
    Обрисую ситуацию:
    Обработчик прерывания 0х09, вот что делает:
    С новой строки в консольке должен вывести скан-код в формате:
    > #SCAN_CODE >
    Что имеется на деле:
    При нажатии клавиши, срабатывает прерывание и успешно что-то выводится на экран (будем считать это "сообщение №1")
    А так же при отпусканиее клавиши так же срабатывает прерывание и тоже выводит с новой строки "сообщение №2"
    Далее я нажимаю следующую кнопку, и успешно выводится сообщение №3,
    А вот сообщение №4 только делает отступ строки, и ничего не выводит...
    Дальнейшие нажатия клавиш, даёт по 2 сообщение(для нажатия, и отпускания), т. е. 2 отступа строки

    Уж теперь я в замешательстве... в чем же может быть баг?
     
  6. Hell_Knight

    Hell_Knight New Member

    Публикаций:
    0
    Регистрация:
    3 ноя 2009
    Сообщения:
    51
    Ой... пардон... всё спасибо :)
    Тему можно закрыть...
    Эта проблема уже почти разрешилась....