Странная Дергающаяся Клавиатура

Drivers for periphery equipment
  • Начиная с пятой версии Колибри(5.0.0.1) клавиатура начала работать несколько иначе. Раньше она опрашивалась интервалами,но стабильно(тоесть интервалы опроса были периодические).С пятой версии клавиатура опрашивается все время(точнее эти интервалы стали длительны и их нельзя засеч),но в некоторый момент ожидание ответа от клавиатуры затягивается,а потом все по новому кругу.Вот и возникают подергивания.Исследования работы клавиатуры я проводил с помощью простенькой програмки(я исследую работу системы для каждого дистрибутива).

    Эти подергивания нехорошо отразились на управлении перемещениями спрайтов в моей тестовой программе по работе с графикой.В версии 5.0.0.0 все хорошо работало(плавное перемещение),а вот
    в 5.0.0.1 дергается и несколько снизилась скорость работы клавиатуры(для всех приложений).

    Надо обязательно найти причину(ищем вместе).
  • camper
    andrew_programmer
    Для клавиатуры я ничего не менял. Только вставил сброс в синем экране и сброс после переключения в защищенный режим. И было это уже в К0500.
    Возможно, Андрей Халявин или Иван Поддубный чего ни будь, изменили в К0510, так как я брал ядро, которое они дорабатывали.
  • В Колибри 0.5.1.0 изменена обработка прерываний, как программных (i40), так и аппаратных (исключения и IRQ).
    В результате получили код, который намного проще и компактней, чем раньше.
    Как показывают тесты, скорость системного вызова выросла в несколько раз.
    IRQ (и клавиатура в том числе) тоже стали обрабатываться значительно быстрей.

    Никаких "опросов" клавиатуры, насколько я знаю, в ядре нет. Есть лишь обработчик IRQ1...
    В общем, я в глубокой озадаченности от таких странных глюков.

    Что касается DOOM, то там есть кое-какие глюки, так что иногда клавиши как будто западают.
  • >Никаких "опросов" клавиатуры, насколько я знаю, в ядре нет. Есть лишь обработчик IRQ1...

    Да я иногда по инерции IRQ называю опросом(откуда появилась эта привычка я и сам незнаю).

    А чтобы причину подергивания выявить,надо какой-то хитрый тест придумать .Будем думать.
  • Офигеть!
    Самое удивительное,что причиной подергиваний является как раз увеличение скорости работы клавиатуры!

    Дело в том,что приложения активно использующие клавиатуру,"непривыкли" к бысторой работе клавиатуры.Вот например,в моей программе с перемещениями спрайтов после отжатия клавиши спрайты реагировали не мгновенно(из-за инерционности клавиатуры) и поэтому спрайт плавно останавливался.
    А сейчас,только отпустиш клавишу,как спрайт останавливается словно вкопанный(при быстором управлении спрайтом создается эффект дергания).Я изменил код с учетом возросшей скорости и спрайты стали двигаться плавно.

    Если в Колибри будут еще какие-то важные улучшения,то пожалуйста не поленитесь их отразить в ReadMе!(ато я тут поднял ложную тревогу).
  • Неплохо бы еще проверить с последним ядром с SVN - кажется, что в Колибри 0.5.1.0 вошли не все изменения из перечисленных выше... (я не качал исходники 0.5.1.0)
    Точно могу сказать, что переделан обработчик i40, а вот IRQ, скорее всего, обрабатываются по-старому.
  • Проблема сохранилась и в 5.20, трудно играть в "подвижные" игры. Еще В Doomе например Shift - скорость, работает только один раз при нажатии, достаточно нажать любую другую клавишу, как скорость отрубается и надо опять нажимать Shift.
  • Doom - это особый случай. Глюк с "западающими" клавишами присущ исключительно этой игрушке. Если глюки есть в других играх, то просьба подробно расписать симптомы.
  • В "теннисе" и в арканоиде западание клавиш также присутствует, вначале не сразу срабатывает, затем не может остановится некоторое время.
  • camper
    Теннис и Арканоид, про которые ты говоришь, написаны на основе библиотеки ASCL, написаны Павлюшиным Евгением, библиотека тоже им написана. Таковой глюк является не глюком в принципе программы, а особенностью реализации библиотеки. Соответственно это глюк библиотеки. Хотя в игре Феникс он уже вроде не появляется, однако игра была написана существенно позже.
  • camper и Mario79

    Все это связанно с тем что в арканоиде и понге считываются тормознутые Ascii коды!
    А кода появилась фитча в ядре считывающая scan-коды я сразу стал ее использовать в фениксе и там ни че не тормозит...
    Просто когда-то давно небыло скан кодов! И про эти глюки можете забыть это не глюки а особенности старого ядра.
  • EXIS
    Спасибо, что разъяснил. В принципе не плохо бы переписать. ;-)
  • Mario79 wrote:EXIS
    Спасибо, что разъяснил. В принципе не плохо бы переписать. ;-)
    Тока если с нуля... :) Да не надо че-то новое... а то эти понги и арконоиды... надоедают...
  • Феникс действительно не тормозит! EXIS в чем кораблики рисовал?
    Понги и арканоиды надо переписывать, с нормальной классической графикой для этих игр :) Но это лучше дайте сделать молодому подрастающему поколению :)
  • Who is online

    Users browsing this forum: No registered users and 2 guests