Добавлено:
Ср сен 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', '')та самая боевая клава и есть.
У мя почти во всей конторе такие клавы...
Посему тестить бессмысленно.
Добавлено:
Пт сен 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. Напрочь не хочет реагировать. Что-то не догоняю.