Как следует из названия, я хочу использовать удаленную клавиатуру локально. Удаленная клавиатура должна использоваться в TTY и, если возможно, также в X-сервере. Есть ли драйверы (модули ядра), эмулирующие "фальшивую" клавиатуру с прозрачностью сети?
4 ответа
Я выяснил это самостоятельно.
Сначала убедитесь, что вы загрузили модуль ядра 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 как на цели, так и на источнике.