Вопрос или проблема
У меня есть ноутбук с GNU/Linux Debian 12, на котором я установил SuperTux Kart с помощью APT. Я хочу, чтобы два человека могли играть в SuperTux Kart на одном компьютере, используя две отдельные клавиатуры, с одинаковыми клавишами для действий/движений. (Одна клавиатура встроена в ноутбук, а другая подключена через USB.) Это является проблемой, потому что, хотя я превращаю две клавиатуры в отдельные контроллеры в SuperTux Kart, управление все еще конфликтует. Другими словами, обе клавиатуры рассматриваются как одна, даже если они указаны как отдельные контроллеры в SuperTux Kart. Как я могу сделать так, чтобы вторая клавиатура рассматривалась как отдельный контроллер? Я не против сборки из исходников или установки пакетов APT, но не хочу устанавливать предварительно скомпилированные бинарные файлы из других источников.
ОС: Debian GNU/Linux 12 (bookworm) x86_64
Ядро: 6.1.0-28-amd64
Версия SuperTux Kart: 1.4
Ответ или решение
Использование второго клавиатуры как отдельного игрового контроллера в SuperTux Kart на Debian 12 может представлять собой техническую задачу из-за того, что по умолчанию система объединяет разные клавиатуры в один ввода. Однако, при правильном подходе, это техническое ограничение может быть обойдено. Рассмотрим пошаговое руководство, как этого можно добиться.
Теория
В Debian и других подобных системах, устройства ввода, такие как клавиатуры, управляются через subsystems input и device aggregation в X Server или Wayland. Это означает, что независимо от того, сколько клавиатур подключено к системе, все они по умолчанию рассматриваются как одно устройство ввода. Поэтому, чтобы разделить их непосредственно в игре, необходимо выполнить дополнительную настройку.
SuperTux Kart поддерживает использование разных контроллеров, но для клавиатур они загружаются как одно устройство. Чтобы превратить вторую клавиатуру в отдельный контроллер, необходимо определить её в системе как отельное устройство ввода и научить систему игнорировать её как часть общего ввода. Это можно сделать с помощью программного обеспечения, такого как xinput
или с использованием виртуальных устройств с evdev
.
Пример
-
Определение устройств ввода с помощью xinput
Убедитесь, что обе клавиатуры правильного обнаружены системой. Откройте терминал и введите команду:
xinput list
Эта команда отобразит список подключенных устройств ввода. Вам нужно найти идентификаторы для обеих клавиатур.
-
Использование устройств через evdev
Мы можем использовать драйвер evdev для создания отдельных устройств на уровне операционной системы.
Убедитесь, что у вас установлен
evdev
:sudo apt update sudo apt install xserver-xorg-input-evdev
Затем создайте новую конфигурацию устройств, например, файл
/etc/X11/xorg.conf.d/90-keyboard.conf
. В этом файле можно определить каждую клавиатуру отдельно. -
Создание правила Udev для разделения клавиатур
Создайте правило в
/etc/udev/rules.d/99-keyboard.rules
, чтобы убедиться, что система идентифицирует и разделяет клавиатуры. Используйте ID клавиатуры, найденные с помощьюxinput
.Пример правила:
ACTION=="add", KERNEL=="event*", ATTRS{name}=="Your USB Keyboard Name", ENV{ID_INPUT_KEYBOARD}="1"
-
Использование Joy2Key для эмуляции игрового контроллера
Joy2Key позволяет перенаправлять нажатия клавиш на оси и кнопки контроллера, создавая эффект использования клавиатуры как отдельный геймпад.
Установите Joy2Key:
sudo apt install joy2key
Затем создайте конфигурацию для маппинга клавиш клавиатуры на кнопки контроллера.
-
Запуск игры с учетом новой конфигурации
Перезапустите систему или службу ввода, а затем запустите SuperTux Kart. Проверьте в настройках игры, что оба устройства распознаны как отдельные контроллеры.
Применение
Применяя вышеописанные шаги, вы сможете настроить вашу игру так, чтобы обе клавиатуры были обработаны как отдельные контроллеры. Это позволяет двум игрокам использовать одинаковую раскладку клавиш без взаимных конфликтов. Данная настройка требует определённого технического навыка, особенно в понимании работы с Xorg и конфигурацией udev. Однако, это даёт гибкость в управлении устройствами ввода, что будет полезно не только для игр, но и для других приложений, где требуется специфика работы с несколькими устройствами.
Таким образом, через вышеописанные методы, можно эффективно разделить обработку ввода от двух клавиатур, обеспечив независимое и удобное управление в SuperTux Kart, что откроет путь к комфортной совместной игре на одном устройстве.