Страница 1 из 1

Время отклика клавиатуры.

СообщениеДобавлено: Ср сен 19, 2007 12:06 pm
Aleg
Интересует данный параметр. Определю его так: время между нажатием на клавишу и моментом выработки прерывания. Т.е. это время всецело определено механикоэлектронными особенностями дэвайса от клавиши и до разъема DIN. Этот параметр как-то нормируется и, самое интересное, как его измерить? Понимаю, что измерить сложно, но хотя бы методика как его оценить относительно других клавиатур. Ну например ответить насколько одна клавиатура тормознутее другой. Кое что уже намерял, но методика довольно специфическая. Нужно что-то более универсальное. Тогда сможем посравниваться. Где это важно? Думаю многие догадаются.

СообщениеДобавлено: Ср сен 19, 2007 3:04 pm
Gromak
Когда-то давным давно, когда деревья ещё были кустиками, я читал смешную на первый взгляд тему на оверлокере - Разгон мыши PS/2!!! Оказалось, что можно измегнить частоту запросов на активность девайса, и реально разогнать это устройство так, что указатель мыши бут летать как дурной. Счас это можно сделать из панели управления. Но как быть с разгоном клавы, я не знаю... :laugh:

Posted after 2 minutes 28 seconds:

Полагаю, что все клавы одинаковы в плане "времени отклика", поскольку скорость её реакции также зависит исключительно от частоты запросов, посылаемых на неё.

СообщениеДобавлено: Ср сен 19, 2007 3:11 pm
Aleg
$this->bbcode_second_pass_quote('Gromak', '')олагаю, что все клавы одинаковы в плане "времени отклика"

Не все. Я даже не буду говорить о т.н. геймерских клавах, на которые утвердают обозначенную задержку в 1 мс и возможность хардверно на клаве их изменять с неким шагом. Время, о котором я говорю, не имеет отношения к опросу клавиатуры. Оно сидит уже в самой клавиатуре и является уникальным ее свойством. Кто-то говорит о 25 мс как о стандартном времени, кто-то о 8 мс, но мне кажется 25 мс ближе к теме.
Приоткрою карты. У меня две клавы. Старая и новая обе PS/2. Новая это Defender KS-940. Так вот на ней, будучи подключенной к одному и тому же порту, драйверу и настройкам драйвера через средства Windows я получаю задержку срабатывания на одно нажатие клавиши на 120 (!!!) мс больше относительно старой. Я уже труп!

СообщениеДобавлено: Ср сен 19, 2007 4:17 pm
Hacker
$this->bbcode_second_pass_quote('Aleg', '') получаю задержку срабатывания на одно нажатие клавиши на 120 (!!!) мс больше

Т.е. это заметно при игре?

СообщениеДобавлено: Ср сен 19, 2007 4:28 pm
Fallman
$this->bbcode_second_pass_quote('Aleg', '')еханикоэлектронными особенностями дэвайса от клавиши и до разъема DIN.

Не согласен. Можно на одну и ту же клавишу нажать с разной скоростью, это раз. Второе, тут задействовано несколько больше электронных устройств чем видится на первый взгляд. Давайте разберёмся.
1. М/сх которая постоянно сканирует матрицу клавиш и при нажатии передаёт код клавиши в контроллер клавиатуры по интерфейсу PS/2 например. Вопрос 1 - какой цикл сканирования всей матрицы клавиш? Я думаю ответ можно найти только в даташите на конкретную м/схему.
2. Передача происходит в последовательном виде, т.к. на PS/2 имеется только 4 проводника (+5V, GND, Data и Clock). Возможно используется ИКМ кодирование. Однако широко известен тот факт, что скорость работы интерфейса PS/2 можно менять где-то от 50 до 200 посылок в секунду. Т.е. та м/схема которая в клавиатуре не генерирует прерывания, а её опрашивают. Скорость опроса зависит от скорости на которую настроен интерфейс PS/2. Опять же задержки в передаче информации могут быть разные.
3. Поступил код нажатой клавиши в собственно контроллер клавиатуры, встроенный например в: http://www.ite.com.tw/product_info/PC/B ... 8712_2.asp, каково время генерации прерывания контроллера клавиатуры встроенного в этот чип? Зависит от контроллера, а они могут быть разными (слегка отличаться, ITE и Winbond например). Тоже неопределённость.
4. Далее, каково время обработки прерывания самой ОС? Для NT ядер не менее 5-7 мс, если чаще - система теряет прерывания. Это было выявлено при разработке гигабитных сетевых адаптеров. Поэтому для них и ввели т.наз. Jumbo Frames, чтобы адаптер генерил прерывания реже.
Итак что мы имеем.
$this->bbcode_second_pass_quote('Aleg', '')то-то о 8 мс,

ИМХО очередной чистый развод лохов на бабки.

СообщениеДобавлено: Ср сен 19, 2007 4:31 pm
Aleg
Hacker, канечна! Доходит до того, что я сдвинуться не могу, если стрейфлю в Q3 быстро попеременно право/лево. Клавиатура не успевает отработать. Дриблинг не проходит. И это притом, что в винде работать замечательно, печатать там али что. Т.е. этого и не заметил бы, если бы не Q3. И методика оценки задержки тоже основана на Q3. Все думал как ее изложить и придумал. Я запишу демку и выложу, а энтузиастов особенно от Q3 попрошу ей следовать. Тогда хоть статистика будет.
файл тут Демка в Q3, 80 кб всего.
Смысл. В указанном месте 25 раз качнуться стрейфами прицелом между внутреними вертикальными линиями столбов и засечь время. Если немного не будете попадать в точки поворота - не страшно. За несколько замеров у вас будет усредненное время. На нормальной клаве оно составило у меня ~19 секунд. На больной ~22 секунды. К слову если стрейф посадить на мышь, то время тоже составило около 19 секунд. А мышь работала от USB и на 500 Гц.
Итого получам 25 нажатий и разница в 3 секунды. Грубо 3000/25=120 мс разница на клавишу. Это верная смерть, что и подтвердилось.

СообщениеДобавлено: Ср сен 19, 2007 10:33 pm
Hacker
Угу, подтверждаю, около 19 сек у меня на самой дешевой клаве Chicony KB-9810. Тормозов не замечал.

СообщениеДобавлено: Ср сен 19, 2007 10:38 pm
Aleg
$this->bbcode_second_pass_quote('Hacker', '')амой дешевой клаве Chicony KB-9810

Гы! Так и у меня эта самая боевая клава и есть.

СообщениеДобавлено: Чт сен 20, 2007 9:40 am
Fallman
$this->bbcode_second_pass_quote('Aleg', '')та самая боевая клава и есть.

У мя почти во всей конторе такие клавы... :shuffle: Посему тестить бессмысленно.

СообщениеДобавлено: Пт сен 21, 2007 2:19 pm
Aleg
Тут по случаю мне брендятинка KB-9860 от Compaq свалилась. Новая и аж 2000-го года выпуска! Вот с ней тоже все нормально. Светодиоды перепаял как положено и не нарадуюсь. Будем считать, что этот Defender несчастный просто невезунчик. Разбираться что с ней уже сил нет. Пусть лежит до лучших времен.

СообщениеДобавлено: Чт окт 04, 2007 10:48 am
Aleg
Похоже я дал рабы с этим дефендером. Снял сенсорную пластину, разъединил верх и низ, промыл тщательно спиртом всю площадь и стало как надо. Видимо окисление или маловидимое загрязнение давало этот странный эффект. Вот что жидкость животворящая делает.

СообщениеДобавлено: Чт окт 04, 2007 11:16 am
Noname2
$this->bbcode_second_pass_quote('Aleg', '.').. промыл тщательно спиртом всю площадь... ... жидкость животворящая ...

[off]Эту бы жидкость да внутрь, по назначению. Реакция организма и сравнялась бы с реакцией Клавы. Вот только как этим уродцам в Кваке налить, чтобы и у них реакция замедлилась?[/off]

СообщениеДобавлено: Чт окт 04, 2007 11:55 am
Aleg
Кстати о клавах далее. На появившемся у меня Compaq KB-9860 нет клавиш ждущего, выключения, пробуждения режимов. Обидно ибо привык. Начинаем думать и пытаться назначить на, скажем, клавишу Right Windows хотя бы ждущий режим. Кто не в курсе как это делать в двух словах:
1. В реестре по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
создаем двоичный параметр Scancode Map и присваиваем ему значение
00 00 00 00 00 00 00 00 04 00 00 00 1D 00 5B E0 5F E0 5C E0 21 E0 5D E0 00 00 00 00
где 04 это количество клавиш на изменение большее на единицу. Далее выделенным шрифтом идут сканкоды наших изменяемых клавиш:
1D 00 - это сканкод Left Ctrl, назначенный теперь на клавишу 5B E0 (Left Windows)
5F E0 - Sleep на Right Windows 5C E0.
21 E0 это назначение вызова калькулятора по клавише 5D E0 Application (есть такая правее Right Windows)
Комбинация 00 00 в выделенной зоне перед введенным сканкодом существующей клавиши вообще отключает ее нафиг (это же как можно поиздеваться над секретаршей! А потом требовать за спасение от нее чего хочешь)
Так вот. Все работает за исключением назначения Sleep. Напрочь не хочет реагировать. Что-то не догоняю.