Linux обнаруживает нажатие клавиши джойстика, даже если она не нажата
У меня очень странная проблема на моей машине с Arch Linux. Ну, у меня есть это в течение нескольких лет, но так как я не использую джойстики очень часто, я просто проигнорировал это в первый раз. Это очень странная проблема, поэтому читайте внимательно.
Недавно я пытался использовать свою панель Xbox 360, чтобы играть в некоторые старые игры PSX на эмуляторах (не волнуйтесь, это были оригинальные диски). Когда я пытался настроить пэд (используя модуль ядра xpad), эмулятор (PCSX работал изначально) продолжал сообщать мне, что правый триггер был нажат, поэтому настройка других клавиш невозможна (поскольку каждая клавиша, которую я пытался настроить, продолжала работать назначен на правый триггер).
Я попробовал другой эмулятор, ePSXe, работающий под Wine (а затем ePSXe native), и у меня возникла та же проблема. На данный момент я уже был крайне подозрительным, я использую оригинальный, отлично работающий проводной контроллер Xbox 360 и xpad, который используют все остальные, почему бы это не сработало? Тем не менее, я не сдался и попробовал альтернативные решения, такие как драйвер xboxdrv userspace. Неудачно. Затем я сдался, так как я не хотел терять сон из-за этого.
Недавно я купил USB-адаптер для контроллеров PS2. Я подключил его, попытался настроить на эму и... что? Мне постоянно говорят, что нажата кнопка R2 (которая находится в том же положении, что и правый триггер контроллера X360)! Каковы шансы, что два полностью работающих контроллера создают одну и ту же проблему при использовании разных драйверов и разных программ? По крайней мере, теперь стало ясно, что это не программное обеспечение планшета X360, не Xpad и не эмулятор.
Исключив всех этих подозреваемых, я могу придумать только одно объяснение, которое заключается в том, что модуль джойстика ядра не работает. Но я никогда не прикасался к файлам конфигурации, связанным с джойстиками, и мое ядро - это стандартное ядро из репозиториев Arch Linux. Можете ли вы помочь мне с моей проблемой? Я вложил много времени и денег на этот конкретный вопрос.
Почему он всегда обнаруживает одну и ту же клавишу (правый триггер /R2), даже если эти клавиши технически разные клавиши, поступающие с разных джойстиков с использованием разных драйверов (хотя я думаю, что xpad просто "переводит" ввод для модуля джойстика ядра)? Имейте в виду, что другие клавиши работают правильно, мне когда-то удавалось назначать их вручную, и каждый из них работал, пока я не назначил правильный триггер / R2 для какой-либо функции.
Почему это не сработает для меня, если я не использую модифицированное ядро и никогда не трогал конфигурационный файл, связанный с джойстиком? Кто-нибудь еще сталкивался с этой проблемой? Я даже не знаю, что печатать в поисковой системе. Большое спасибо за чтение.
1 ответ
Похоже, что могут быть проблемы с модулями xpad, но только в том, что он может не распознать ваш контроллер (ы), таким образом, он переходит в режим "неизвестного планшета".
Вы можете изменить работу модуля с тремя параметрами:
+ dpad_to_buttons: сопоставить D-PAD с кнопками, а не с осями для неизвестных площадок
+ triggers_to_buttons: сопоставление триггеров с кнопками, а не с осями для неизвестных пэдов
+ sticks_to_null: вообще не отображать палочки для неизвестных пэдов
Добавляя / изменяя строку в файле в /etc/modprobe.d, вы можете установить / сбросить эти параметры.
Создайте файл в /etc/modprobe.d, он ДОЛЖЕН заканчиваться на " .conf ", в противном случае он не будет распознан как файл конфигурации.
В этом файле поместите эту строку:
options xpad {option} [{option}...]
Добавьте или удалите параметры по желанию. Я бы порекомендовал закомментировать (#) строку, если в списке нет параметров, или просто полностью удалить файл.
Скорее всего, вам понадобится запустить модуль xpad, а затем modprobe, чтобы перезагрузить его с новыми опциями.
Если кажется, что параметры не распознаны, вам может потребоваться выполнить команду depmod -a, чтобы перестроить таблицы зависимостей модуля.
Вы можете увидеть, какие параметры действительны для модуля с помощью команды modinfo.