LINUX.ORG.RU

Имитатор мыши (и клавиатуры)

 ,


1

3

Я бы хотел такое устройство (маленький компьютер), которое могло бы изображать из себя «манипулятор мышь» для нескольких других компьютеров.

Кабели USB -> USB, допустим, можно найти. https://www.eldorado.ru/cat/detail/kabel-vention-usb-3-0-am-am-0-5-m-vas-a18-b050

Но что и как надо настроить в ядре, чтобы имитировать USB-устройство?

Если на маленьком компьютере поставить иксы для графики и на управляемом компьютере будут иксы, то x2x может помочь. https://github.com/dottedmag/x2x . Но это не на уровне ядра будет, а на уровне только иксов.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1 )

Я бы хотел такое устройство (маленький компьютер), которое могло бы изображать из себя «манипулятор мышь» для нескольких других компьютеров. Я думаю тебе надо искать что-то из embedded что умеет переключаться между USB host и USB peripheral режимами(так как usb протокол не симметричный). Тут более подробно: https://www.kernel.org/doc/html/v4.17/driver-api/usb/gadget.html

V1KT0P ★★ ()
Ответ на: комментарий от V1KT0P

надо искать что-то из embedded что умеет … USB peripheral режимам

Как искать такие устройства/адаптеры, на какие ключевые слова? Чтобы, например, оно втыкалось в PCIe и имело USB-выходы.

Einstok_Fair ★★☆ ()
Ответ на: комментарий от Einstok_Fair

Как искать такие устройства/адаптеры, на какие ключевые слова? Чтобы, например, оно втыкалось в PCIe и имело USB-выходы.

А для чего именно тебе это надо? Например если тебе надо управлять несколькими компами с одной клавиатуры и одной мыши, то тут можно найти подходящий KVM switch.
Если же надо программно одновременно посылать команды разным компам то тут зависит от того нужно готовое устройство или готов писать низкоуровневый код для какой-то arm платы.

V1KT0P ★★ ()
Ответ на: комментарий от V1KT0P

если тебе надо управлять несколькими компами с одной клавиатуры и одной мыши

Да

то тут можно найти подходящий KVM switch.

но нет. Я хочу управлять особоизвращённым способом, и обычный KVM-свитч мне не подойдёт.

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

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

А аппаратное решение мне нужно потому что на компах разные операционные системы.

Einstok_Fair ★★☆ ()
Последнее исправление: Einstok_Fair (всего исправлений: 2 )
Ответ на: комментарий от Einstok_Fair

Во-первых, опенсорс и бесплатно — не синонимы. Во-вторых, https://github.com/symless/synergy-core/blob/master/LICENSE (спойлер: GPLv2).

…В-третьих, ну выполни уже emerge synergy и успокойся.

beresk_let ★★★★★ ()
Последнее исправление: beresk_let (всего исправлений: 1 )
Ответ на: комментарий от Einstok_Fair

разные операционные системы

Не знаю как другие, но linux (Xorg) еще поддерживает устройства ввода на последовательном порту.
Связал два USB/UART-TTL шнурка, вставил, ввел (от root-а):

# inputattach --daemon --always --noinit --baud 19200 --microsoft /dev/ttyUSB0

В X-ах появилась мыша.
Запустил screen /dev/ttyUSB1 19200 и стал стучать по клаве - мышка иногда дергается :). Да, эмулятор надо где-то взять/написать.

Можно второй шнурок заменить bluepill-ом, будет универсальное решение (писать придется еще больше и под микроконтроллеры).

arson ★★★★★ ()
Ответ на: комментарий от Einstok_Fair

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

Теперь, когда ты доказал, что внешним устройством задача не решается, ставь давай synergy.

t184256 ★★★★★ ()
Ответ на: комментарий от t184256

внешним устройством задача не решается

Я в этом не уверен. Внешнее устройство же точно знает, какие координаты оно выдаёт. Что ещё нужно для счастья?

Einstok_Fair ★★☆ ()
Ответ на: комментарий от Einstok_Fair

Внешнее устройство же точно знает, какие координаты оно выдаёт.

В том-то и дело что не знает. USB HID сам ничего не отправляет это ОС запрашивает периодически данные от клавиатуры/мыши. И мышь передает не координаты а смещение координат и состояния клавиш. А ОС не отсылает мыши текущие координаты курсора.
Можно было бы попытаться хранить координаты в мышке и вычислять её если бы не три вещи:

  • Смещение мыши ОС умножает на свою константу, которая называется «скорость мыши». Каждый пользователь настраивает под себя.
  • Акселерация мыши, вроде во всех ОС сейчас включена эта фича. Чем быстрее двигаешь мышь тем на большее расстояние перемещается мышь на экране. И это ускорение мыши так-же настраивается.
  • Если я не ошибаюсь у каждой ОС свои алгоритмы акселерации мыши.

То-есть теоретически можно было-бы для KVM switch-а написать программу в которой были бы реализованы все алгоритмы акселерации мыши и конфигом прописывать конфигурацию мониторов. И при включении гарантировано уводить мышь влево-вверх для синхронизации реального положения мыши с рассчитанным. И скорее всего малейший лаг будет приносить рассинхронизацию.
Но это жуткий костыль который мало кто захочет реализовывать. Проще с каждой ОС передавать данные на KVM switch или обойтись вообще программным решением как Synergy.

V1KT0P ★★ ()
Ответ на: комментарий от Einstok_Fair

То ты лишишься как минимум акселлерации, поддержки нескольких устройств ввода, совместимости с экзотическими ОС, совместимости с софтом, который не умеет в тачскрины (типа кучи игр), последних ошметков простоты и остатков рассудка.

ЛОР сказал synergy - значит synergy.

t184256 ★★★★★ ()
Последнее исправление: t184256 (всего исправлений: 1 )
Ответ на: комментарий от t184256

ты лишишься как минимум акселлерации

программно иожно проэмулировать.

Реальная мышь включена в вундердевайс, он занимается акселерацией, а финальные посчитанные координаты пусть пропихивает через интерфейс тач-скрина.

и остатков рассудка

по этому поводу я уже давно не переживаю

Einstok_Fair ★★☆ ()
Ответ на: комментарий от Einstok_Fair

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

t184256 ★★★★★ ()
Ответ на: комментарий от Einstok_Fair

Что если имитировать не мышь, а тачскрин?

У него-то координаты абсолютные?

Да, идея с тачскрином интересная и координаты там абсолютные.
Правда сомневаюсь что есть готовые решения в виде подключения мыши которая притворяется несколькими тачскринами.
А так это интересная задача для реализации. Надо только подходящую плату поискать.
Хоты я бы делал эту задачу вот так:
Нашел бы подходящий USB dongle с WiFi/Bluetooth или дополнительным USB peripheral. Ибо вариант с PCI мне не нравится их и так всего несколько. Платы с большим количеством USB так-же искать надо и масштабируемость хреновая. А вот с USB dongle которые управляются по WiFi/Bluetooth/USB как по мне отличный вариант, можно масштабировать как угодно и управлять почти с чего угодно.

V1KT0P ★★ ()
Ответ на: комментарий от t184256

Что то типа такого, втыкаешь и управляешь через Bluetooth: https://wiki.makerdiary.com/nrf52840-mdk-usb-dongle/
Продаются даже в готовом корпусе: https://www.seeedstudio.com/nRF52840-MDK-USB-Dongle-w-Case-p-4094.html
Плюс какую-то девборду с двумя host usb куда подключить клавиатуру/мышь и какой-то канал настройки(usb peripheral или тот-же Bluetooth).
Только для этого надо будет прошивки писать, хоть и не сложные должны быть по идеи.

V1KT0P ★★ ()
Ответ на: комментарий от t184256

Ведро девайсов?

Несколько маленьких USB донглов и небольшая плата для их управления.

Незашифрованная радиосвязь?

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

Да хорош прикалываться, человек хочет synergy.

Если он хочет именно аппаратную реализацию то как по мне это самый простой способ.

V1KT0P ★★ ()
Ответ на: комментарий от Einstok_Fair

Оно бесплатное. Платные бинари и поддержка.

vitruss ★★★★ ()

Есть софт для передачи usb по сети. Через него можно передавать нужные команды эмулируя тач-девайс.

Deleted ()

Но что и как надо настроить в ядре, чтобы имитировать USB-устройство?

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

Можно взять к примеру, Beaglebone, там есть всё нужное для сабжа. А как конфигурировать ядро - гуглить по «usb gadgetfs»

Harald ★★★★★ ()
Ответ на: комментарий от Deleted

Софт можно ставить удаленно. Не знал ?

у меня физические мониторы. Поэтому удалённый софт - это другой юзкейс. Вот я не знал про твой сценарий и теперь только начал догадываться. Как, у тебя стал от этого длиннее опыт?

Einstok_Fair ★★☆ ()
Последнее исправление: Einstok_Fair (всего исправлений: 1 )
Ответ на: комментарий от Einstok_Fair

я не очень понимаю что ты хочешь сказать, задачу и ограничения.
подключенные мониторы никак не мешают, таким штукам как ssh или vnc, отключенные так же.

Deleted ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.