У этой программы всего одна функция: отключить Joy-Cons и другие официальные контроллеры Nintendo Switch.
По какой-то странной причине Nintendo не позволяет отключать контроллеры Switch. Они просто остаются в спящем режиме, который полностью разряжает батарею примерно за неделю или две.
Однако контроллеры можно «выключить» (перевести обратно в режим низкого энергопотребления) с помощью HID-команд через Bluetooth. Это практически полностью останавливает разрядку аккумулятора.
ИСПОЛЬЗУЙТЕ НА СВОЙ СОБСТВЕННЫЙ РИСК! Я не несу никакой ответственности за то, что произойдет с вашим контроллером, компьютером или чем-либо еще. Несмотря на то, что для этого используется команда HID, встроенная в прошивку контроллера (подкоманда 0x08), это недокументированная функция и не поддерживается Nintendo, поэтому вы можете действовать самостоятельно. Насколько я знаю, Nintendo официально использует его только для однократного отключения режима низкого энергопотребления, когда он новый.
Я тестировал это несколько раз с несколькими устройствами всех контроллеров из приведенного выше списка.
Контроллеры Famicom должны работать так же, как контроллеры NES, но я их не проверял.
Контроллеры Sega Genesis на данный момент не поддерживаются, так как у меня нет ни одного из них для тестирования.
Неофициальные контроллеры не поддерживаются.
У меня нет большого опыта в написании C/C++ или обратном проектировании контроллеров, поэтому я основан на работе других.
Первоначально начинался как форк https://github.com/CTCaer/jc_toolkit, но после пары переписываний он уже не похож на него.
HID-команды: https://github.com/dekuNukem/Nintendo_Switch_Reverse_Engineering.
Большая помощь с кодом HID: https://github.com/shinyquagsire23/HID-Joy-Con-Whispering.
Некоторые из контроллеров, которые я первоначально отключил с полностью или почти полностью заряженной батареей в 2021 году, теперь начинают разряжаться и нуждаются в подзарядке. Поэтому я бы оценил около 2-3 лет автономной работы в выключенном состоянии. Чтобы контроллеры оставались выключенными, заряжайте их с помощью зарядного устройства и/или зарядного устройства USB-C. Подключение их к коммутатору немедленно включает их снова.
Для обеспечения максимального срока службы аккумуляторных элементов я бы рекомендовал заряжать их на 50–60 % один раз в год и, возможно, проводить полный цикл зарядки/разрядки, а также для калибровки процента заряда батареи: использовать до тех пор, пока батарея не разрядится -> полностью зарядить -> использовать. пока уровень заряда батареи не достигнет около 60%, и выключите его. Хранение их в холодильнике (2-8°C) также помогает. Не замерзай.
Дополнительную информацию о литиевых батареях можно найти в Battery University: https://batteryuniversity.com/article/bu-808-how-to-prolong-lithium-based-batteries.