JoyStick маппер с поддержкой клавиатурных комбинаций для Mac

Вопрос или проблема

Мне нужно приложение, подобное Enjoyable, Enjoy 2, Controllers и т. д. на Mac (не silicon, если это имеет значение), которое предоставило бы возможность отправлять комбинации клавиш (например, Cmd+Shift+A) с контроллера JoyStick.

Указанные приложения отправляют только одиночные клавиши/кнопки, например, на изображении ниже показан ввод одной клавиши Enjoyable.

введите описание изображения здесь

Похоже, что Enjoyable можно изменить, так как это проект с открытым исходным кодом:
https://git.yukkurigames.com/?p=enjoyable.git;a=tree

Запустите git clone http://git.yukkurigames.com/enjoyable.git

Я понимаю, что это не легкий ответ, но не уверен, что таковой имеется.

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

https://docs.folivora.ai/docs/1500_generic_devices.html

Вводы игрового контроллера BetterTouchTool

Мой сценарий при щелчке по Parse Device Input/Output выглядит так:

// Введите ваш сценарий анализа ввода здесь. 
// Не изменяйте сигнатуры функций
function analyzeDeviceInput(targetDevice, reportID, reportDataHex) {
      
    let reportBuffer = buffer.Buffer.from(reportDataHex, 'hex');
    // значения, которые вы видите выше, находятся в шестнадцатеричном формате. Чтобы прочитать такой байт
    // используйте readUInt8(index).
    if(reportBuffer.readUInt8(0) === 0x04) {
        log('триггер а!');
        bttTriggerDeviceTrigger(targetDevice, 'Abutton');
    }
    if(reportBuffer.readUInt8(0) === 0x02) {
        log('триггер b!');
        bttTriggerDeviceTrigger(targetDevice, 'Bbutton');
    }
    if(reportBuffer.readUInt8(0) === 0x08) {
        log('триггер x!');
        bttTriggerDeviceTrigger(targetDevice, 'Xbutton');
    }
    if(reportBuffer.readUInt8(0) === 0x01) {
        log('триггер y!');
        bttTriggerDeviceTrigger(targetDevice, 'Ybutton');
    }
    // Если вы хотите получить следующий отчет, даже если
    // данные не изменились, вызовите эту функцию:
    // bttGetNextEvenWithoutChange(targetDevice, reportID)
}

// Расширенные, необязательные. Используйте, если хотите вызывать команды, которые отправляют данные на
// устройство из заранее определенного действия BTT.
// См. https://docs.folivora.ai/1500_generic_devices.html
async function executeBTTCommand(targetDevice, commandName, commandInput) {
    log("выполнить команду: " + commandName)
    switch(commandName) {
        case "exampleCommand": {
            // отправить любую шестнадцатеричную строку на устройство
            let deviceResponse = await bttSendDataToDevice({
              BTTActionSendDataTargetDevice: targetDevice,
              BTTActionSendDataData: 'FEEDC0DE',
              BTTActionSendDataReportType: 1,
              BTTActionSendDataResponseType: -1,
              BTTActionSendDataResponsePrefix: ''
            }); 
            break;
        }
    }
    return 'выполнение ' + commandName + ' завершено'
}

Это контроллер, который я использовал:
Контроллер Nintendo Switch (проводной)

Ответ или решение

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

Функциональность и Проблема

Основная задача заключается в том, чтобы настроить джойстик для отправки комбинаций клавиш, таких как Cmd+Shift+A, вместо простой отправки отдельных нажатий клавиш. Это может быть полезно для пользователей, которым необходимо выполнять определённые действия в приложениях, не отвлекаясь на клавиатуру, или для геймеров, которым нужно быстро реагировать на игровые ситуации.

Возможные Решения

  1. Использование BetterTouchTool:
    BetterTouchTool (BTT) – это мощное приложение для настройки жестов и клавиатурных комбинаций на Mac. Оно может принимать входные данные от контроллеров игр, но требует некоторого программирования для реализации полноценной функциональности.

    • Скрипт для анализа ввода: Наличие возможности писать пользовательские скрипты в BTT позволяет настроить обработку различных входных данных. Пример вашего скрипта демонстрирует, как реагировать на нажатия кнопок контроллера, используя функции логирования и активации триггеров.

    • Пример использования:

      if(reportBuffer.readUInt8(первый индекс) === значение) {
       log('сообщение');
       bttTriggerDeviceTrigger(targetDevice, 'название триггера');
      }

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

  2. Модификация Enjoyable:
    Если вы обладаете навыками программирования, вы можете рассмотреть возможность модификации Enjoyable, так как оно является открытым проектом. Вы можете клонировать репозиторий и доработать его, добавив поддержку комбинаций клавиш.

    • Клонирование:

      git clone http://git.yukkurigames.com/enjoyable.git
    • Доработка: Изучите структуру кода и интегрируйте функции, которые позволят отправлять комбинации клавиш вместо одиночных нажатий.

  3. Дополнительные Программы:
    Поиск альтернативных программ, которые могут поддерживать джойстики и комбинации клавиш, может быть полезен. Некоторые приложения, такие как Joystick Mapper, иногда включают дополнительные функции. Однако стоит проверить их совместимость с вашим оборудованием и маком.

Заключение

Хотя не существует "из коробки" решения для полной поддержки комбинаций клавиш через джойстики на Mac, описанные выше подходы могут быть использованы для достижения желаемого результата. Использование BetterTouchTool с пользовательскими скриптами предоставляет гибкие возможности, позволяя настроить команды в соответствии с вашими потребностями. Альтернативно, модификация существующих open-source решений, таких как Enjoyable, может быть действенным способом добавить необходимую функциональность.

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

Оцените материал
Добавить комментарий

Капча загружается...