LINUX.ORG.RU
решено ФорумGames

Геймпад сначала идеально работал, а потом перестал. Куда копать?

 , , ,


1

1

Собственно, я купил дешманский геймпад. Поиграл так часик-два, обнаружил, что R1 и R2 не работают (хз как назвать); посмотрел в системе – а они вполне себе работают, просто игрой не определяются. В линуксе чекнул, в винде чекнул… Везде определяются все кнопки, всё работает исправно, не бракованный вроде. Однако. В линуксе всё изначально нормально работало в играх (Dead Cells например), а в винде вообще не работало с играми. Может повлиял тот момент, что не через стим запускал игры в винде. Но в линуксе через стим.

Короче. Я попытался исправить это хоть как-то, и что-то у меня поменялось, в итоге теперь крестовина не работает нормально. Везде он вечно перелистывает вверх, будто я держу D-pad нажатым вверх и влево одновременно. Я перепробовал… ВСЁ! Я не знаю даже куда писать и кому, непонятно чей косяк. И system-wide что-то пытался менять; и в стиме настройки контроллера пытался менять; и пытался менять для конкретной игры раскладку (они там совсем долбанулись это так усложнять? в чём проблема сделать такой же обалденный редактор, но для всех игр сразу, а не для каждой? и стопятьсот настроек повсюду, которые непонятно как выставлять)

Ещё короче: геймпад работал идеально, но я не знаю как вернуть всё обратно, чтобы хотя бы все кнопки кроме двух работали… я уж не прошу заставить работать все. Хочу вернуть обратно Какие идеи? Геймпад - Defender Game Master G2

Я ведь правильно понимаю? – если геймпад в принципе работает и все нажатия определяются системой, то его реально игре просунуть так, чтоб игра понимала, что нажатие такой-то клавиши это LB, а другой – RB, LT, RT и т п? Как это сделать? У меня абсолютно ничего не выходит. Плюс появившаяся проблема с d-pad…

iwantpizza
() автор топика
Последнее исправление: iwantpizza (всего исправлений: 1)
Ответ на: комментарий от iwantpizza

Ужас какой-то честное слово. Вечное залипание. Пытаюсь удалить все файлы которые вроде как содержат настройки моего геймпада – они всё равно остаются в Steam Cloud и подгружаются оттуда. Вырубаю Steam Cloud - ноль толку

iwantpizza
() автор топика

Как я понимаю, steam настройки геймпада подкидывает в игру через SDL. Вот туда и копать. А в играх работающих не через steam он работает?

mittorn ★★★★★
()
Ответ на: комментарий от mittorn

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

iwantpizza
() автор топика
Последнее исправление: iwantpizza (всего исправлений: 2)
Ответ на: комментарий от mittorn

Хотя нет, в другой игре снова какая-то дичь происходит с геймпадом, залипания

iwantpizza
() автор топика
Ответ на: комментарий от mittorn

В принципе, те игры что щас запускал – через вайн. Заметил, что если стим врублен во время игры, то контроллер блокирует управление клавой в одной игре. Но ничего при этом не работает. А если стим вырубить и игру запустить – то работает только клава, но не геймпад.

iwantpizza
() автор топика
Ответ на: комментарий от iwantpizza

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

вообще у стима же есть специальные настройки для геймпада и там можно для каждой игры индивидуально настроить профили вплоть до того что на геймпад можно повесить эмуляцию клавиатурных сочетаний для игр без поддержки геймпада.

в любом случае это не объясняет появление залипаний.. это может свидетельствовать об аппаратной проблеме возможно даже с usb портом компьютера.

Thero ★★★★★
()
Ответ на: комментарий от iwantpizza

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

В общем, я так понимаю у меня изначально стояла вот такая конфигурация: Левый стик X: Ось 0 Левый стик Y: Ось 1

а поскольку это нифига не стик, а обычная крестовина (d-pad), обычные кнопки без всяких аналоговых штук, то я ставил Ось 0 и Ось 1 на крестовину… и недоумевал, мол почему 4 пункта в настройках? То бишь, Крестовина вверх/влево/вниз/вправо, а ставятся только две клавиши, будто Ось 0 и Ось 1 это две клавиши а не четыре. Глупость какая-то. Но оно понятно, дешманская фигня купленная за 300 рублей; зато теперь всё идеально работает

iwantpizza
() автор топика

Купи оригинальный геймпад от Microsoft. Или от Sony. Ну или какую-нибудь качественную копию.
С непонятными поделками всегда так, особенно если они позиционируются как ПК-геймпады. В особо тяжелых случаях такой геймпад может работать одновременно по трем протоколам: HID, XBox (разные его версии) и direct input. Естественно, это не может работать адекватно практически нигде.

Khnazile ★★★★★
()
Ответ на: комментарий от Khnazile

да не, норм, обалденный, сойдёт. Я купил тупо попробовать что это такое. Ибо 20 лет только на клаве играл, а тут такой кайф за копейки) да и смысла нет тратиться на безделушки, когда долгов под 20 тысяч

понятное дело, что качественные геймпады лучше

кстати щас покопался в нём и поорал с того, что вместо букв A B X Y написаны цифры, и если смотреть на цвета этих цифр, то получается, что A B сверху, а X Y снизу. Это просто ор какой-то, ведь у всех геймпадов наоборот – X Y сверху, а A B снизу :D

iwantpizza
() автор топика
Ответ на: комментарий от iwantpizza

Для Windows есть программы, позволяющие транслировать нажатия с геймпада по любому протоколу, что является спасением для владельцев «безродных» геймпадов. Например, x360ce, который позволяет транслировать нажатия через Xinput.

Leupold_cat ★★★★★
()
Последнее исправление: Leupold_cat (всего исправлений: 1)
Ответ на: комментарий от iwantpizza

Суть проблемы в том, что количество и назначение осей/кнопок стандартизировано (для ПК) только начиная с контроллеров Xbox 360. Соответственно, если геймпад работает по други протоколам, то там возможна различная наркомания. А еще есть китайские контроллеры, которые работают по протоколу оригинального xbox, у которого все кнопки могут регистрировать усилие нажатия.

Khnazile ★★★★★
()
Ответ на: комментарий от Leupold_cat

тоже такое нагуглил, да… Слава богу мне не пришлось танцевать с этим и всё теперь работает; повезло. На линь-то кстати нет x360ce. Как же это всё страшно выглядело…

iwantpizza
() автор топика
Ответ на: комментарий от Khnazile

Блин, вот долго щас думал; поставить X Y B A как во всех нормальных джойстиках, или сделать по наркоманскому расположению цветов на этом китайском ноунейме B A Y X

В итоге понял, что единственный способ понять, что от меня хочет игра, – взглянуть на цвет клавиши) ТАКОЙ КАЙФ!

iwantpizza
() автор топика
Последнее исправление: iwantpizza (всего исправлений: 1)
Ответ на: комментарий от iwantpizza

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

Leupold_cat ★★★★★
()
Ответ на: комментарий от Leupold_cat

Такие бывают вообще? Если с клавы играть, в какой-то момент столкнёшься с тем хардвэрным ограничением, где одновременно не зажмёшь 3-4 клавиши к примеру. Мне кажется, все игры худо-бедно поддерживают клаву. Ну, на PC.

iwantpizza
() автор топика
Ответ на: комментарий от iwantpizza

В PS/2 клавиатурах стандартом не ограничивается количество одновременно нажатых клавиш, впрочем, и требования делать такие клавиатуры нет.
В USB клавиатурах максимально можно нажать 6 клавиш, не считая модификаторов. Из-за этого «игровые» клавиатуры выглядят для системы как 5-6 отдельных устройств, подключенных через хаб.

Khnazile ★★★★★
()
Ответ на: комментарий от iwantpizza

Такие бывают вообще?

Да, и их очень много.

Если с клавы играть, в какой-то момент столкнёшься с тем хардвэрным ограничением, где одновременно не зажмёшь 3-4 клавиши к примеру.

Все верно, если играть на одной клавиатуре, а не на двух разных. Но кого это останавливает? Да и если дело происходит, например, на работе, то вторую клавиатуру всегда найти легче, чем геймпад.

Leupold_cat ★★★★★
()
Последнее исправление: Leupold_cat (всего исправлений: 2)
Ответ на: комментарий от Khnazile

It depends. Вот интересное видео по этому поводу https://www.youtube.com/watch?v=2lPzTU-3ONI tl;dr: в Das Keyboard можно сделать, чтобы нажатия передавились в виде единой битовой маски с состоянием всех клавиш, а не в виде списка кодов с максимальной длиной 6.

anonymous
()
Ответ на: комментарий от anonymous

Можно сделать все что угодно, но единственный boot protocol который 100% работает везде поддерживает только 6. Зачем производителю рисковать?

Khnazile ★★★★★
()
Ответ на: комментарий от Khnazile

Это да. Поэтому и сделано, что по умолчанию выбирается 6-key rollover, и есть возможность переключить на n-key rollover.

Я к тому, что можно реализовать n-key rollover разными способами.

anonymous
()

Defender Game Master G2

Не xbox совместимый, наслаждайтесь сношением с настройкой в играх. Хотя в стиме для каждой игры можно настроить раскладку.

xDShot ★★★★★
()
Ответ на: комментарий от xDShot

толку-то от индивидуально-игровых настроек в стиме — там ведь всё равно пресеты от комьюнити для иксбокса да для стимконтроллера, а не для китайского нонейма. Имхо, настроил один раз в игре самой, не в стиме, и бед не знаешь

iwantpizza
() автор топика
Ответ на: комментарий от iwantpizza

ведь всё равно пресеты от комьюнити для иксбокса да для стимконтроллера

Неверно. Эти конфигурации в большинстве случаев взаимозаменяемые если не говорить о всяких гиро и тачпадах контроллеров от сони.

в игре самой, не в стиме

Неверно. Стиминпут является централизированным API. В настройках стима настраивается раскладка контроллера. В дальнейшем в играх можно применить общий шаблон xbox совместимого, либо назначить индивидуально для нужной игры кнопки.

xDShot ★★★★★
()
Ответ на: комментарий от xDShot

Тогда стоп. Я правильно понимаю, что говоря «не иксбокс совместимый» ты имел в виду, что в играх за пределами стима он не будет работать из коробки?

iwantpizza
() автор топика
Ответ на: комментарий от iwantpizza

С нативными играми - надеяться что там sdl2, тогда через SDL_GAMECONTROLLERCONFIG переменную можно замаппить раскладку.

Последний wine вроде через sdl2 работает, если нет то через x360ce сношаться если игра работает только с xinput девайсами.

xDShot ★★★★★
()
Ответ на: комментарий от iwantpizza

Даже так:

xboxdrv \
        --evdev "$EVENT" \
        --detach-kernel-driver \
        --mimic-xpad \
        --force-feedback  \
        --type "xbox360" \
        --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RZ=x2,ABS_Z=y2,ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \
        --axismap -Y1=Y1,-Y2=Y2 \
        --evdev-keymap   BTN_TOP=x,BTN_TRIGGER=y,BTN_THUMB2=a,BTN_THUMB=b,BTN_BASE3=back,BTN_BASE4=start,BTN_BASE=lt,BTN_BASE2=rt,BTN_TOP2=lb,BTN_PINKIE=rb,BTN_BASE5=tl,BTN_BASE6=tr 

? Вместо $EVENT только /dev/input/event? своего пада пропиши.

Или запусти xboxdrv c параметром --device-by-id и подсунь id своего пада (смотри в lsusb).

Vochatrak-az-ezm ★★
()
Ответ на: комментарий от Vochatrak-az-ezm

Так ещё не пробовал, потому что не уверен, что раскладка клавиш будет понятной мне и работающей. Щас работает, не трогаю, хаха

iwantpizza
() автор топика
Ответ на: комментарий от iwantpizza

А вообще, я бы посоветовал купить пад с аналоговыми стикими и (очень желательно) работающий через xinput.

Vochatrak-az-ezm ★★
()
Ответ на: комментарий от iwantpizza

Ну так раскладка задается в –evdev-absmap и –evdev-keymap Там кстати надо убрать из скрипта маппинг стиков, у тебя то их нет.

P.S. В некоторых редких случаях может помочь dumbxinputemu.

Vochatrak-az-ezm ★★
()
Ответ на: комментарий от chenbr0

Чушь, дешевые китайские пады поддерживающие xinput, работают искаропки.

Тут проблема не в цене, проблема именно в dinput, который даже в Винде не работает.

Vochatrak-az-ezm ★★
()
Ответ на: комментарий от Vochatrak-az-ezm

Я правильно понимаю, у меня dinput? Потому что я уже совсем запутался с dinput/xinput и joystick_api/evdev_api; (ещё и с fna/sdl, версиями sdl, jsX/eventX)

iwantpizza
() автор топика
Последнее исправление: iwantpizza (всего исправлений: 1)
Ответ на: комментарий от iwantpizza

Да, ты понимаешь правильно.

Есть 2 Виндовых API Xinput и Dinput. Фактически в Линуксе оба варианта геймпадов работают с evdev (с joystick_api тоже, но кому он нужен…). Только вот «стандартная» раскладка кнопок есть только у xinput, dinput всегда придется настраивать под конкретный геймпад, плюс игры в Вайне его практически не поддерживают.

Vochatrak-az-ezm ★★
()
Ответ на: комментарий от Vochatrak-az-ezm

У меня в dead cells всё идеально работает к примеру, но в iron snout после долгих колупаний геймпад работает секунды две-три и больше не реагирует. А если не колупаться, то вообще не подхватывается игрой. Я вот думаю, это сама игра что-то не поддерживает? Если да, то что именно?

iwantpizza
() автор топика
Ответ на: комментарий от iwantpizza

Да черт ее знает… Но тебе только xboxdrv или какой-то другой эмулятор геймпада ковырять.

Можешь конечно забиндить клавиши клавиатуры на кнопки геймпада (через antimicro например), но это «такое-себе».

Vochatrak-az-ezm ★★
()
Ответ на: комментарий от Khnazile

у которого все кнопки могут регистрировать усилие нажатия.

Это у дуалшоков старых так.

Суть проблемы в том, что количество и назначение осей/кнопок стандартизировано (для ПК) только начиная с контроллеров Xbox 360

Нет такого стандарта. Ты говоришь о начале распространения xinput, суть существования которого - поломать совместимость со сторонними геймпадами. С ними одинаково не работают что дуалшоки, что китайские пады.

altwazar ★★★★
()
Ответ на: комментарий от iwantpizza

На линь-то кстати нет x360ce.

Он давно уже не нужен, даже под виндой. Настройка падов через стим позволяет делать тоже самое, только проще. Под линуксом есть xboxdrv, но он теперь тоже не нужен. Если по какой-то причине стим не подходит, то можно замаскировать пад под xbox по старинке: https://forum.ubuntu.ru/index.php?topic=236415.0

altwazar ★★★★
()
Ответ на: комментарий от iwantpizza

Я вот думаю, это сама игра что-то не поддерживает? Если да, то что именно?

Ух. Тут бывает много вариантов. Самая частая беда - у тебя в системе видно несколько «геймпадов» (например, у меня педалька определяется как геймпад), а стим использует только первый.

Глубоко не копал, но при поверхностном взгляде в iron snout проблемы с геймпадами в linux-версии игры, а при запуске через протон всё работает.

altwazar ★★★★
()
Ответ на: комментарий от Vochatrak-az-ezm

Чушь, дешевые китайские пады поддерживающие xinput, работают искаропки.

Тут всё не так просто. Иногда встречаются странные вещи (левый и правый курки на одной оси, одновременно не работают), а некоторые xinput-игры работают исключительно с родным проводным xbox падом.

altwazar ★★★★
()
Ответ на: комментарий от iwantpizza

На счет нескольких геймадов не точно написал. Не стим использует первый, а некоторые игры. Для этого я правами прятал от пользователя /dev/input/ файлы, которые были связаны с «левыми» геймпадами.

С iron snout это не помогло. Но под протом геймпад завелся. В стиме была включена поддержка геймпада.

altwazar ★★★★
()
Последнее исправление: altwazar (всего исправлений: 1)
Ответ на: комментарий от altwazar

некоторые xinput-игры работают исключительно с родным проводным xbox падом.

Если пад поддерживает xinput, то он поддерживает xinput. Игра не знает какой именно пад ты подключил.

Vochatrak-az-ezm ★★
()
Ответ на: комментарий от altwazar

Та же проблема с крестовиной (3 секунды работает, потом перестаёт), а всё остальное кроме неё заработало в протоне

iwantpizza
() автор топика
Ответ на: комментарий от iwantpizza

Всё. Как я понял, с этого момента это уже не проблема игры, а проблема того, что моя крестовина прикидывается невесть чем

iwantpizza
() автор топика
Ответ на: комментарий от iwantpizza

Гениально. Я абсолютно всё понял. У меня есть крестовина, которая прикидывается осью. Чтобы это работало, в стиме пришлось выставить эту крестовину как оси левого стика. Именно для Iron Snout пришлось вымышленный стик заставить прикидываться крестовиной. С этого момента работает идеально))))))

iwantpizza
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.