Linux: Compartilhar teclado pela rede

12

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

    
por timn 08.11.2009 / 22:41

4 respostas

16

Eu descobri por conta própria.

Primeiro, verifique se você carregou o módulo do kernel evdev em ambas as máquinas.

Na máquina remota que 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ê está usando o netcat do netcat-openbsd, por exemplo no Ubuntu ou no Fedora, não use o '-p')

Funciona perfeitamente, não importa se estou em um TTY ou no X.org. E corre sem demora!

Infelizmente, todas as chaves são digitadas na máquina remota também. Existe uma maneira de desativá-los temporariamente enquanto o nc está em execução? Eu pensei em somehting como correr "gato -" na máquina remota mas um Ctrl-C terminaria claro.

    
por 14.11.2009 / 23:35
7
O

Synergy irá compartilhar um teclado na rede entre várias máquinas. Se não fizer diretamente o que você quer, tenho certeza de que existe um código que facilita a configuração.

    
por 08.11.2009 / 23:34
5

Dê uma olhada em Sinergia .

Synergy is Free and Open Source Software that lets you easily share your mouse and keyboard between multiple computers, where each computer has its own display. No special hardware is required, all you need is a local area network. Synergy is supported on Windows, Mac OS X and Linux. Redirecting the mouse and keyboard is as simple as moving the mouse off the edge of your screen.

    
por 12.01.2010 / 07:12
0

A sugestão acima de usar o 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

Eu recebo permissão negada, mesmo que seja como sudo. A máquina de destino tem uma instalação do Linux realmente antiga, então talvez os arquivos de dispositivos / dev / input sejam somente de leitura desde quando.

Eu consegui resolver esse problema usando o x2x, no entanto, e o resultado é muito fácil de usar.

Você precisa fazer "xhost +" na máquina de destino e também usar gdmsetup para habilitar conexões remotas (isso remove a sinalização -nolisten para X na próxima vez que o gdm iniciar uma sessão 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 legal do x2x é que ele fornece uma pequena janela de controle na máquina de origem, e os eventos de teclado são enviados apenas para o destino quando essa janela está focada. Esta é uma maneira muito prática de fazer isso (estou digitando essa resposta da máquina de origem agora, e nenhum pressionamento de tecla está atingindo a máquina de destino, porque eu tenho a janela de controle des-focada). Além disso, clicar no centro da janela de controle começa a encaminhar os eventos do mouse também, e o clique com 2 botões encerra o envio de eventos do mouse. Além disso, quando você ativa o encaminhamento de mouse com um clique na janela de controle, TODOS os eventos de teclado são enviados para o destino e nenhum para a origem. Assim, o ALT-TAB é enviado para o destino sem desfocar a janela de controle na máquina de origem.

Eu tenho desktops virtuais habilitados na máquina de origem, então eu simplesmente 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. É claro que isso não funcionará se você não estiver executando o X no destino e na origem.

    
por 14.07.2016 / 21:16