Перейти к содержанию

Альтернативные методы управления шлемом


Рекомендуемые сообщения

  • Модераторы

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

Ссылка на комментарий
Поделиться на другие сайты

Пока коллекционирую банальности и изобретаю велосипеды.
Подумал тут: "Если с контроллерами геморно через АПИ, что можно сделать без них?"
Тапы шлем, действительно не слышит: из инпутов есть только разъем наушников, да кнопки питания с громкостью. Тачскрин (INPUT_PROP_DIRECT) как бы тоже есть, но по ивентам судя, он не координатный - "одна большая кнопка". 

$ ls -l /dev/input
crw-rw---- 1 root input 13,  64 1970-05-04 21:16 event0
crw-rw---- 1 root input 13,  65 1970-05-04 21:16 event1
crw-rw---- 1 root input 13,  66 1970-05-04 21:16 event2
crw-rw---- 1 root input 13,  67 2024-07-07 09:07 event3
crw-rw---- 1 root input 13,  68 2024-07-08 02:00 event4

$ getevent -lp
add device 1: /dev/input/event4
  name:     "Device 0x4CBCE9E9E8D710A4"
  events:
    KEY (0001): KEY_FORWARD
  input props:
    INPUT_PROP_DIRECT
add device 2: /dev/input/event3
  name:     "anorak-max98388-snd-card AK4333 Headphone"
  events:
    SW  (0005): SW_HEADPHONE_INSERT   SW_LINEOUT_INSERT     SW_JACK_PHYSICAL_INS
  input props:
    <none>
add device 3: /dev/input/event2
  name:     "pmic_resin"
  events:
    KEY (0001): KEY_VOLUMEDOWN
  input props:
    <none>
add device 4: /dev/input/event1
  name:     "pmic_pwrkey"
  events:
    KEY (0001): KEY_POWER
  input props:
    <none>
add device 5: /dev/input/event0
  name:     "gpio-keys"
  events:
    KEY (0001): KEY_VOLUMEUP
  input props:
    <none>

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


Пока фантазируется, без АПИ придется победить минимум три вещи:
- включить "безконтроллерный" режим (белая точка и громкость, как "клик"),
- развернутые окна (обмануть, что шлем на голове),
- навести точку на нужное место и кликнуть на громкость.

Ссылка на комментарий
Поделиться на другие сайты

  • Модераторы

Мой список Keyevents, работающих на шлеме:

"key_home": "
adb shell input keyevent 3
"key_volume_up": "
adb shell input keyevent 24
"key_volume_down": "
adb shell input keyevent 25
"key_power": "
adb shell input keyevent 26
"key_enter": "
adb shell input keyevent 66
"key_menu": "
adb shell input keyevent 82
key_settings": "
adb shell input keyevent 176
"key_sleep": "
adb shell input keyevent 223
"key_wakeup": "
adb shell input keyevent 224
"key_soft_sleep": "
adb shell input keyevent 276
 

Ссылка на комментарий
Поделиться на другие сайты

  • Модераторы

Перебрал все возможные "устройства" в команде adb shell input:

    dpad
    keyboard
    mouse
    touchpad
    gamepad
    touchnavigation
    joystick
    touchscreen
    stylus
    trackball
 

а также пробовал tap и press, и также пробовал подключать физическую мышь, но увы - никаких нажатий по заданным координатам.

 

Проверялось с включенной опцией "Отображать нажатия" в меню {} Для разработчиков.

Нажатия лучами фиксируются нормально.

Ссылка на комментарий
Поделиться на другие сайты

  • Модераторы

Попробовал использовать для этого дела scrcpy.

Он прекрасно мапит (форвардит) и мышь по UHID:

scrcpy --no-video --no-audio --mouse=uhid --mouse-bind=++++

Вероятнее всего и клавиатуру тоже, но я пока не придумал, как ее использовать.

 

Но вот с нажатиями пока не срастается. Мышь появляется, все хорошо, (то есть та, которая в данный момент подключена к ПК, физическая) работает, нажимает кнопки в шлеме на панели и т.д..

Но по координатам кликать не хочет. Во-1, мышь перестает работать, когда убирается фокус с окна scrcpy на ПК - она переключается обратно на ПК, и во-2, даже после команды форвардинга мыши, на шлеме она появляется только тогда, когда физическую мышь немного подвигаешь. А команда, например, adb shell input source tap 350 550 идет сразу вслед за командой бинда мыши в scrcpy.

 

Правда, я не первый такой умный:

https://github.com/Genymobile/scrcpy/issues/579

 

Йеееееее!!!! С клавиатурой сработало.

Только нужно дваждый нажать кнопку Tab, а затем Enter.

 

p.s. Все оказалось гораздо проще, scrcpy не нужен:

adb shell input keyevent 61
ping localhost -n 2 1>nul

adb shell input keyevent 61
ping localhost -n 2 1>nul

adb shell input keyevent 61
ping localhost -n 2 1>nul

adb shell input keyevent 66

Ссылка на комментарий
Поделиться на другие сайты

  • 5 недель спустя...

Занимательный способ добраться до начинки на примере патчера для Битсейбера напрямую из браузера, работает через WebUSB .
https://mbf.bsquest.xyz/

Исходники: https://github.com/Lauriethefish/ModsBeforeFriday
Подробно по проекту не лазил, но например вот доступ к файловой системе, операции выгрузки-загрузки апк и прочие адб команды: ./ModsBeforeFriday-main/mbf-res-man/src/adb.rs

Изменено пользователем JustaJumbo
Ссылка на комментарий
Поделиться на другие сайты

  • Модераторы
4 часа назад, JustaJumbo сказал:

напрямую из браузера, работает через WebUSB

Интересный проект... Вот тоже многообещающая штука: WebADB

По возможностям стандартная и довольно куцая пока что, но в теории можно реализовать удаленное управление и настройку устройств.

Ссылка на комментарий
Поделиться на другие сайты

  • Модераторы

Кстати говоря, новый MQDH с кастингом творит что-то невероятное:

 

Причем шлем при этом может находиться в любом положении, хоть "вверх дном":

d.thumb.JPG.bd43d62bfa326603a795c2179f158932.JPG

 

MQDH при кастинге развернет его как надо, мордой вперед.

 

И управление там такое:

mqdh.webp.b8e4c8a12ad62c3809c49f967a543b7c.webp

 

 

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
×
×
  • Создать...

Важная информация

Правила пользования сайтом Условия использования