Переслать ввод с помощью мыши и клавиатуры в сеанс X

13

Я получаю доступ к своему Пи через SSH.

Моя сеть слишком медленная, чтобы пересылать рабочий стол Pi обратно на мой ноутбук, поэтому к моему Pi подключен монитор. Когда я startxчерез Putty, я вижу рабочий стол на моем Pi. Все хорошо.

Однако я ничего не могу сделать с этим рабочим столом, так как все, что у меня есть, - это мышь и клавиатура моего ноутбука.

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

ACarter
источник
Если вы все равно подключаете монитор, почему бы не подключить клавиатуру и мышь? Обычно вы используете ssh, когда у вас нет доступа к самому PI.
Эш Бурлаченко
@ У меня нет клавиатуры. Я знаю, что они дешевые и все такое, но так будет легче ...
ACarter
Если у вас только одна клавиатура и мышь, возможно, имеет смысл установить KVM-переключатель, чтобы вы могли переходить туда-сюда.
Кибби
Я уверен, что я писал об этом где-то раньше.
Jivings
@ Kibbee Я думал, ты не можешь использовать KVM-переключатель с ноутбуком?
ACarter

Ответы:

12

Вы можете использовать отличный инструмент под названием x2x. По сути, это рассматривает монитор, подключенный к удаленному устройству (Raspberry Pi), как второй Xэкран для существующего сеанса, как если бы у вас было два подключенных монитора.

Установите x2xна обоих устройствах:

sudo pacman -S x2x         # Arch Linux
sudo apt-get install x2x   # Debian/Raspbian 

Настройте SSH:

На Raspberry Pi отредактируйте /etc/ssh/sshd_configи добавьте / раскомментируйте следующую строку:

X11Forwarding yes

Затем перезапустите sshсервер.

SSH к Pi с вашего другого устройства и запустите x2x:

ssh -X 192.168.0.70 'x2x -east -to :0'

Замените IP адресом вашего Raspberry Pi.

Теперь вы сможете перемещать мышь между двумя сеансами X, перемещая мышь с экрана вправо (восток).

Jivings
источник
При выполнении этого на Windows и Ubuntu, я получаю ошибку, похожую на x2x - error: can not open display :0. Я установил x2x на Pi и Ubuntu, а SSH на Pi.
ACarter
@ACarter Я не думаю, что вы можете задействовать Windows (если вы не используете xming), так как для этого требуется сеанс X, запущенный на каждом конце.
Jivings
Нужно ли явно запускать сеанс X в Ubuntu?
ACarter
@ACarter Да, он рассматривает соединение как расширение вашего существующего X-сеанса.
Jivings
1
@ACarter Я сожалею об этом. Это может быть что-то делать с DISPLAYпеременной. Попробуйте набрать echo $DISPLAYв терминале и замените команду :0in x2xэтим выводом.
Jivings
10

Синергия может сделать это довольно хорошо

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

Джон Ла Рой
источник
Как ты построил это для Пи?
HeatfanJohn
@HeatfanJohn, у распбиана это есть в репо
Джон Ла Руи
Ах sudo apt-get install synergy... круто!
HeatfanJohn
4

Быстрый Google в конечном итоге привел меня сюда, и после быстрого теста это сработало для меня.

Короче нужно настроить xrdp

sudo apt-get install xrdp

После установки он заставит службу rdp запускаться при загрузке, поэтому перезапустите RPi. После завершения загрузки RPi вы сможете подключиться к RPi через встроенное (или любое другое стороннее) приложение удаленного рабочего стола Windows.

Эш Бурлаченко
источник
Спасибо за ваш ответ, это аккуратное удаленное решение, но идея в том, что я вижу рабочий стол на экране, подключенный к Pi, но я могу вводить данные на этот рабочий стол с клавиатуры моего ноутбука.
ACarter
1

Старая нить ... Я знаю.

Я написал вызываемую утилиту fauxcon, которая перенаправляет вашу клавиатуру (а вскоре и мышь) на консоль другого компьютера, в который вы заходите ssh'd.

Это позволяет вам просматривать дисплей вашего RPi (например) на телевизоре или мониторе и печатать так, как будто вы вошли в физическое устройство с помощью клавиатуры.

Учитывая, что все в моем доме беспроводное, довольно удобно сидеть на диване с ноутбуком и печатать, наблюдая, как это происходит на большом экране на RPi.

Обратная связь приветствуется,

fauxcon - Github - https://github.com/lornix/fauxcon

lornix
источник
1

Я был в подобной ситуации и не хотел использовать синергию, потому что я уже запускал синергию на компьютерах, на которые хотел послать клавиатуру, и на хосте не работало X. Я нашел uinput-mapper идеальным решением для моего случая.

Github: https://github.com/MerlijnWajer/uinput-mapper

Инструкции: http://blog.pi3g.com/2014/03/uinput-mapper-redirecting-keyboard-and-mouse-to-any-linux-system-using-a-raspberry-pi/

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

На компьютере нужна клавиатура:

# nc -l -p 7005|./input-create 

Затем на компьютере с клавиатурой:

# ./input-read -G /dev/input/eventX -D|nc 192.168.1.122 7005 

(где eventX - это ваша клавиатура, а 192.XXX - компьютер, на который вы отправляете клавиатуру)

У него не было проблем со скоростью, и все клавиши работают правильно. Я считаю, что это работает и с мышами, но мне не нужно было это использовать.

Penguins55
источник