Ответы:
Я выяснил это самостоятельно.
Сначала убедитесь, что вы загрузили модуль ядра 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, конечно, завершит его.
Synergy разделит клавиатуру по сети между несколькими компьютерами. Если он не выполняет то, что вам нужно, я уверен, что там есть код, который облегчит вам настройку.
Посмотрите на Synergy .
Synergy - это бесплатное программное обеспечение с открытым исходным кодом, которое позволяет легко обмениваться мышью и клавиатурой между несколькими компьютерами, где каждый компьютер имеет собственный дисплей. Никакого специального оборудования не требуется, все, что вам нужно, это локальная сеть. Synergy поддерживается в Windows, Mac OS X и Linux. Перенаправление мыши и клавиатуры так же просто, как перемещение мыши за край экрана.
Вышеупомянутое предложение использовать 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 как для цели, так и для источника.
nc -l 4444
без-p
. Согласноman nc
,-p
явно запрещено в сочетании с-l
. В противном случае это фантастическое решение и именно то, что мне нужно :)