Linux: поделиться клавиатурой по сети

12

Как следует из названия, я хочу использовать удаленную клавиатуру локально. Удаленная клавиатура должна использоваться в TTY и, если возможно, также в X-сервере. Есть ли драйверы (модули ядра), эмулирующие "фальшивую" клавиатуру с прозрачностью сети?

timn
источник

Ответы:

16

Я выяснил это самостоятельно.

Сначала убедитесь, что вы загрузили модуль ядра evdev на обе машины.

На удаленной машине вы запускаете:

$ cat /dev/input/by-path/platform-i8042-serio-0-event-kbd | nc <IP> 4444

И на клиенте:

$ nc -l -p 4444 > /dev/input/by-path/platform-i8042-serio-0-event-kbd

(Примечание: если вы используете netcat из netcat-openbsd, например, в Ubuntu или Fedora, не используйте '-p')

Он отлично работает независимо от того, нахожусь ли я в TTY или в X.org. И он работает без каких-либо задержек!

К сожалению, все ключи также набираются на удаленной машине. Есть ли способ временно отключить их во время работы nc? Я думал о чем-то вроде запуска «cat -» на удаленной машине, но Ctrl-C, конечно, завершит его.

timn
источник
2
Мне повезло больше nc -l 4444без -p. Согласно man nc, -pявно запрещено в сочетании с -l. В противном случае это фантастическое решение и именно то, что мне нужно :)
Магнус Хофф
1
Я настоятельно рекомендую вам использовать его через безопасное соединение или локально (хотя это тоже не совсем безопасно). Существует snetcat, ('безопасный netcat'), который может работать, если вы импортируете сертификат (иди, погуглите его :-). Также, пожалуйста, примите ваше решение, этот вопрос все еще «открыт».
празинать
было бы лучше, если бы он поддерживал копирование и вставку !!
Ченминг Чжан
Изумительное решение! Я впечатлен, что вам удалось выяснить это. Нашли ли вы решение для отключения вывода на одном компьютере во время работы на другом?
Cestarian
7

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

Карл Норум
источник
Synergy + - это «форк» синергии, который все еще поддерживается для исправлений. Кроме того, quick-synergy доступен в некоторых репозиториях пакетов Debian и предоставляет оболочку GUI для синергии.
Иосия
3
На самом деле Synergy зависит от X-Server. Мне нужно решение, которое работает в TTY, хотя. Если бы я знал, как эмулировать нажатие клавиш в TTY, я бы сам попытался написать небольшое приложение. К сожалению, я не смог найти ничего ценного в Google. Возможно, кто-то может дать мне несколько советов?
Тим
5

Посмотрите на Synergy .

Synergy - это бесплатное программное обеспечение с открытым исходным кодом, которое позволяет легко обмениваться мышью и клавиатурой между несколькими компьютерами, где каждый компьютер имеет собственный дисплей. Никакого специального оборудования не требуется, все, что вам нужно, это локальная сеть. Synergy поддерживается в Windows, Mac OS X и Linux. Перенаправление мыши и клавиатуры так же просто, как перемещение мыши за край экрана.

взаимодействие

Ник Болтон
источник
0

Вышеупомянутое предложение использовать nc (netcat) не работает для меня.

Я могу открыть поток ввода с помощью этой команды:

nc -l -p 4444 > /dev/input/by-path/platform-i8042-serio-0-event-kbd

Мне отказывают в разрешении, даже если я делаю это как sudo. На целевой машине установлена ​​действительно старая версия linux, поэтому, возможно, файлы устройства / dev / input были доступны только для чтения.

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

Вам нужно выполнить «xhost +» на целевой машине, а также использовать gdmsetup для включения удаленных подключений (это удаляет флаг -nolisten для X при следующем запуске gdm сеанса X).

После этого ваш xserver широко открыт для удаленных подключений, и x2x может подключиться к нему с компьютера-источника (клавиатуры)

x2x -to 192.168.1.3:0

Крутая вещь в x2x состоит в том, что он дает вам небольшое окно управления на исходном компьютере, и события клавиатуры отправляются на цель, только когда это окно сфокусировано. Это очень удобный способ сделать это (я набираю этот ответ с исходного компьютера прямо сейчас, и никакие случайные нажатия клавиш не достигают целевого компьютера, потому что у меня не сфокусировано окно управления). Кроме того, нажатие на центр окна управления также начинает пересылку событий мыши, а нажатие двух кнопок завершает отправку событий мыши. Кроме того, когда вы включаете переадресацию мышью щелчком в окне управления, ВСЕ события клавиатуры отправляются цели, а никакие - источнику. Таким образом, ALT-TAB отправляется на цель без расфокусировки окна управления на исходном компьютере.

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

Эта версия решения находится на уровне X, где ответ выше - на уровне устройства linux. Конечно, это не сработает вообще, если вы не используете X как для цели, так и для источника.

Джейсон Рорер
источник