Войти
ПрограммированиеФорумОбщее

Одновременное нажатие клавиш

Страницы: 1 2 Следующая »
#0
15:37, 2 июня 2010

Есть игра, управляется стрелками и есть некое действие на пробеле. Оказалось, что когда нажимаю вверх и влево (прыгаю и двигаюсь влево), отказывается работать пробел. Хотя если прыгать вправо и нажимать пробел - работает. Что же делать, как же быть?


#1
15:43, 2 июня 2010

как клаву обрабатываешь?

#2
15:48, 2 июня 2010

Обычные виндовые сообщения ловлю (вобще HGE ловит, не суть, он через виндовые сообщения работает)

#3
15:53, 2 июня 2010

Necrys
> Что же делать, как же быть?
С некоторыми клавами - вообще ничего. Это особенность внутренней реализации клавы.
Если есть возможность одолжить другую клаву (другой бренд/тип), попробуй.

#3
15:53, 2 июня 2010

Попробуй GetAsyncKeyState(). это обычно как минимум удобнее.

#5
16:43, 2 июня 2010

Это косяк клавы и только.

#6
16:46, 2 июня 2010

d.m.k
> Это косяк клавы и только.
нет же. специальные кнопки вроде альтов, шифтов, пробелов и стрелок можно нажимать в любых комбинациях без глюков. ну или почти. в любом случае, любые стрелки + пробел нажать можно всегда.

#7
16:48, 2 июня 2010

Necrys
Я так думаю, что по каналу с клавы на комп не может пройти столько инфы одновременно, причем максимальная пропускная способность зависит от нажатых клавиш. Хотя обычно мой комп в таких случаях пищит.

#8
16:57, 2 июня 2010

Suslik
> специальные кнопки вроде альтов, шифтов, пробелов и стрелок можно нажимать в любых комбинациях без глюков.
Есть клавы, у которых опрос матрицы кнопок настолько убог, что одновременное нажатие кнопок в более чем в двух (образно) строках/столбцах ведет к невозможности определения результата. То-ли буфер в контроллере короткий, то-ли отсутствует как класс. Раньше биосы бибикали, когда с клавы приходил сканкод 0xff. А он как раз генерится в таких случаях.

#9
18:44, 2 июня 2010

d.m.k
> Это косяк клавы и только.
Уже была тема тута, это ограничение электроники клавы или драйвера, т.е. даже при опросе состояния клавиш (не событий) она не выдает нормальные результаты, ибо видимо буфер у нее короткий.

#10
18:55, 2 июня 2010

Дело не в драйвере а в контроллере клавиатуры, который теперь, слава богу, находится
в клавиатуре, так что смена девайся поможет отцу русского геймдева.

#11
19:01, 2 июня 2010

RPGman
> Есть клавы, у которых опрос матрицы кнопок настолько убог, что одновременное
> нажатие кнопок в более чем в двух (образно) строках/столбцах ведет к
> невозможности определения результата.
ссылку на клавиатуру, которая не понимает двух одновременно нажатых стрелок и пробела в студию. ещё раз: стрелки, пробелы, шифты, кантролы - это спец. кнопки, которые даже самая ущербная клавиатура понимает нажатыми практически в любых сочетаниях. разумеется, далеко не любая клавиатура понимает, например, одновременно нажатые e, f  и i клавиши. по-моему, в данном конкретном случае дело в кривизне чьёго-то кода.

#12
19:13, 2 июня 2010

Ну, за кривизну кода вот не надо пожалуйста. Сама обработка идет внутри HGE,за неё я спокоен, но, сигнала о нажатом пробеле оттуда не поступает

#13
19:17, 2 июня 2010

my.name
> это ограничение электроники клавы или драйвера, т.е. даже при опросе состояния
> клавиш (не событий) она не выдает нормальные результаты, ибо видимо буфер у нее
> короткий.

Драйвера и буфер тут не причем. Это конструктивная особенность клавиатур вообще. Разберите клавиатуру и посмотрите схему определения нажатия клавиш.

Во всех дешевых клавиатурах и в большинстве дорогих применена матричная схема. Горизонтальные линии контактов пересекаются с вертикальными многократно. Нажатая клавиша определяется по пересечению контактов. Если нажать одновременно хотя бы три клавиши так что два контакта пересекутся по два раза, то естесственно невозможно будет определить какие именно клавиши нажаты. Например Q W A. Со стрелками то же самое. У разных клавиатур немного по разному проведены контакты и поэтому неопределенность возникает на разных комбинациях. Клавиши Ctrl Alt Shift стараются не пересекать на схеме контактов что бы с ними работали любые комбинаци, хотя я встречал клавиатуры где даже они нажатые все вместе блокируются и пищат :)

В геймпадах применятся схема без многократных пересечений, контактов больше чем кнопок. Поэтому проблемы невозможности определения нажатия там нет.

Кстати, для относительно новой клавиатуры Microsoft Sidewinder X4 заявлено гарантированное распознавание до 26 любых клавиш одновременно. Интересно было бы проверить так ли это и посмотреть её устройство.

#14
19:18, 2 июня 2010

Suslik
> ссылку на клавиатуру
Ни один производитель не скажет, что у него что-то не нажимается.
У меня была джениусовская слимовская клава. Что-то вроде этой. Точное имя/модель не скажу за давностью.
Никогда не знаешь, держит ли клава произвольное количество нажатых кнопок.
>cтрелки, пробелы, шифты, кантролы - это спец. кнопки, которые даже самая ущербная клавиатура
Убогие модели есть, это факт, и никто никому ничего не обязаны. Конкретно вот моя клава не позволяла играть в примитивную стрелялку.
Стрелками управляешь самолетиком, пробелом стреляешь. Либо летишь по диагонали и не можешь стреляешь, либо стреляешь, но не можешь лететь.
Спроси модель клавы у топикстартера, и глянь на сайте производителя. Никто никогда такие детали не афиширует.

Страницы: 1 2 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.