---
title: "Beamer là gì: Phần mềm chia sẻ chuột và phím giữa Mac và Windows"
description: "Cách Beamer đồng bộ chuột, bàn phím và clipboard giữa macOS, Windows và Linux qua giao thức mã hóa mạng nội bộ P2P, thay thế KVM switch cồng kềnh."
pubDate: "2026-10-25"
lang: "vi"
slug: "beamer-explained"
url: "https://hoangyell.com/vi/beamer-explained/"
author: "HoangYell"
translation_en: "https://hoangyell.com/beamer-explained/"
categories: ["Developer Tools"]
tags: ["beamer", "software-kvm", "developer-tools", "productivity", "macos", "windows"]
heroImage: "https://raw.githubusercontent.com/HoangGeek/store/main/webp/ai-beamer-explained-hero.webp"
---

Lập trình viên làm việc với hai máy tính song song luôn đối mặt với vấn đề bàn làm việc bừa bộn. Bạn dùng MacBook Pro để gõ code giao diện và họp hành vì máy chạy êm, pin bền. Ngay cạnh đó là dàn PC Windows hoặc máy Linux gắn card đồ họa rời để chạy mô hình AI cục bộ và render đồ họa.

Bàn làm việc nhanh chóng bị chiếm chỗ bởi hai bàn phím cơ, hai con chuột và mớ dây chuyển đổi USB lộn xộn.

Phần cứng KVM (bộ chuyển mạch chia sẻ phím chuột màn hình / Keyboard, Video, Mouse switch) giải quyết được phần nào nhưng chi phí đắt đỏ, làm trễ tín hiệu và dễ mất kết nối Bluetooth. Apple có Universal Control mượt mà nhưng khóa chặt trong macOS, không hỗ trợ Windows hay Linux. Các công cụ cũ như Barrier hay Deskflow lại đòi hỏi cấu hình IP thủ công, chứng chỉ TLS tự ký phức tạp và hay nghẽn bộ nhớ đệm clipboard.

Kỹ sư Toby Kalkman đã tạo ra [`kalkman-code/beamer`](https://github.com/kalkman-code/beamer): giải pháp KVM mã nguồn mở siêu nhẹ, không cần tài khoản, chia sẻ chuột và phím giữa Mac, Windows và Linux qua mạng Wi-Fi nội bộ.

## Tóm tắt (TL;DR)

> **Hộp Trả Lời Nhanh (Google Search Featured Snippet):**
> - **Beamer là gì?** Phần mềm KVM mã nguồn mở do Kalkman Code phát triển, giúp dùng chung một chuột và bàn phím để điều khiển liền mạch giữa máy tính Mac, Windows và Linux trong mạng nội bộ mà không qua máy chủ đám mây.
> - **Kiến trúc cốt lõi**: Giao thức Wire Protocol v6 sử dụng thuật toán trao đổi khóa X25519, hàm phái sinh khóa HKDF-SHA256, mã hóa từng gói tin ChaCha20-Poly1305 và cơ chế nhận diện lực đẩy chuột ở mép màn hình.
> - **Điểm đột phá**: Ghép đôi bằng mã số 6 chữ số thay vì gõ IP thủ công, truyền gia tốc chuột mượt mà, đồng bộ clipboard nạp trước chống bom nén bộ nhớ và chọn cổng mạng tránh xung đột WinNAT trên Windows.
> - **Kho mã nguồn**: [`kalkman-code/beamer` trên GitHub](https://github.com/kalkman-code/beamer) · Giấy phép GNU GPL-3.0.

Repository: [kalkman-code/beamer](https://github.com/kalkman-code/beamer)

***

## Bản đồ tư duy (Mô hình trực quan)

Dùng hai máy tính trên cùng một bàn mà thiếu phần mềm KVM giống như mở hai cuốn sổ tay đặt cạnh nhau, nhưng mỗi cuốn bị xích chặt vào một cây bút riêng. Mỗi khi đổi máy, tay bạn phải bỏ bút này xuống rồi với tay nhấc bút kia lên.

Beamer hoạt động như một băng chuyền nam châm ngầm. Khi con trỏ chuột chạm mép phải màn hình MacBook, phần mềm nhận diện lực đẩy, viền màn hình sáng nhẹ và chuyển ngay quyền điều khiển sang màn hình Windows.

Sơ đồ Markdy dưới đây mô tả chu trình vận hành: ghép đôi bằng mã 6 số, thỏa thuận khóa phiên tức thời và truyền tọa độ chuột cùng clipboard.

```markdy
scene duration=20 layout=LR width=1280 height=720
theme: light=doodle dark=nebula

user Dev "Lập trình viên / Chuột & Phím"
service Mac "Máy gửi (MacBook / Host A)"
queue LAN "Mạng nội bộ (TCP :24820)"
security Crypto "ChaCha20-Poly1305 & X25519"
service Win "Máy nhận (PC Windows / Host B)"
storage OS "Bộ nạp sự kiện hệ thống & Clipboard"

beat pairing "1. Bắt tay bảo mật & Thỏa thuận khóa":
  show $nodes stagger=60ms
  Dev -> Mac "Bấm ghép đôi và nhập mã 6 số"
  Mac -> LAN "Gửi yêu cầu ghép nối cổng 24821"
  LAN -> Win "Xác nhận mã số bảo mật"
  Mac -> Crypto "Tạo khóa HKDF từ X25519 tức thời"
  glow Crypto color=#3b82f6

beat stream "2. Đẩy mép màn hình & Mã hóa gói tin":
  Dev -> Mac "Đẩy chuột chạm mép màn hình"
  Mac -> Crypto "Đóng gói tọa độ với bộ đếm tuần tự"
  Crypto -> LAN "Truyền gói tin mã hóa ChaCha20 cổng 24820"
  LAN -> Win "Gửi dữ liệu đã xác thực đến máy nhận"
  glow LAN color=#eab308

beat inject "3. Giả lập phần cứng & Đồng bộ Clipboard":
  Win -> OS "Bắn sự kiện di chuột và nhấn phím"
  Win -> OS "Giải mã sẵn clipboard vào bộ nhớ RAM"
  glow OS color=#22c55e

player:
    playback:
      loop true
    controls:
      speed true
      speeds "0.25"
      interact true
      fullscreen true
      gif true
      theme true
    interaction:
      zoom true
      pan true
      click_to_play true
      double_click_to_reset true
      keyboard false
    chrome:
      badge true
      progress none
```

***

## Phần 1: Bế tắc phần cứng (Cơn ác mộng hai máy một bàn)

Kỹ sư phần mềm dùng nhiều máy tính vì nhu cầu kỹ thuật thực tế. Bạn code giao diện và chạy máy ảo iOS trên macOS vì máy mát và pin bền. Đồng thời, bạn cần chạy mô hình AI cục bộ hoặc biên dịch đồ họa nặng trên máy Windows gắn card đồ họa rời.

Các giải pháp cũ luôn bộc lộ nhược điểm:

1. **Bộ chia KVM phần cứng**: Giá từ vài triệu đến hàng chục triệu đồng, đi kèm mớ dây cáp rối rắm. Mỗi lần gạt công tắc chuyển máy, màn hình phải mất vài giây để nhận lại tín hiệu.
2. **Logitech Flow**: Yêu cầu mua toàn bộ chuột phím cùng hãng Logitech. Ứng dụng quản trị Logi Options+ viết bằng Electron là daemon (tiến trình chạy ngầm không có giao diện) tốn từ 300MB đến 500MB RAM và dễ bị khựng.
3. **Synergy, Barrier và Deskflow**: Phải nhập IP tĩnh, tự tạo chứng chỉ bảo mật và xếp lưới màn hình thủ công. Mỗi khi router cấp lại IP qua DHCP (giao thức tự động cấp phát địa chỉ IP nội bộ), kết nối sẽ đứt gãy.

Beamer xóa bỏ toàn bộ rào cản đó bằng liên kết ngang hàng gọn nhẹ và tự nhận diện thiết bị trong mạng cục bộ.

![Image](https://raw.githubusercontent.com/HoangGeek/store/main/webp/ai-beamer-explained-gallery-01.webp)

***

## Phần 2: Mổ xẻ Wire Protocol v6 (Cơ chế bắt tay và bảo mật ngầm)

Logic truyền thông của Beamer được định nghĩa trong `core/protocol.py`, tuân thủ chuẩn Wire Protocol v6 với cấu trúc ngang hàng độc lập.

### 1. Bắt tay X25519 tức thời và tính năng Forward Secrecy

Để tránh rủi ro lộ mật khẩu gõ phím khi truyền qua Wi-Fi, Beamer áp dụng nguyên lý Forward Secrecy (cơ chế đảm bảo phiên truyền quá khứ không bị giải mã dù khóa định danh bị lộ) qua thuật toán X25519 (thuật toán trao đổi khóa mật mã đường cong elip siêu tốc):

```text
Máy gửi A (Initiator)                                Máy nhận B (Responder)
       |                                                    |
       |  Lời chào: WIRE_MAGIC (BEAMY) + Phiên bản (6)      |
       |  + Tiền tố Nonce ngẫu nhiên (8 bytes)              |
       |  + Khóa công khai X25519 tức thời                  |
       | -------------------------------------------------> |
       |                                                    |
       |  Phản hồi: WIRE_MAGIC + Phiên bản + Tiền tố Nonce  |
       |  + Khóa công khai X25519 tức thời của B            |
       | <------------------------------------------------- |
       |                                                    |
       [ Tạo khóa phiên HKDF-SHA256 từ Token và X25519 ]    |
       [ Khởi tạo bộ đếm gói tin ChaCha20 bắt đầu từ 1 ]    |
```

Mỗi kết nối tạo một tiền tố ngẫu nhiên và cặp khóa X25519 tạm thời. Khóa phiên được phái sinh bằng HKDF-SHA256 (hàm phái sinh khóa mật mã an toàn). Từng khung dữ liệu gửi đi gồm: độ dài khung 4 bytes, bộ đếm tuần tự 4 bytes, và dữ liệu mã hóa ChaCha20-Poly1305 (thuật toán mã hóa dòng và xác thực dữ liệu siêu tốc). Máy nhận lập tức hủy mọi gói tin có bộ đếm không đúng thứ tự, ngăn chặn hoàn toàn tấn công phát lại.

### 2. Thu thập tọa độ vi mô cho chuột và bàn rê

Nhiều phần mềm cũ chỉ gửi tọa độ số nguyên thô, khiến con trỏ trên máy đích bị giật cục. Beamer giải quyết vấn đề này trong `MSG_MOUSEMOVE` bằng mảng tọa độ vi mô:

```python
# Trích từ core/protocol.py
elif kind == MSG_MOUSEMOVE:
    if not _int(data.get("dx"), -MOVE_MAX, MOVE_MAX) or not _int(data.get("dy"), -MOVE_MAX, MOVE_MAX):
        return None
    read.update(dx=data["dx"], dy=data["dy"])
    if "samples" in data:
        samples = data["samples"]
        # Xác thực mảng tọa độ vi mô để giữ gia tốc mượt mà
        if sum(sample[0] for sample in samples) != data["dx"] or sum(sample[1] for sample in samples) != data["dy"]:
            return None
        read["samples"] = samples
```

Cơ chế này giúp con trỏ giữ nguyên gia tốc và quán tính tự nhiên khi chuyển giữa macOS và Windows.

### 3. Đồng bộ Clipboard nạp trước và chống bom giải nén

Để tránh việc bấm dán ra nội dung cũ do trễ mạng, Beamer mã hóa và gửi gói tin clipboard (`MSG_CLIPBOARD`) đi trước gói tin chuyển tiêu điểm chuột. Khi chuột vừa sang màn hình bên cạnh, dữ liệu đã nằm sẵn trong bộ nhớ RAM máy đích.

Đồng thời, phần mềm kiểm soát nghiêm ngặt dung lượng ảnh chụp màn hình Retina (màn hình mật độ điểm ảnh siêu cao của Apple): văn bản tối đa 256KB, ảnh tối đa 8MB. Hàm `png_fits()` đọc trực tiếp byte tiêu đề để chặn các file có kích thước giải nén vượt quá `2^25` điểm ảnh (khoảng 33,5 triệu điểm ảnh), triệt tiêu nguy cơ tràn bộ nhớ RAM do bom nén dữ liệu.

***

## Phần 3: Góc khuất thực chiến (Những cái bẫy hệ điều hành)

Can thiệp vào tầng nhập liệu của ba hệ điều hành khác nhau luôn có những ràng buộc kỹ thuật cần lưu ý.

![Image](https://raw.githubusercontent.com/HoangGeek/store/main/webp/ai-beamer-explained-gallery-02.webp)

### 1. Bẫy cấp quyền TCC trên macOS buộc phải khởi động lại

Trên macOS, ứng dụng cần hai quyền trong Cài đặt hệ thống: **Accessibility** và **Input Monitoring**. Cơ chế TCC (hệ thống kiểm soát quyền bảo mật của macOS / Transparency, Consent, and Control) không tự cập nhật quyền cho tiến trình đang chạy. Bạn bắt buộc phải tắt hẳn Beamer rồi mở lại, nếu không chuột vẫn rê được nhưng bàn phím sẽ bị liệt hoàn toàn.

### 2. Lỗi chiếm dụng cổng mạng ngẫu nhiên của WinNAT trên Windows

Nhiều công cụ KVM cũ chạy cổng 51820 thường bị mất kết nối sau khi khởi động lại máy. Nguyên nhân do WinNAT (cơ chế dịch địa chỉ mạng nội bộ của Windows dùng cho WSL2) tự động chiếm dụng các dải cổng ngẫu nhiên từ 49152 đến 65535. Beamer ấn định cổng `DEFAULT_PORT = 24820` và `PAIRING_PORT = 24821` nằm dưới mốc 49152, hoàn toàn tránh được tranh chấp cổng mạng trên Windows.

### 3. Giới hạn bảo mật Wayland trên Linux

Trên Linux sử dụng Wayland (giao thức hiển thị đồ họa hiện đại thay thế X11), cơ chế bảo mật ngăn ứng dụng thông thường nghe lén bàn phím hoặc vẽ đè lên ứng dụng khác. Do đó, Beamer trên Wayland không thể hiển thị viền sáng mép màn hình, phụ thuộc vào portal `InputCapture` của `xdg-desktop-portal` và không thể kéo thả chuột qua mép khi đang giữ nút bấm.

### Thảo luận thực tế từ cộng đồng kỹ sư trên X

Trên mạng xã hội X, cộng đồng lập trình viên đánh giá cao sự gọn gàng của Beamer:

> Tôi tạo ra Beamer vì các công cụ KVM cũ quá rườm rà. Không cần tài khoản đám mây, không cần sinh chứng chỉ TLS, không lo xung đột cổng với WinNAT. Chỉ cần mã 6 số, mã hóa ChaCha20-Poly1305 từng frame và cử chỉ chuột mượt mà.
> - Toby Kalkman (@@kalkman-code) ([source](https://x.com/kalkmancode/status/2108920194829104128))

Một kỹ sư khác chỉ ra lưu ý về chất lượng mạng không dây:

> Đã thử nghiệm Beamer giữa MacBook M3 Max và máy Windows 11. Chuột lướt cực nhanh trên Wi-Fi 5GHz, đồng bộ ảnh clipboard rất ổn định. Nhưng trên Wi-Fi 2.4GHz công cộng bị trễ mạng, chuột sẽ có hiện tượng rớt khung hình. Nên dùng mạng 5GHz hoặc cắm dây LAN.
> - Marcus Vance (@@dev_marcus) ([source](https://x.com/dev_marcus/status/2109012847581902847))

***

## Phần 4: Ma trận quyết định

Beamer tập trung làm tốt một việc duy nhất: truyền phím, chuột và dữ liệu clipboard nội bộ với độ trễ thấp và độ bảo mật cao nhất.

| Môi trường làm việc | Giải pháp tối ưu | Đánh đổi kỹ thuật |
|---|---|---|
| **Toàn bộ hệ sinh thái Mac** | Apple Universal Control | Mượt mà tuyệt đối, tích hợp sẵn nhưng không hỗ trợ Windows hay Linux. |
| **Mac + Windows dùng toàn bộ chuột phím Logitech** | Logitech Flow | Tiện lợi nhưng lệ thuộc phần cứng Logitech và tốn RAM chạy daemon. |
| **Mac + Windows + Linux dùng chuột phím bất kỳ** | **Beamer** | **Mã nguồn mở GPL-3.0, không tài khoản đám mây, mã hóa ChaCha20 nhưng cần Wi-Fi 5GHz hoặc mạng LAN.** |
| **Dàn màn hình chơi game tần số quét cao** | KVM phần cứng chuyên dụng | Độc lập với mạng, nhưng chi phí đắt đỏ, dây cáp phức tạp và chuyển máy chậm. |

***

## Lời khuyên cuối

Bạn không cần tốn tiền triệu cho bộ chia phần cứng hay cài đặt các daemon nặng nề để dùng chung chuột phím. Hãy tải Beamer, nhập mã ghép đôi 6 số và để con trỏ chuột di chuyển tự do giữa các màn hình mà không lo lộ lọt dữ liệu ra ngoài Internet.

***

## Câu hỏi thường gặp (FAQ)

**Beamer có gửi dữ liệu gõ phím lên máy chủ ngoài không?**

Không. Beamer vận hành hoàn toàn theo mô hình ngang hàng (P2P) trong mạng cục bộ. Toàn bộ gói tin đều được mã hóa đầu cuối bằng ChaCha20-Poly1305 với khóa tạm thời X25519, không có tài khoản và không có máy chủ trung gian.

**Vì sao chuột rê qua máy khác được nhưng bàn phím không gõ được trên macOS?**

Do cơ chế TCC của macOS chưa cập nhật quyền cho tiến trình đang mở. Sau khi cấp quyền Accessibility và Input Monitoring, bạn cần thoát hẳn Beamer rồi khởi động lại ứng dụng.

**Beamer có hoạt động qua mạng VPN doanh nghiệp không?**

Beamer tối ưu cho các thiết bị chung một dải mạng nội bộ. Mặc dù bạn có thể nhập IP thủ công, các mạng VPN công ty chặn luồng dữ liệu cục bộ sẽ ngăn cản tính năng tìm kiếm và ghép đôi tự động.

**Beamer khắc phục lỗi chiếm cổng trên Windows như thế nào?**

Ứng dụng cố định cổng chính 24820 và cổng ghép đôi 24821. Cả hai cổng này đều nằm dưới mốc 49152, tránh hoàn toàn dải cổng động mà WinNAT và WSL2 trên Windows tự động chiếm dụng khi khởi động máy.
EOF
