Linux: Chia sẻ bàn phím qua mạng


12

Như tiêu đề cho thấy, tôi muốn sử dụng một bàn phím từ xa cục bộ. Bàn phím từ xa phải có thể sử dụng được trong TTY và, nếu có thể, trong X-Server cũng vậy. Có trình điều khiển (mô-đun hạt nhân) nào mô phỏng bàn phím "giả" với độ trong suốt của mạng không?

Câu trả lời:


16

Tôi tự tìm ra nó.

Trước tiên hãy chắc chắn rằng bạn đã tải mô-đun hạt nhân evdev trên cả hai máy.

Trên máy từ xa bạn chạy:

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

Và trên máy khách:

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

(Lưu ý: Nếu bạn đang sử dụng netcat từ netcat-openbsd, ví dụ như trong Ubuntu hoặc Fedora, đừng sử dụng '-p')

Nó hoạt động hoàn hảo cho dù tôi đang ở trong TTY hay X.org. Và nó chạy không chậm trễ!

Thật không may, tất cả các phím được gõ trên máy từ xa là tốt. Có cách nào để vô hiệu hóa tạm thời chúng trong khi nc đang chạy không? Tôi đã nghĩ đến một số thứ giống như chạy "cat -" trên máy từ xa nhưng Ctrl-C sẽ làm cho nó kết thúc tất nhiên.


2
Tôi đã có may mắn hơn với nc -l 4444, mà không có -p. Theo man nc, -prõ ràng bị cấm kết hợp với -l. Nếu không thì đây là một giải pháp tuyệt vời và đúng như những gì tôi cần :)
Magnus Hoff

1
Tôi đặc biệt khuyến khích bạn sử dụng nó qua kết nối an toàn hoặc cục bộ (mặc dù điều đó cũng không thực sự an toàn). Có snetcat, ('netcat an toàn') có thể hoạt động nếu bạn nhập chứng chỉ (đi, google nó :-). Ngoài ra, vui lòng chấp nhận giải pháp của bạn, câu hỏi này vẫn là 'mở'.
pruzinat

Sẽ tốt hơn nếu nó hỗ trợ sao chép và dán !!
Chenming Zhang

Giải pháp tuyệt vời! Tôi ấn tượng bạn quản lý để tìm ra điều này. Bạn đã tìm thấy một giải pháp cho việc vô hiệu hóa đầu ra trên một máy trong khi chạy trên máy kia chưa?
Cestarian

7

Synergy sẽ chia sẻ một bàn phím qua mạng giữa nhiều máy. Nếu nó không trực tiếp làm những gì bạn muốn, tôi chắc chắn có mã ở đó sẽ giúp bạn dễ dàng thiết lập.


Synergy + là một "nhánh" của sức mạnh tổng hợp vẫn được duy trì cho các lỗi. Ngoài ra, khả năng tổng hợp nhanh có sẵn trong một số kho lưu trữ gói Debian và cung cấp trình bao bọc GUI cho sức mạnh tổng hợp.
Josiah

3
Trên thực tế Synergy phụ thuộc vào X-Server. Tôi cần một giải pháp hoạt động trong TTY. Nếu tôi biết cách mô phỏng các lần nhấn phím trong TTY, tôi sẽ cố gắng tự viết một ứng dụng nhỏ. Thật không may, tôi không thể tìm thấy bất cứ điều gì có giá trị trên Google. Có lẽ ai đó có thể cho tôi một số gợi ý?
hẹn giờ

5

Hãy nhìn vào Synergy .

Synergy là Phần mềm mã nguồn mở và miễn phí cho phép bạn dễ dàng chia sẻ chuột và bàn phím giữa nhiều máy tính, trong đó mỗi máy tính có màn hình riêng. Không cần phần cứng đặc biệt, tất cả những gì bạn cần là một mạng cục bộ. Synergy được hỗ trợ trên Windows, Mac OS X và Linux. Chuyển hướng chuột và bàn phím cũng đơn giản như di chuyển chuột ra khỏi cạnh màn hình của bạn.

Sức mạnh tổng hợp


0

Gợi ý trên về việc sử dụng nc (netcat) không hiệu quả với tôi.

Tôi có thể mở luồng đầu vào bằng lệnh này:

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

Tôi được phép từ chối, ngay cả khi tôi làm điều đó như sudo. Máy đích có cài đặt linux thực sự cũ trên nó, vì vậy có thể các tập tin thiết bị / dev / đầu vào đã chỉ đọc trở lại khi.

Tuy nhiên, tôi đã có thể giải quyết vấn đề này bằng x2x và kết quả rất thân thiện với người dùng.

Bạn cần thực hiện "xhost +" trên máy đích và cũng sử dụng gdmsetup để bật kết nối từ xa (thao tác này sẽ xóa cờ -nolisten cho X vào lần tiếp theo gdm khởi chạy phiên X).

Sau đó, xserver của bạn mở rộng cho các kết nối từ xa và x2x có thể kết nối với nó từ máy nguồn (bàn phím)

x2x -to 192.168.1.3:0

Điều thú vị về x2x là nó cung cấp cho bạn một cửa sổ điều khiển nhỏ trên máy nguồn và các sự kiện bàn phím chỉ được gửi đến mục tiêu khi cửa sổ đó được tập trung. Đây là một cách rất tiện lợi để thực hiện (Tôi đang gõ câu trả lời này từ máy nguồn ngay bây giờ và không có phím nhấn nào đi đến máy đích, vì tôi có cửa sổ điều khiển không tập trung). Ngoài ra, nhấp vào trung tâm của cửa sổ điều khiển cũng bắt đầu chuyển tiếp các sự kiện chuột và nhấp vào nút 2 kết thúc việc gửi các sự kiện chuột. Ngoài ra, khi bạn bật chuyển tiếp chuột bằng một cú nhấp chuột trong cửa sổ điều khiển, TẤT CẢ các sự kiện bàn phím được gửi đến mục tiêu và không có gì đến nguồn. Do đó, ALT-TAB được gửi đến mục tiêu mà không làm mờ cửa sổ điều khiển trên máy nguồn.

Tôi có máy tính để bàn ảo được bật trên máy nguồn, vì vậy tôi chỉ dán cửa sổ điều khiển x2x trên máy tính để bàn ở xa và chỉ đến đó khi tôi cần điều khiển máy đích.

Phiên bản của giải pháp này ở cấp độ X, trong đó câu trả lời ở trên là ở cấp độ thiết bị linux. Tất nhiên, điều này hoàn toàn không hoạt động nếu bạn không chạy X trên cả mục tiêu và nguồn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.