Linux: condividi la tastiera sulla rete


12

Come suggerisce il titolo, voglio usare una tastiera remota localmente. La tastiera remota dovrebbe essere utilizzabile in un TTY e, se possibile, anche nell'X-Server. Esistono driver (moduli del kernel) che emulano una tastiera "falsa" con trasparenza di rete?

Risposte:


16

L'ho scoperto da solo.

Per prima cosa assicurati di aver caricato il modulo del kernel evdev su entrambe le macchine.

Sul computer remoto si esegue:

$ cat /dev/input/by-path/platform-i8042-serio-0-event-kbd | nc <IP> 4444

E sul client:

$ nc -l -p 4444 > /dev/input/by-path/platform-i8042-serio-0-event-kbd

(Nota: se stai usando netcat da netcat-openbsd, ad esempio in Ubuntu o Fedora, non usare '-p')

Funziona perfettamente, indipendentemente dal fatto che io sia in un TTY o in X.org. E funziona senza alcun ritardo!

Sfortunatamente anche tutti i tasti vengono digitati sul computer remoto. C'è un modo per disabilitarli temporaneamente mentre nc è in esecuzione? Ho pensato di fare qualcosa come far funzionare "cat -" sul computer remoto, ma un Ctrl-C lo farebbe finire naturalmente.


2
Ho avuto più fortuna con nc -l 4444, senza il -p. Secondo man nc, -pè esplicitamente vietato in combinazione con -l. Altrimenti questa è una soluzione fantastica e proprio quello di cui avevo bisogno :)
Magnus Hoff,

1
Ti incoraggio vivamente a usarlo su una connessione protetta o localmente (anche se non è nemmeno sicuro). C'è snetcat, ('netcat sicuro') che può funzionare se importi un certificato (vai, cercalo su Google :-). Inoltre, accetta la tua soluzione, questa domanda è ancora "aperta".
pruzinat,

sarebbe maggiore se supporta il copia e incolla !!
Chenming Zhang,

Soluzione incredibile! Sono impressionato che tu sia riuscito a capirlo. Hai trovato una soluzione per disabilitare l'output su una macchina mentre è in esecuzione sull'altra?
Cestarian

7

Synergy condividerà una tastiera sulla rete tra più macchine. Se non fa direttamente quello che vuoi, sono sicuro che ci sarà del codice che ti faciliterà la configurazione.


Synergy + è un "fork" di sinergia che viene ancora mantenuto per le correzioni di bug. Inoltre, la sinergia rapida è disponibile in alcuni repository di pacchetti Debian e fornisce un wrapper GUI per la sinergia.
Giosia

3
In realtà Synergy dipende dall'X-Server. Ho bisogno di una soluzione che funzioni in un TTY però. Se sapessi come emulare i tasti premuti in un TTY, proverei a scrivere da solo una piccola applicazione. Purtroppo non sono riuscito a trovare nulla di prezioso su Google. Qualcuno può darmi qualche suggerimento?
timn

5

Dai un'occhiata a Synergy .

Synergy è un software gratuito e open source che ti consente di condividere facilmente mouse e tastiera tra più computer, in cui ogni computer ha il proprio display. Non è richiesto alcun hardware speciale, tutto ciò che serve è una rete locale. Synergy è supportato su Windows, Mac OS X e Linux. Reindirizzare il mouse e la tastiera è semplice come spostare il mouse dal bordo dello schermo.

Synergy


0

Il suggerimento sopra di usare nc (netcat) non funziona per me.

Posso aprire il flusso di input usando questo comando:

nc -l -p 4444 > /dev/input/by-path/platform-i8042-serio-0-event-kbd

Mi viene negato il permesso, anche se lo faccio come sudo. La macchina di destinazione ha una installazione di Linux davvero vecchia, quindi forse i file del dispositivo / dev / input erano di sola lettura quando.

Sono stato in grado di risolvere questo problema utilizzando x2x, tuttavia, e il risultato è molto intuitivo.

Devi fare "xhost +" sul computer di destinazione e usare anche gdmsetup per abilitare le connessioni remote (questo rimuove il flag -nolisten per X la prossima volta che gdm avvia una sessione X).

Successivamente, xserver è completamente aperto per le connessioni remote e x2x può connettersi ad esso dal computer di origine (tastiera)

x2x -to 192.168.1.3:0

La cosa interessante di x2x è che ti dà una piccola finestra di controllo sul computer di origine e gli eventi della tastiera vengono inviati alla destinazione solo quando quella finestra è focalizzata. Questo è un modo molto utile per farlo (sto scrivendo questa risposta dalla macchina sorgente in questo momento, e nessuna pressione di tasti vaganti sta raggiungendo la macchina target, perché ho la finestra di controllo disattivata). Inoltre, facendo clic sul centro della finestra di controllo si avvia anche l'inoltro degli eventi del mouse e il clic con 2 pulsanti termina l'invio degli eventi del mouse. Inoltre, quando si abilita l'inoltro del mouse con un clic nella finestra di controllo, TUTTI gli eventi della tastiera vengono inviati alla destinazione e nessuno alla sorgente. Pertanto, ALT-TAB viene inviato alla destinazione senza sfocare la finestra di controllo sul computer di origine.

Ho desktop virtuali abilitati sul computer di origine, quindi attingo solo la finestra di controllo x2x su un desktop distante e ci vado solo quando devo controllare il computer di destinazione.

Questa versione della soluzione è a livello X, dove la risposta sopra è a livello di dispositivo Linux. Naturalmente, questo non funzionerà affatto se non stai eseguendo X sia sul target che sul sorgente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.