Page 1 of 2

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

Posted: Mon Oct 31, 2005 8:57 pm
by camper
Как и в Думе так и в других играх ощущение что "что-то не то" с клавиатурой. Как будто комп помнит старые нажатие и остаются последействия. И это во всех играх кажется. Ничего у вас такого не наблюдается?

Posted: Mon Oct 31, 2005 10:56 pm
by andrew_programmer
Начиная с пятой версии Колибри(5.0.0.1) клавиатура начала работать несколько иначе. Раньше она опрашивалась интервалами,но стабильно(тоесть интервалы опроса были периодические).С пятой версии клавиатура опрашивается все время(точнее эти интервалы стали длительны и их нельзя засеч),но в некоторый момент ожидание ответа от клавиатуры затягивается,а потом все по новому кругу.Вот и возникают подергивания.Исследования работы клавиатуры я проводил с помощью простенькой програмки(я исследую работу системы для каждого дистрибутива).

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

Надо обязательно найти причину(ищем вместе).

Posted: Tue Nov 01, 2005 9:09 pm
by Mario79
camper
andrew_programmer
Для клавиатуры я ничего не менял. Только вставил сброс в синем экране и сброс после переключения в защищенный режим. И было это уже в К0500.
Возможно, Андрей Халявин или Иван Поддубный чего ни будь, изменили в К0510, так как я брал ядро, которое они дорабатывали.

Posted: Tue Nov 01, 2005 9:42 pm
by Иван Поддубный
В Колибри 0.5.1.0 изменена обработка прерываний, как программных (i40), так и аппаратных (исключения и IRQ).
В результате получили код, который намного проще и компактней, чем раньше.
Как показывают тесты, скорость системного вызова выросла в несколько раз.
IRQ (и клавиатура в том числе) тоже стали обрабатываться значительно быстрей.

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

Что касается DOOM, то там есть кое-какие глюки, так что иногда клавиши как будто западают.

Posted: Tue Nov 01, 2005 10:33 pm
by andrew_programmer
>Никаких "опросов" клавиатуры, насколько я знаю, в ядре нет. Есть лишь обработчик IRQ1...

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

А чтобы причину подергивания выявить,надо какой-то хитрый тест придумать .Будем думать.

Posted: Tue Nov 01, 2005 11:17 pm
by andrew_programmer
Офигеть!
Самое удивительное,что причиной подергиваний является как раз увеличение скорости работы клавиатуры!

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

Если в Колибри будут еще какие-то важные улучшения,то пожалуйста не поленитесь их отразить в ReadMе!(ато я тут поднял ложную тревогу).

Posted: Wed Nov 02, 2005 12:44 pm
by Иван Поддубный
Неплохо бы еще проверить с последним ядром с SVN - кажется, что в Колибри 0.5.1.0 вошли не все изменения из перечисленных выше... (я не качал исходники 0.5.1.0)
Точно могу сказать, что переделан обработчик i40, а вот IRQ, скорее всего, обрабатываются по-старому.

Posted: Tue Dec 06, 2005 7:48 pm
by camper
Проблема сохранилась и в 5.20, трудно играть в "подвижные" игры. Еще В Doomе например Shift - скорость, работает только один раз при нажатии, достаточно нажать любую другую клавишу, как скорость отрубается и надо опять нажимать Shift.

Posted: Tue Dec 06, 2005 8:25 pm
by Иван Поддубный
Doom - это особый случай. Глюк с "западающими" клавишами присущ исключительно этой игрушке. Если глюки есть в других играх, то просьба подробно расписать симптомы.

Posted: Tue Dec 06, 2005 9:12 pm
by camper
В "теннисе" и в арканоиде западание клавиш также присутствует, вначале не сразу срабатывает, затем не может остановится некоторое время.

Posted: Sat Dec 10, 2005 2:23 pm
by Mario79
camper
Теннис и Арканоид, про которые ты говоришь, написаны на основе библиотеки ASCL, написаны Павлюшиным Евгением, библиотека тоже им написана. Таковой глюк является не глюком в принципе программы, а особенностью реализации библиотеки. Соответственно это глюк библиотеки. Хотя в игре Феникс он уже вроде не появляется, однако игра была написана существенно позже.

Posted: Sat Dec 10, 2005 3:30 pm
by EXIS
camper и Mario79

Все это связанно с тем что в арканоиде и понге считываются тормознутые Ascii коды!
А кода появилась фитча в ядре считывающая scan-коды я сразу стал ее использовать в фениксе и там ни че не тормозит...
Просто когда-то давно небыло скан кодов! И про эти глюки можете забыть это не глюки а особенности старого ядра.

Posted: Sat Dec 10, 2005 4:57 pm
by Mario79
EXIS
Спасибо, что разъяснил. В принципе не плохо бы переписать. ;-)

Posted: Sun Dec 11, 2005 12:49 pm
by EXIS
Mario79 wrote:EXIS
Спасибо, что разъяснил. В принципе не плохо бы переписать. ;-)
Тока если с нуля... :) Да не надо че-то новое... а то эти понги и арконоиды... надоедают...

Posted: Sun Dec 11, 2005 3:52 pm
by camper
Феникс действительно не тормозит! EXIS в чем кораблики рисовал?
Понги и арканоиды надо переписывать, с нормальной классической графикой для этих игр :) Но это лучше дайте сделать молодому подрастающему поколению :)