Linux: Compartilhe teclado pela rede

12

Como o título sugere, quero usar um teclado remoto localmente. O teclado remoto deve ser utilizável em um TTY e, se possível, no X-Server também. Existem drivers (módulos do kernel) emulando um teclado "falso" com transparência de rede?

timn
fonte

Respostas:

16

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.

timn
fonte
2
Eu tive melhor sorte com nc -l 4444, sem o -p. De acordo com man nc, -pé explicitamente proibido em combinação com -l. Caso contrário, esta é uma solução fantástica e apenas o que eu precisava :)
Magnus Hoff
1
É altamente recomendável que você o use em conexão segura ou local (embora isso também não seja seguro). Existe o snetcat ('secure netcat') que pode funcionar se você importar certificado (vá, pesquise no google :-). Além disso, aceite sua solução, esta pergunta ainda está 'aberta'.
pruzinat
seria maior se ele suporta copiar e colar !!
Chenming Zhang
Solução incrível! Estou impressionado que você tenha conseguido descobrir isso. Você encontrou uma solução para desativar a saída em uma máquina enquanto executava na outra?
Cestarian
7

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.

Carl Norum
fonte
O Synergy + é um 'fork' de sinergia que ainda é mantido para correções de bugs. Além disso, a sinergia rápida está disponível em alguns repositórios de pacotes Debian e fornece um wrapper de GUI para sinergia.
Josias
3
Na verdade, o Synergy depende do X-Server. Eu preciso de uma solução que funcione em um TTY. Se eu soubesse como emular pressionamentos de tecla em um TTY, tentaria escrever um aplicativo pequeno. Infelizmente, não consegui encontrar nada valioso no Google. Talvez alguém possa me dar algumas dicas?
TiMn
5

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.

Synergy

Nick Bolton
fonte
0

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.

Jason Rohrer
fonte