Настройка геймпада для Linux

Обновлено: 02.07.2024

Получите полный доступ к Retro Gaming Hacks и более чем 60 000 другим играм с бесплатной 10-дневной пробной версией O'Reilly.

Есть также прямые онлайн-мероприятия, интерактивный контент, материалы для подготовки к сертификации и многое другое.

Замените эту клавиатуру новым джойстиком .

С появлением устройств с универсальной последовательной шиной (USB) казалось, что настоящая кроссплатформенная технология plug-and-play доступна каждому пользователю компьютера. Ну, кроме пользователей Linux. Но не волнуйтесь — использовать игровой USB-контроллер под Linux не так уж и сложно. (Да, даже если это коврик Microsoft Sidewinder.)

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

Теперь откройте терминал, станьте пользователем root и перейдите в каталог, в котором установлены исходные коды вашего ядра (почти всегда /usr/src/linux ). Теперь запустите процесс настройки ядра на основе меню, выполнив команду: make menuconfig .

Предупреждение

Обратите внимание, что этот хак предполагает, что вы используете ядро ​​Linux 2.6.x; если вы работаете с ядром 2.4.x, это все равно будет работать, но меню конфигурации ядра будет немного другим. Если вы используете ядро ​​2.2.x, вам, вероятно, следует обновиться как минимум до 2.4.x, прежде чем пытаться использовать этот хак.

В главном меню с помощью клавиши со стрелкой вниз прокрутите вниз до пункта «Драйверы устройств» (см. рис. 4-55) и нажмите Enter.

Прокрутка до драйверов устройств

Рисунок 4-55. Переход к драйверам устройств

В меню «Драйверы устройств» выберите «Поддержка устройств ввода». Прокрутите вниз до «Интерфейс джойстика», и если вы не видите значок или M > сразу слева, нажмите клавишу M, чтобы включить его как модуль (это будет означать, что он скомпилирован в ядро ​​​​статически, что обычно не то, что вы хотите). Теперь ваш экран должен выглядеть примерно так, как показано на рис. 4-56.

Теперь прокрутите вниз до параметра «Джойстики» и нажмите «Return», чтобы войти в меню «Джойстики». Это приведет к отображению еще 22 пунктов меню (опять же, начиная с ядра 2.6.10). Включите сборку каждого из них как модуля (выделив параметр с помощью клавиш со стрелками и затем нажав M), чтобы ядро ​​могло загрузить соответствующий модуль для вас (не беспокойтесь о раздувании — одна из прекрасных особенностей модулей заключается в том, что они может загружаться только по мере необходимости, поэтому сборка модуля для аппаратного обеспечения, которого у вас нет, допустима). Когда вы включаете «Устройства I-Force», под ним будут отображаться еще две опции: «USB-джойстики и рули I-Force» и «Последовательные джойстики и рули I-Force». Используйте пробел, чтобы включить их оба (опять же, это ничего не добавит к вашему ядру, это просто настройка модуля). Когда вы закончите, ваш экран будет выглядеть примерно так, как показано на рис. 4-57.

Поддержка устройств ввода

Рисунок 4-56. Поддержка устройств ввода

Параметры джойстика

Рисунок 4-57. Параметры джойстика

Наконец, если у вас геймпад или джойстик старой школы без USB, нажмите Escape, чтобы выйти из меню джойстиков и вернуться к поддержке устройств ввода, затем выберите аппаратные порты ввода-вывода и нажмите клавишу «Ввод». Прокрутите вниз до параметра «Поддержка Gameport» и нажмите клавишу M, чтобы включить его как модуль. Это откроет шесть новых опций (по крайней мере, шесть в ядре 2.6.10, последняя версия на момент написания этой статьи) для поддержки различных типов игровых портов. Вы должны включить их все как модули.

Теперь нажмите клавишу Escape, чтобы выйти из меню аппаратных портов ввода-вывода, и еще раз, чтобы вернуться в меню драйверов устройств. Прокрутите вниз до раздела «Поддержка USB» и нажмите «Ввод». Используйте клавишу M, чтобы включить создание «Поддержки USB на стороне хоста» в качестве модуля. Это откроет совершенно новый список параметров, первым из которых должны быть подробные отладочные сообщения USB. Я бы порекомендовал использовать пробел, чтобы включить его, чтобы подсистема USB выбрасывала кучу вещей в системный журнал сообщений всякий раз, когда находила новое USB-устройство и т. д. Это может быть очень полезно для того, чтобы заставить ваши устройства работать, и вы всегда можете отключить его и перекомпилировать модуль, если решите, что вам больше не нужно засорение журнала.

В разделе «Разные параметры USB» используйте клавишу пробела, чтобы активировать параметр файловой системы USB-устройства.В разделе «Драйверы хост-контроллера USB» включите модули для всех трех типов HCD — обратите внимание, что вам, вероятно, не следует включать ни один из параметров, отмеченных как (ЭКСПЕРИМЕНТАЛЬНЫЙ), для модуля поддержки EHCI HCD (USB 2.0). В разделе «Устройства ввода USB» включите «Поддержка USB-устройств с интерфейсом пользователя (полная HID)» в качестве модуля и включите его параметры «Поддержка входного уровня HID» и «/dev/hiddev необработанная поддержка HID-устройства». На этом этапе ваш экран должен выглядеть примерно так, как показано на рис. 4-58.

Меню поддержки USB

Рисунок 4-58. Меню поддержки USB

Теперь нажмите Escape, чтобы вернуться в меню "Драйверы устройств", затем нажмите еще раз, чтобы вернуться в главное меню. Нажмите клавишу Escape в последний раз, чтобы выйти из меню конфигурации. Вас спросят: «Хотите ли вы сохранить новую конфигурацию ядра?» Нажмите Enter, чтобы выбрать Да. Теперь вы вернетесь в командную строку. Чтобы собрать новые модули и установить их, запустите команду make modules modules_install . Процесс сборки будет держать вас в курсе того, что он делает.

Процесс сборки ядра версии 2.4.x и более ранних использовался для отображения всего этого великолепного компилятора, из-за которого вы выглядели как настоящий 1337 h4x0r, особенно если у вас были прозрачные окна терминала с зеленым текстом на черном фоне, но это больше относится к теме Linux Desktop Hacks , написанной Джоно Бэконом и Николасом Петрели (O'Reilly).

По завершении вы вернетесь в командную строку (не ждите сообщения о том, что все прошло нормально — в мире Unix об успехе обычно ничего не слышно).

Теперь запустите команду lsmod и проверьте ее вывод. Если вы не видите модуль с именем ehci_hcd или uhci_hcd , вам нужно загрузить модуль драйвера USB-хоста прямо сейчас. Если у вас есть USB 2.0, вам нужно запустить: modprobe ehci_hcd. Ваш контроллер USB 1.x, вероятно, является UHCIhost, поэтому запустите: modprobe uhci_hcd (если это не сработает, попробуйте: modprobe ohci_hcd ). Запустите lsmod еще раз, и вы должны увидеть какой-либо модуль драйвера хоста, который вы только что загрузили, и usbcore где-то в выводе. Теперь загрузите модуль драйвера USB HID (Human Interface Device): modprobe usbhid. Последним шагом является загрузка универсального модуля драйвера джойстика: modprobe joydev. Если у вас есть навороченный джойстик, которому нужен собственный драйвер (вы заметили название своего джойстика при включении модулей джойстика?), используйте modprobe для его загрузки (вы можете запустить ls /lib /modules/`uname -r`/kernel/drivers/input/joystick/ для просмотра всех доступных драйверов).

Это позволит вам узнать, что ядро ​​обнаружило ваш джойстик. Нажмите Ctrl-C, чтобы остановить запись файла журнала, затем выполните: ls -l /dev/js0 . Вы должны увидеть что-то вроде:

Если ls не вернет ошибку, все должно быть готово к использованию джойстика в Linux!

Получите ретро-игровые лайфхаки прямо сейчас с онлайн-обучением O’Reilly.

Члены O’Reilly проходят онлайн-обучение в режиме реального времени, а также получают книги, видео и цифровой контент от более чем 200 издателей.

Если вам нравится играть в игры на Linux с помощью геймпада вместо обычной системы ввода с клавиатуры и мыши, для вас есть несколько полезных приложений. Многие компьютерные игры изначально поставляются без поддержки контроллера, в основном из-за характера и жанра игры. Например, стратегические игры требуют от вас микроуправления ресурсами и часто содержат множество элементов пользовательского интерфейса и всплывающих подсказок. Поддержка контроллера в таких случаях — последнее, что хотели бы добавить разработчики. Однако, несмотря на то, что игра может не поддерживать геймпады, неофициально добавить поддержку контроллера можно. В этой статье перечислены некоторые приложения, которые позволяют переназначать привязки клавиш к игровому контроллеру, а также переназначать существующие сопоставления геймпада.

QJoyPad

QJoyPad – это бесплатное графическое приложение с открытым исходным кодом, которое позволяет сопоставлять события клавиатуры и мыши с игровым контроллером. Проще говоря, игру для Linux, которая не поддерживает какой-либо конкретный игровой контроллер, можно заставить работать с геймпадом с помощью QJoyPad.

  • Несколько профилей, упрощающих управление сопоставлениями и переключение между ними.
  • Режим кнопки «Турбо» или «Быстрая стрельба».
  • Закрепленный режим для имитации поведения «Нажмите и удерживайте».
  • Автоматически определяет кнопки и оси геймпада
  • Поддерживает управление мышью с помощью джойстиков.
  • Поставляется с полной поддержкой командной строки для тех, кто предпочитает интерфейс командной строки.
  • Поддержка настройки чувствительности джойстиков.
  • Поставляется с множеством предустановленных алгоритмов для управления чувствительностью и ускорением курсора мыши.
  • Режим быстрой установки, позволяющий одновременно обнаруживать и устанавливать отдельные ключи.

Чтобы установить QJoyPad в Ubuntu, выполните следующую команду:

Выполните приведенную ниже команду, чтобы запустить QJoyPad (или используйте средство запуска приложений):

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

Запуск QJoyPad без панели задач создаст маленькое окно, не содержащее ничего, кроме значка приложения. Если щелкнуть правой кнопкой мыши по этому значку, станут видны все параметры меню, доступные на панели задач.


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


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

Инструмент геймпада SDL2

SDL2 Gamepad Tool — это бесплатное приложение с открытым исходным кодом, позволяющее настраивать кнопки игрового контроллера с помощью простого в использовании графического интерфейса. Как следует из названия, он работает только для игр, использующих SDL2 API для поддержки контроллера (большинство родных игр для Linux).

Используя базу данных сопоставления геймпада, доступную здесь, оно автоматически настраивает сопоставление для большинства контроллеров. Однако, если сопоставления вашего игрового контроллера не отображаются в приложении, вы можете создать для него новые сопоставления, нажав кнопку «Создать новое сопоставление». Вы также можете изменить предварительно определенные сопоставления для любого контроллера, используя тот же процесс.

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

Вы можете скачать геймпад SDL2 здесь.


Если вы удовлетворены сопоставлениями, вы можете включить их для игр двумя способами. Нажмите «Установить сопоставление как переменную среды», чтобы установить эти сопоставления для всей системы для всех игр.

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

Например, команда сопоставления в моей системе выглядит так:

Контроллер SC

SC Controller – это приложение GTK3, которое позволяет создавать назначения кнопок для контроллера Steam, геймпада DualShock 4, контроллера Xbox и других подобных геймпадов. Главной особенностью этого приложения является его способность настраивать расширенные сопоставления геймпада, которые эквивалентны встроенному инструменту настройки клиента Steam. Проще говоря, драйвер пользовательского режима / приложение с графическим интерфейсом SC Controller позволяет настраивать геймпады без необходимости установки клиента Steam (также нет необходимости иметь учетную запись Steam). Как и QjoyPad, это приложение позволяет сопоставлять события клавиатуры и мыши с игровым контроллером.

Другие полезные функции SC Controller:

  • Поддержка конфигурации гироскопа
  • Быстрая стрельба или турборежим.
  • Поддерживает несколько профилей геймпада
  • Поддержка вибрации/вибрации
  • Макросы и эмуляция контроллера
  • Поддерживает экранную клавиатуру

Образ приложения SC Controller для дистрибутивов Linux можно загрузить здесь. Пометьте файл как исполняемый и запустите его в терминале или дважды щелкните файл, чтобы начать настройку сопоставления геймпада.

Обратите внимание, что по какой-то причине SC Controller не может обнаружить мой контроллер DualShock 4, если я не запускаю его с root-доступом. Скорее всего потому, что он не может считывать события ввода с геймпада. Пользовательское правило udev, возможно, может решить эту проблему, но объяснение этого выходит за рамки этой статьи. Если у вас возникли проблемы с обнаружением геймпада в этом приложении, попробуйте запустить его от имени пользователя root.

Заключение

Это несколько приложений, которые можно использовать для создания сопоставлений для вашего игрового контроллера. В наши дни большинство известных брендов игровых контроллеров работают в Linux «из коробки». Однако, в отличие от консольных игр, игры для ПК редко предоставляют возможность переназначения геймпадов. Упомянутые выше приложения особенно полезны при использовании универсального контроллера, когда вы хотите изменить расположение существующих сопоставлений кнопок или когда вы хотите сопоставить события клавиатуры и мыши с игровым контроллером.

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

Общая конфигурация

Учитывая, что в большинстве устройств есть встроенные необходимые драйверы, единственное, что может потребоваться большинству людей, — это впоследствии откалибровать свой контроллер. Многие настольные компьютеры имеют встроенные модули конфигурации для выбора любых подключенных геймпадов и их калибровки. Процесс работы с рабочим столом KDE Plasma задокументирован здесь, но инструкции практически универсальны.

KDE_Gamepad_Configuration.jpg

Тестирование

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

Определенные устройства

Контроллеры Xbox и PlayStation

Контроллеры Xbox, Xbox 360 и Xbox One, включая множество подделок, должны работать без проблем. Сюда входят как проводные, так и беспроводные варианты, будь то с использованием официальных беспроводных приемников или через Bluetooth. Это также относится к контроллерам DualShock 3 и DualShock 4, которые обычно используются на консолях PlayStation.

В декабре 2020 г. Sony опубликовала официальный драйвер Linux для контроллера DualSense, поставляемого с PlayStation 5, который должен привести его поддержку к уровню предыдущих контроллеров Sony, но набор исправлений все еще находится на рассмотрении.

Контроллер Steam

Поддержка контроллера Steam осуществляется через пакет steam-devices. По умолчанию он работает в «режиме рабочего стола», где эмулирует ввод с помощью мыши. Он будет действовать как надлежащий контроллер только для игр, запущенных через Steam.

Контроллер Nintendo Switch Pro

Хотя поддержка еще не интегрирована в Debian, Steam реализует свой собственный драйвер с правилами udev, доступными в несвободном пакете steam-devices. Исправления для ядра для универсального драйвера Nintendo должны быть включены в Linux 5.16, и этот драйвер, скорее всего, станет доступен в Debian 12/Bookworm.

Устранение неполадок

Если у вас возникли проблемы с подключением контроллера Xbox One через Bluetooth, это может решить проблему, отключив ERTM. Это можно сделать один раз, запустив:

Если это исправит проблему, вы можете установить ее на постоянной основе, чтобы она не менялась при перезагрузке. Для этого создайте новый файл с помощью Nano (или предпочитаемого вами редактора):

И добавьте в новый файл одну строку:

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

Я планирую купить геймпад для игр на эмуляторах (таких как ZSNES), и я прочитал в сети несколько статей о том, что некоторые геймпады не работают в Linux, особенно при игре в игры через Wine. Но это только для Вина, верно? У меня в голове есть несколько вопросов, например:

Означает ли это, что все родные игры Ubuntu нормально работают с любыми геймпадами ИЛИ здесь тоже есть определенные геймпады? которые работают на Ubuntu (12.04).

Что, если я куплю случайный геймпад, скажем, Неофициальный/Поддельный, он распознает его как геймпад или Ubuntu его проигнорирует?

Если он будет распознан, как он/она найдет подходящие драйверы, необходимые для использования оборудования? ИЛИ драйвера не понадобятся и я смогу начать играть сразу после того, как купил и подключил?


5 ответов 5

Все геймпады/джойстики (5 или около того), которые я пробовал до сих пор, работали. Для настройки установите qjoypad или jstest-gtk. Qjoypad работал лучше, если я правильно помню.

Несмотря на то, что Turbo уже очень кратко упомянул qjoypad, стоит дать более развернутый ответ, так как самая последняя (и лучшая) версия нуждается в компиляции, так как ее нет в репозиториях, и в настоящее время на сайте нет доступных пакетов. либо. Во-вторых, существуют общие старые руководства для блогов, посвященные qjoypad, но было бы полезно иметь актуальное руководство для Ubuntu.

Введение

Что я делаю с Wine и Dosbox, когда возникают проблемы с играми и поддержкой контроллера (что бывает в большинстве случаев), так это использую такую ​​программу, как qjoypad. Эта утилита

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

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

Подборка

Установите зависимости (и необходимые для сборки, если необходимо) с помощью:

Вам понадобятся библиотеки QT для запуска программы и библиотеки разработки QT для компиляции qjoypad , как указано на официальном сайте, поэтому вы также должны установить весь комплект разработки QT с

Это очень важно, поскольку вы используете библиотеки QT для создания графического интерфейса.

Загрузите последнюю версию (на данный момент 4.10) с Sourceforge, а затем извлеките ее с помощью

Затем перейдите в эту папку, а затем перейдите в папку src и запустите

Настройка

Теперь подключите джойстик или геймпад и запустите с терминала qjoypad или выберите его в меню запуска.

Когда вы загрузите qjoypad (скриншот один), вы увидите номера кнопок, такие как кнопка 1, кнопка 2 и т. д. Если вы хотите увидеть, что они соответствуют на вашем джойстике, вы можете установить evtest и запустить evtest, а затем выбрать номер устройства вашего геймпада, чтобы получить следующую информацию:

Порядок кнопок здесь соответствует qjoypad , поэтому кнопка 1 qjoypad — это BTN_A на контроллере и т. д.

(Ваши макеты джойстика хранятся в ~/.qjoypad3, если вы хотите создать их резервную копию.)

В загружаемом файле с исходным кодом также содержится некоторая полезная информация о настройке и запуске qjoypad.

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

screenshot

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

screenshot

Заключительные мысли

Qjoypad должен быть запущен (с выбранным правильным игровым профилем для джойстика) при запуске dosbox или wine.

Сначала вам нужно определить привязки клавиатуры в той игре, в которой вы хотите использовать qjoypad . Очень часто в самой игре настройка должна быть установлена ​​на клавиатуру, а не на джойстик. Это то, что я обнаружил с играми Dosbox, и, вероятно, то же самое с играми Wine. Как для игр, так и для управления любой программой, работающей в X-окне, qjoypad — очень полезная утилита.

Читайте также: