Respostas:
Eu descobri por conta própria.
Primeiro, verifique se você carregou o módulo do kernel evdev nas duas máquinas.
Na máquina remota, você executa:
$ cat /dev/input/by-path/platform-i8042-serio-0-event-kbd | nc <IP> 4444
E no cliente:
$ nc -l -p 4444 > /dev/input/by-path/platform-i8042-serio-0-event-kbd
(Nota: Se você estiver usando o netcat do netcat-openbsd, por exemplo no Ubuntu ou Fedora, não use o '-p')
Funciona perfeitamente, independentemente de eu estar em um TTY ou no X.org. E corre sem demora!
Infelizmente, todas as chaves também foram digitadas na máquina remota. Existe uma maneira de desativá-los temporariamente enquanto o nc está em execução? Pensei em algo como rodar "cat -" na máquina remota, mas um Ctrl-C faria com que terminasse, é claro.
O Synergy compartilhará um teclado pela rede entre várias máquinas. Se ele não fizer diretamente o que você deseja, tenho certeza de que existe um código que facilitará a configuração.
Dê uma olhada no Synergy .
O Synergy é um software gratuito e de código aberto que permite compartilhar facilmente o mouse e o teclado entre vários computadores, onde cada computador possui sua própria tela. Nenhum hardware especial é necessário, tudo o que você precisa é de uma rede local. O Synergy é suportado no Windows, Mac OS X e Linux. Redirecionar o mouse e o teclado é tão simples quanto mover o mouse para fora da borda da tela.
A sugestão acima de usar nc (netcat) não funciona para mim.
Eu posso abrir o fluxo de entrada usando este comando:
nc -l -p 4444 > /dev/input/by-path/platform-i8042-serio-0-event-kbd
Recebo permissão negada, mesmo que eu faça isso como sudo. A máquina de destino tem uma instalação Linux realmente antiga, então talvez os arquivos do dispositivo / dev / input tenham sido somente leitura quando.
Consegui resolver esse problema usando x2x, no entanto, e o resultado é muito fácil de usar.
Você precisa executar o "xhost +" na máquina de destino e também usar o gdmsetup para habilitar conexões remotas (isso remove o sinalizador -nolisten do X na próxima vez que o gdm iniciar uma sessão do X).
Depois disso, seu xserver está totalmente aberto para conexões remotas e o x2x pode se conectar a ele a partir da máquina de origem (teclado)
x2x -to 192.168.1.3:0
O interessante do x2x é que ele oferece uma pequena janela de controle na máquina de origem e os eventos do teclado são enviados apenas ao destino quando essa janela é focada. Essa é uma maneira muito útil de fazer isso (estou digitando esta resposta da máquina de origem no momento e não há pressionamentos de tecla perdidos atingindo a máquina de destino, porque a janela de controle está fora de foco). Além disso, clicar no centro da janela de controle também inicia o encaminhamento de eventos do mouse, e clicar com 2 botões termina o envio de eventos do mouse. Além disso, quando você ativa o encaminhamento do mouse com um clique na janela de controle, TODOS os eventos do teclado são enviados ao destino e nenhum à origem. Portanto, o ALT-TAB é enviado ao destino sem desfocar a janela de controle na máquina de origem.
Eu tenho áreas de trabalho virtuais ativadas na máquina de origem, então apenas coloco a janela de controle x2x em uma área de trabalho distante e só vou lá quando preciso controlar a máquina de destino.
Esta versão da solução está no nível X, onde a resposta acima está no nível do dispositivo Linux. Obviamente, isso não funcionará se você não estiver executando o X no destino e na origem.
nc -l 4444
, sem o-p
. De acordo comman nc
,-p
é explicitamente proibido em combinação com-l
. Caso contrário, esta é uma solução fantástica e apenas o que eu precisava :)