Drift V3 — คู่มือและตัวตรวจบอร์ด
คู่มือ
ทดสอบบอร์ด
เครื่องนี้ไม่น่าจะมีคีย์บอร์ดต่ออยู่
อ่านคู่มือได้ตามปกติ แต่โหมดทดสอบบอร์ดต้องเปิดบนเครื่องที่ Drift V3 ต่ออยู่จริง
โหมดนี้ต้อง flash Test Firmware ลง dongle ก่อน ไม่งั้นตัวเลขไม่มีความหมาย
Production Firmware มี 5 ช่องที่ browser มองไม่เห็นเลย (encoder push ×2,
nav,
mouse,
และ
⌃Space ที่ macOS กินไปก่อน) และมี 2 คู่ที่ส่งค่าเหมือนกันจนแยกไม่ออก (
SPACE,
BSPC)
Test Firmware ทำให้ทั้ง 70 ช่อง + หมุน encoder 4 ทิศ ส่งค่าไม่ซ้ำกันเลย
โหลด firmware.zip จาก GitHub Actions เอา drift_test_dongle.uf2
เสียบ USB-C เข้า dongle → กด reset 2 ครั้งเร็วๆ → drive NICENANO โผล่
ลาก ไฟล์เดียว ลงไป (บน macOS ใช้ cp -X ถ้าลากผ่าน Terminal) — ครึ่งซ้าย/ขวาไม่ต้องแตะ
กดให้ครบทุกช่อง หมุน encoder ทั้งสองข้างทั้งสองทิศ
flash drift_central_dongle.uf2 กลับ — อย่าทิ้ง Test Firmware ไว้บนบอร์ด
มันไม่มีปุ่ม bootloader ทางออกเดียวคือปุ่ม reset จริงบน dongle
ยังเป็น Production Firmware อยู่ — ตัวเลขที่ได้ไม่มีความหมาย
เพิ่งเห็นปุ่มที่ Test Firmware
ไม่มีทางส่งออกมาได้ (
)
แปลว่า dongle ยังไม่ได้ flash
drift_test_dongle — ตอนนี้ปุ่มบนรูปจะสว่างผิดตำแหน่ง
ทุกปุ่ม และหยุดนับให้แล้ว
flash แล้ว — ล้างคำเตือนและเริ่มนับใหม่
ยังไม่เห็นตัวอักษรไทยออกมาเลย
input source ตอนนี้น่าจะยังเป็นอังกฤษ กด ⌃ Space สลับเป็นไทยก่อน ไม่งั้นทดสอบจนครบ
แล้วจะยังไม่ได้พิสูจน์สิ่งที่อยากรู้ — ว่าไทยออกจริงไหม
encoder
ล้างผลทดสอบ เริ่มรอบใหม่
ยังไม่มีการกดปุ่ม
ปุ่มที่ต้องอธิบายบน layer
ตัวอักษร ตัวเลข และเครื่องหมายไม่อยู่ในรายการนี้ — legend บนปุ่มบอกครบแล้ว
encoder — หมุน บน layer
หน้าที่ตอนหมุนเปลี่ยนตาม layer ที่กดค้างอยู่ · กดลงไป: ซ้าย = ปิด/เปิดเสียง, ขวา = เล่น/หยุด
โหมดใช้งาน — ทำงาน / ทั่วไป กับ เกม
ทำงานและใช้ทั่วไป = base
ทุกปุ่มบน base เป็นปุ่มธรรมดา ไม่มี hold-tap ไม่มี combo (พิมพ์ไทยต้องพึ่ง Shift ครึ่งแป้น
และหน้าตรวจบอร์ดคิดเป็นช่องต่อช่อง — ดู ADR-0004) · layer อื่นเข้าด้วยการกดค้าง :
thumb ซ้ายใน = nav, thumb ขวาใน = mouse, สองอันพร้อมกัน = adjust
เกม = เปิด game ค้างไว้ด้วย nav + mouse + G
จอ OLED บน dock ขึ้นคำว่า game ตลอดที่เปิดอยู่ — ไม่ต้องเดา · กดชุดเดียวกันอีกครั้งเพื่อปิด
เปลี่ยนแค่ 5 ช่อง: W A S D เป็นแบบ last-input-priority (กด A ค้างแล้วกด D = ไปขวาทันที ไม่ค้าง)
และ thumb ซ้ายนอก ⌘ กลายเป็น ⌥ — เกมบน Mac ใช้ Option/Control/Shift ไม่ใช้ Command
และ ⌘ คือตัวการ ⌘Q / ⌘H / ⌘Tab หลุดกลางเกม (R⌘ ขวายังอยู่ไว้หนีฉุกเฉิน)
ที่เหลือทะลุไป base หมด: nav ยังให้ F1–F12, ⌃Space ยังสลับภาษาแชทได้, Space ทั้งสองข้างยังเป็น Space
เหตุผลที่เป็น overlay ไม่ใช่ base ที่สอง: ดู ADR-0003
ลดการใช้เมาส์
ครึ่งหนึ่งคีย์บอร์ดทำให้ อีกครึ่งเป็น setting ของ macOS กับ app — แยกป้ายไว้ชัดๆ ว่าอันไหนเป็นของใคร
คีย์บอร์ด keymap นี้ส่งให้เอง
app shortcut ของ app / macOS เอง กดจากคีย์บอร์ดไหนก็ได้
1. ฝั่งคีย์บอร์ด — nav + ลูกศร + modifier จริง
ลูกศรบน nav (H J K L ) เป็นปุ่มลูกศรธรรมดา
ดังนั้นกด modifier จริง ค้างร่วมได้เหมือนคีย์บอร์ดปกติ ไม่ต้องจำปุ่มเพิ่ม:
มือซ้ายบน nav คือปุ่มจัดการหน้าต่างของ macOS เอง: Q หน้าต่างถัดไปของ app (⌘`) ·
W Mission Control (⌃↑) · E สลับไป app ล่าสุด (⌘Tab) · A / D ย้าย Space (⌃← ⌃→) ·
S App Exposé (⌃↓) · Caps Caps Word · Space (ข้างไหนก็ได้) Spotlight (⌘Space)
ฝั่งคีย์บอร์ด — layer mouse (thumb ขวาในค้าง)
H J K L ขยับเคอร์เซอร์ — แตะสั้นขยับนิดเดียว กดค้างเร่งขึ้นเอง (ยังไม่มี layer ละเอียดแยก ถ้าหยาบไปค่อยเพิ่ม)
Y U I O scroll ← ↓ ↑ → ทรงเดียวกับ Home/PgDn/PgUp/End บน nav
คลิก: Space ซ้าย = ซ้าย · thumb ⌘ ซ้าย = ขวา · F = กลาง · กดคลิกค้างแล้วขยับ = ลาก
N / M = ปุ่มเมาส์ 4/5 (Back / Forward ใน browser และ Finder)
⌘-click ใช้ R⌘ นิ้วก้อยขวา เพราะ thumb ⌘ ซ้ายกลายเป็นคลิกขวาไปแล้ว · ⇧-click / ⌥-click ใช้ปุ่มจริงตามปกติ
ฝั่งคีย์บอร์ด — encoder
base: ซ้ายหมุน = scroll ขึ้น/ลง · ขวาหมุน = เสียง · กดซ้าย = mute · กดขวา = เล่น/หยุด
nav ค้าง: ซ้ายหมุน = scroll ซ้าย/ขวา · ขวาหมุน = สลับ tab (⌃Tab / ⌃⇧Tab — Arc, Chrome, Safari, Zed, Warp ใช้ได้หมด)
2. ฝั่ง macOS — ตั้งครั้งเดียว (หน้านี้บอกวิธี ไม่ได้ตั้งให้)
2.1 Keyboard navigation (Full Keyboard Access) — Tab ไล่ได้ทุกปุ่มใน dialog
System Settings › Keyboard › เปิดสวิตช์ Keyboard navigation
จากนั้น Tab / ⇧Tab ไล่ focus ได้ทุกปุ่มและช่อง ไม่ใช่แค่ช่องกรอก · Space = กดปุ่มที่ focus · Esc = Cancel · ⏎ = ปุ่ม default
เช็คค่าปัจจุบันได้ด้วย defaults read -g AppleKeyboardUIMode (เครื่องนี้ตอน scan = 0 คือปิดอยู่)
ย้อนกลับ: ปิดสวิตช์เดิม
2.2 App Shortcuts ให้ tile หน้าต่างด้วย ⌃⌥ + ลูกศร
macOS มี tiling ในเมนู Window › Move & Resize อยู่แล้ว แต่ shortcut เดิมเป็น fn ⌃ +ลูกศร ซึ่ง ZMK ส่งปุ่ม fn ไม่ได้
เลยย้ายมาเป็น ⌃ ⌥ ที่ nav+HJKL ส่งได้:
เปิด Finder แล้วดูเมนู Window › Move & Resize ก่อน — จดชื่อเมนูตามที่เห็นจริงบนเครื่องคุณ (ปกติคือ Left, Right, Top, Bottom, Fill, Center, Return to Previous Size)
System Settings › Keyboard › Keyboard Shortcuts… › App Shortcuts › + › Application: All Applications
เพิ่มทีละรายการ Menu Title สะกดให้ตรงเป๊ะ: Left → ⌃⌥← · Right → ⌃⌥→ · Top → ⌃⌥↑ · Bottom → ⌃⌥↓ · Fill → ⌃⌥F · Center → ⌃⌥C · Return to Previous Size → ⌃⌥R
ทดสอบ: กด nav ค้าง + ⌃ ⌥ จริง + H → หน้าต่างไปครึ่งซ้าย
ย้อนกลับ: เลือกรายการใน App Shortcuts แล้วกด − · ไม่ต้องลง app จัดหน้าต่างเพิ่ม (เครื่องนี้ไม่มี Rectangle/AeroSpace อยู่แล้ว)
2.3 Vimium ใน Arc — คลิกลิงก์ด้วยตัวอักษร
Arc ลง extension จาก Chrome Web Store ได้: ค้น Vimium › Add to Chrome
f ขึ้นตัวอักษรบนทุกลิงก์ พิมพ์ตามแล้วเปิด · F เปิดใน tab ใหม่ · j / k เลื่อน · J / K สลับ tab · o เปิด URL หรือค้นหา · x ปิด tab · / ค้นในหน้า · gi เข้าช่องกรอกแรก
หน้าที่ต้องพิมพ์เยอะ (Gmail, Slack web) ให้กด i เข้า insert mode หรือใส่ไว้ใน excluded URLs ของ Vimium
ย้อนกลับ: ถอด extension ออก · ตอน scan เครื่องนี้ยังไม่มี Vimium ในทุก browser
3. ต่อ app — ที่ใช้อยู่จริงในเครื่องนี้
Zed (keymap default ของ Zed)
app ⌘P เปิดไฟล์ · ⌘⇧P command palette
app ⌘⇧F ค้นทั้งโปรเจกต์ · ⌘⇧O outline ของไฟล์
app ⌘J terminal ล่าง · ⌘B ซ่อน/โชว์ sidebar · ⌘⇧E project panel
คีย์บอร์ด nav += = F12 ไป definition · ⌃- กลับ · nav +8 = F8 ไป error ถัดไป
คีย์บอร์ด nav +Caps Caps Word พิมพ์ CONSTANT_NAME · ⌥ +nav+H/L กระโดดคำ
app vim mode ปิดอยู่ (ตั้งใจ) — เปิดได้ที่ settings.json "vim_mode": true ถ้าอยากได้ hjkl ในตัวแก้
Warp + tmux
app Warp: ⌘P command palette · ⌘T tab ใหม่ · ⌘D / ⌘⇧D แบ่ง pane
app Warp: ⌘↑ / ⌘↓ เลื่อนทีละ block · ⌃R ค้นประวัติคำสั่ง
app tmux (จาก .tmux.conf ของคุณ): ⌃A แล้ว h j k l ย้าย pane · | / - แบ่ง · r reload
app tmux copy: ⌃A [ เข้า copy-mode (vi) · y ก๊อปเข้า clipboard ของ Mac
คีย์บอร์ด ⌃ อยู่มุมล่างซ้าย + A home row = prefix ถึงง่าย · encoder ซ้ายเลื่อน scrollback แทนเมาส์
Arc (+ Vimium)
app ⌘T command bar (เปิด URL / ค้นหา / สลับ tab) · ⌘S ซ่อน/โชว์ sidebar
app ⌥⌘← / ⌥⌘→ tab ก่อน/ถัดไป · ⌘⇧C ก๊อป URL · ⌘1–8 ไป tab/favorite ตามเลข
คีย์บอร์ด nav ค้าง + หมุน encoder ขวา = สลับ tab
คีย์บอร์ด mouse ค้าง + N / M = Back / Forward · Y U I O scroll หน้า
app Vimium (หลังลงตามข้อ 2.3): f คลิกลิงก์ · j /k เลื่อน · J /K สลับ tab
Slack
app ⌘K ไปห้อง/คน (พิมพ์ชื่อ) · ⌘⇧K DM ทั้งหมด
app ⌘⇧A ยังไม่ได้อ่านทั้งหมด · ⌘⇧T threads · ⌥↑ / ⌥↓ ห้องก่อน/ถัดไป
app ↑ ในช่องพิมพ์ = แก้ข้อความล่าสุดของตัวเอง · Esc mark ห้องว่าอ่านแล้ว
คีย์บอร์ด nav +K = ↑ ใช้แก้ข้อความล่าสุดได้โดยไม่ยกมือ · ⌃Space สลับไทย/อังกฤษก่อนพิมพ์
Claude Code (CLI ใน Warp)
app Esc หยุด Claude กลางคัน (งานที่ทำแล้วยังอยู่) · ⌃C ล้างช่องพิมพ์ กดซ้ำ = ออก · ⌃D ออก
app ⇧⏎ ขึ้นบรรทัดใหม่ (Warp รองรับในตัว) · \ +⏎ ได้ทุก terminal
app ⌃O เปิด/ปิด transcript เห็น tool ทุกตัว · ⌃R ค้นประวัติ prompt · ⌃L วาดจอใหม่
app ⌃G แก้ prompt ใน editor · ⌃V วางรูปจาก clipboard · ⇧Tab สลับโหมด permission
app ! รัน shell เอง · @ เลือกไฟล์ · / คำสั่ง (/compact /clear /model) · ? ดู shortcut ทั้งหมด
คีย์บอร์ด ⌃ มุมล่างซ้าย + O/R/L/G ถึงง่าย · Esc มุมบนซ้าย · nav +K /J = ↑↓ เรียก prompt เก่า
Claude Desktop
app Quick entry: แตะ ⌥ สองครั้ง (default) — เปลี่ยนเป็น ⌥Space หรือ custom ได้ที่ Settings › General › Desktop app
app ในกล่อง quick entry พิมพ์แล้ว ⏎ = แชทใหม่ · แคปหน้าจอ / แชร์หน้าต่างได้จากตรงนั้น
app Voice dictation ใช้ Caps Lock (ปิดอยู่โดย default) — บนบอร์ดนี้ Caps Lock จริงอยู่ adjust +Caps ไม่ชนกับ ⌃Space
app ⇧⏎ ขึ้นบรรทัดใหม่ · ⏎ ส่ง
คีย์บอร์ด ⌥ อยู่ล่างซ้ายถัดจาก ⌃ แตะสองครั้งเร็วๆ = เปิด quick entry จากทุก app · หรือ nav +Space Spotlight แล้วพิมพ์ Claude
OpenCode (TUI ใน Warp — keybind default)
app leader = ⌃X แล้วตามด้วยตัวอักษรภายใน 2 วิ: n session ใหม่ · l รายการ session · m เลือก model · a เลือก agent · c compact · q ออก
app ⌃P command list ทุกคำสั่ง · Tab / ⇧Tab สลับ agent · Esc หยุด · ⌃C ล้างช่องพิมพ์
app ⇧⏎ หรือ ⌃J ขึ้นบรรทัดใหม่ · ⏎ ส่ง · ⌃X e เปิด editor · ⌃X b sidebar
app PgUp /PgDn เลื่อนข้อความ · Home /End บนสุด/ล่างสุด · ⌃X y copy · ⌃X u /r undo/redo
คีย์บอร์ด nav +U /I = PgDn/PgUp · nav +Y /O = Home/End · leader: ⌃ ล่างซ้าย + X ข้างๆ
macOS ทั่วไป
คีย์บอร์ด nav +E สลับ app ล่าสุด · nav +Q หน้าต่างถัดไปของ app · nav +W Mission Control
คีย์บอร์ด nav +A /D ย้าย Space · adjust +L ล็อกจอ · nav +PgUp /PgDn /⌘C ถ่ายจอ ⌘⇧4 / 3 / 5
คีย์บอร์ด nav +Space Spotlight (⌘Space) — ค้นหา/เปิด app/คำนวณ โดยไม่แตะเมาส์
app ⌘, settings ของ app · ⌘⌥Esc force quit
app หลังเปิด Keyboard navigation (2.1): Tab / ⇧Tab ไล่ปุ่มใน dialog · Space กด · ⌃F2 เข้าเมนูบาร์ (nav+2 ค้าง ⌃)
app Finder: ⌘↑ ขึ้นโฟลเดอร์ · ⌘↓ / ⌘O เปิด · ⌘⇧G พิมพ์ path · Space Quick Look
legend สร้างจาก config/drift.keymap + config/drift.json ทุกครั้งที่ build —
ดูวิธี flash, จับคู่ Bluetooth และรายละเอียด keymap ได้ที่
README ·
เหตุผลเบื้องหลัง ADR