Обновить
4
Александр Прошанов@magrega

Frontend-разработчик с широким кругозором

Отправить сообщение

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

Но если ничего не получится толкового, то я попробую этот путь.

Да, я им в issues написал вчера)

Обновил статью, добавил в конце последние находки. Спасибо за ваше участие!

У меня получилось его вырубить!!!!!!!!!!!
Подход, скорее всего, нестабильный, и данные пакета поменяются после перезагрузки компа или просто сброса устройств, но я наконец-то смог отключить джойстик по беспроводу! Я взял команду отключения джойстика из Вайршарк, заменил состояние с 01 на 04 и он вырубился!!!

Завтра буду дальше исследовать, сегодня праздную день, когда меня отпустила моя шиза.

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

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

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

Целый день потратил на поиски нужного формата пакета. Безрезультатно. Чат говорит, что скорее всего команда 0x05, которая отвечает за состояние устройства, просто не разрешена драйвером, но я ему не верю, так как я отключаю джойстик GIP-командой при подключении по проводу. Возможно дело банально - нужно подобрать нужный формат команды, но пока не получается.

В общем, потратил вчера вечер, утром утро. Действительно, можно менять силу света LED-лампочки. Прикольно, меня тоже бесило, что сильно яркая.

Но как бы я не крутил командами, отключить не получается. У меня складывается впечатление, что те команды, которые отрабатывают, допустимы по GameInput, а управлением циклом питания видимо запрещено на уровне драйвера.

Я немного поработал с кодом, который вы дали, пытался вручную команды тоже отправлять, но ловлю ту же 87 ошибку. Неверный параметр.



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

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

Ого, это очень интересный виток развития всей этой темы. Заливайте, конечно. Посмотрим. Что вы имеете в виду под on/off? on/off подсветка клавиши Guide?

Да, в этом суть донгла. По сути разница между подключения по USB-проводу и подключению по донглу в том, что донгл шифрует данные, но пакеты те же работают. Потому по проводу можно команды передать, а по донглу нет, видимо, надо реверсить шифрование каким-то образом.

Интересная информация. Я сейчас изучаю именно вариант с GIP, при подключении по беспроводному адаптеру.

Насколько я знаю, при работе по блютуз - это совершенно другая история и данные там то ли шифруются, то ли передаются по-другому.

XUSB, насколько я знаю, это про старые джойстики иксбокс 360. Начиная с Xbox One, контроллеры работают по GIP. В случае с Series это подтвержается тем, что при работе по проводу USB команду из GIP-документации отрабатывают.

GipGameControllerProvider.SendMessage - я пробовал. Там нужно каким-то образом ждать, чтобы появился контроллер. Даже если он уже подключен к ПК на момент запуска кода с этим методом, джойстик все равно определяется позже и я не смог разобраться как правильно получать к нему доступ. Наверное, попробую еще раз на досуге. Но само пространство имен Windows.Gaming.Input.Custom, как я понял, больше для кастомных геймпадов, у которых подразумевается дополнительный функционал.

Это тоже описывается в документации. Если подключить джойстик по простому проводу, то можно регулировать яркость кнопки Guide, я пока экспериментировал, убавлял ее на 50-80%. Меня тоже беспокоит яркость, ядерная) Так что если научимся выключать джойстик, то научимся и регулировать свет)

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

К тому же, у меня довольно сложная домашняя система, разные аудиоустройства, три монитора и пр. Автоматизация уже необходимость, а не прихоть

Сейчас качаю навыки C#, чтобы методы GameInput поизучать лучше.

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

На авито можно с рук купить не очень дорого. Джойстик Series стоит 2-3 тыщи, правда еще свисток тоже в районе тысячи

Что вы имеете в виду, когда говорите "несложно"?

Информация

В рейтинге
1 360-й
Откуда
Россия
Зарегистрирован
Активность

Специализация

Фронтенд разработчик
Средний
От 250 000 ₽
Git
Английский язык