GitHub - teacherarm-dotcom/zoomjor: ZoomJor (ซูมจอ) — แอปช่วยนำเสนอ/สอนบน macOS: ซูมหน้าจอ วาดทับจอ ซูมสด และนาฬิกาจับเวลาพัก · Swift/AppKit · GitHub
Skip to content
teacherarm-dotcomPublic

About

ZoomJor (ซูมจอ) — แอปช่วยนำเสนอ/สอนบน macOS: ซูมหน้าจอ วาดทับจอ ซูมสด และนาฬิกาจับเวลาพัก · Swift/AppKit

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

ZoomJor (ซูมจอ)

โปรแกรมช่วยนำเสนอ/สอนบน macOS — ซูมหน้าจอ · วาดทับหน้าจอ · ซูมสด · นาฬิกาจับเวลาพัก ทำงานคล้าย ZoomIt ของ Sysinternals เขียนด้วย Swift/AppKit ล้วน ไม่ต้องติดตั้งไลบรารีเพิ่ม เป็นแอปบนแถบเมนู (menu bar)

📄 คู่มือใช้งาน 1 หน้า (คีย์ลัดครบทุกโหมด · ปริ้นต์ได้): docs/guide.html


ติดตั้ง

วิธีที่ 1 — ไฟล์ติดตั้ง .dmg (ง่ายสุด ไม่ต้องใช้ Terminal)

โหลดไฟล์ ZoomJor-x.x.dmg จาก หน้า Releases แล้ว

  1. ดับเบิลคลิกไฟล์ .dmg
  2. ลากไอคอน ZoomJor ไปวางบนโฟลเดอร์ Applications ที่อยู่ข้าง ๆ
  3. เปิดโฟลเดอร์ แอปพลิเคชัน แล้วดับเบิลคลิก ZoomJor

⚠️ ครั้งแรกจะโดนบล็อก — ขึ้นว่า "Apple ตรวจสอบหามัลแวร์ไม่ได้" เพราะแอปเซ็นแบบ ad-hoc ยังไม่ได้ notarize กับ Apple (ต้องมีบัญชีนักพัฒนา $99/ปี)

กด เสร็จสิ้น → ไปที่ การตั้งค่าระบบ → ความเป็นส่วนตัวและความปลอดภัย เลื่อนลงจะเห็นบรรทัด "ZoomJor" ถูกบล็อก… → กด เปิดอยู่ดี → ยืนยัน ทำครั้งเดียวจบ

(macOS 15 ขึ้นไปย้ายขั้นตอนนี้มาที่การตั้งค่าระบบแล้ว — วิธีคลิกขวา → เปิด แบบเดิมใช้ไม่ได้)

วิธีที่ 2 — คอมไพล์เอง

ได้ของใหม่ล่าสุดและ ไม่ต้องปลดล็อก Gatekeeper เลย (แอปที่ build บนเครื่องตัวเองไม่ติด quarantine) ต้องมี macOS 14 ขึ้นไป และ Command Line Tools (xcode-select --install ครั้งเดียวจบ)

git clone https://github.com/teacherarm-dotcom/zoomjor.git
cd zoomjor
./build.sh
ditto ZoomJor.app /Applications/ZoomJor.app
open /Applications/ZoomJor.app

หลังติดตั้ง

แอปไม่มีหน้าต่างและไม่มีไอคอนใน Dock — ไอคอนจะไปโผล่บนแถบเมนูด้านขวาบน ครั้งแรกที่กด ⌃1 macOS จะขอสิทธิ์ การบันทึกหน้าจอ ให้อนุญาตแล้วเปิดแอปใหม่

💡 ถ้าไอคอนไม่ขึ้นบนแถบเมนู (แถบเมนูฝั่งขวาเต็ม) แอปยังทำงานปกติ — ใช้ ⌃⌥M เปิดเมนู และ ⌃⌥Q ปิดโปรแกรม

สร้างไฟล์ติดตั้งเอง

./make-dmg.sh

ได้ ZoomJor-x.x.dmg พร้อมแจก (ข้างในมีแอป + ทางลัด Applications + ไฟล์วิธีติดตั้งภาษาไทย)

วิดีโอสอนการใช้งาน

./video/build-video.sh            # → video/build/ZoomJor-สอนการใช้งาน.mp4 (1920x1080 · พากย์ไทย)
./video/build-video.sh --preview  # → ภาพตัวอย่างทุกฉากใน video/build/preview/
  • ฉาก ZoomJor ทุกโหมดวาดด้วย โค้ดจริงของแอป (OverlayView / LiveZoomView) — แก้หน้าตาแอปแล้วสั่งสร้างใหม่ วิดีโอตามทันที
  • ฉากติดตั้ง/การตั้งค่าระบบใช้ภาพหน้าจอจริงใน video/captures/ (ไม่อยู่ใน repo เพราะมีข้อมูลส่วนตัว)
  • เสียงพากย์ = say -v Kanya · สคริปต์ทั้งหมดอยู่ใน video/tool/main.swift · ไม่ต้องติดตั้ง ffmpeg (ใช้ AVFoundation)

เทสต์

./Tests/run.sh

ใส่ไอคอนของตัวเอง

ไฟล์ ใช้เป็น
Resources/AppIcon.icns ไอคอนแอป (Finder / Dock / About)
Resources/MenuBarIcon.pdf หรือ .png ไอคอนบนแถบเมนู — ควรเป็นขาวดำพื้นโปร่งใส ~18×18 pt (macOS จะย้อมสีตามธีมให้เอง)

ตอนนี้ใช้ไอคอนจาก zoomjor icon.png แล้ว · ถ้าจะเปลี่ยนใหม่ ให้แปลงเป็น .icns ด้วย:

./make-icon.sh ~/Desktop/zoomjor-1024.png

แล้วสั่ง ./build.sh ใหม่ ถ้าไม่ใส่ไฟล์ไอคอน โปรแกรมจะใช้สัญลักษณ์แว่นขยายของระบบแทน

ครั้งแรกที่ใช้ โหมดซูม (⌃1) หรือ ซูมสด (⌃4) macOS จะขอสิทธิ์ การบันทึกหน้าจอ (Screen Recording) อนุญาตที่ การตั้งค่าระบบ → ความเป็นส่วนตัวและความปลอดภัย → การบันทึกหน้าจอ แล้วเปิดแอปใหม่ (โหมดวาด ⌃2 ใช้ได้เลยโดยไม่ต้องขอสิทธิ์)


⌨️ คีย์ลัดใช้ได้ทั้งแป้นไทยและอังกฤษ

คีย์ลัดทุกตัวอ่านจาก ตำแหน่งปุ่มจริง (key code) ไม่ใช่ตัวอักษรที่พิมพ์ออกมา สลับแป้นพิมพ์เป็นภาษาไทยค้างอยู่ก็กดได้ตามปกติ ไม่ต้องสลับกลับเป็นอังกฤษ

ปุ่มที่เขียนว่า R = ปุ่มเดียวกับ พ · A = ปุ่มเดียวกับ ฟ · U = ปุ่มเดียวกับ ี รวมถึงตัวเลขตั้งเวลาในโหมดนาฬิกาด้วย

🧰 แถบเครื่องมือบนจอ — คลิกได้ ไม่ต้องจำคีย์

พอเข้าโหมดใด ๆ จะมีแถบลอยกลางจอด้านบน กดเลือกได้ทั้งหมด:

ลูกศร · ปากกา · เส้นตรง · สี่เหลี่ยม · วงรี · ไฮไลต์ · ข้อความ │ สี 8 สี │ ↶ ย้อนกลับ · ↷ ทำซ้ำ · 🗑 ลบทั้งหมด │ ✕ ออก

ชี้ค้างที่ปุ่มจะขึ้นชื่อปุ่มให้ · กด D เพื่อซ่อน/แสดงแถบ

↩️ วาดผิด — ย้อนกลับได้ 4 ทาง

วิธี หมายเหตุ
⌫ (Backspace) สั้นที่สุด กดรัวได้
⌘Z มาตรฐาน macOS
U ปุ่มเดียว
ปุ่ม ↶ บนแถบเครื่องมือ ใช้เมาส์ล้วน

ทำซ้ำ = ⇧⌘Z · ลบทั้งหมด = E หรือ ⌘⌫ — การลบทั้งหมดย้อนกลับได้ด้วย (เก็บย้อนหลังได้ถึง 300 ขั้น)

คีย์ลัดเรียกใช้งาน (กดที่ไหนก็ได้)

คีย์ โหมด
⌃1 ซูม — แช่หน้าจอแล้วขยาย + วาดทับได้
⌃2 วาด — วาดทับหน้าจอสด ๆ
⌃3 นาฬิกาจับเวลาถอยหลัง — หน้าจอพักเบรก
⌃4 ซูมสด (Live zoom) — ขยายภาพจริงแบบเรียลไทม์ ใช้แอปข้างล่างต่อได้
⌃5 เมาส์ใหญ่ + เอฟเฟกต์คลิก — เปิด/ปิด ใช้ได้ทุกแอป

กดคีย์เดิมซ้ำ = ออกจากโหมด


โหมดซูม (⌃1)

คีย์ ทำอะไร
เลื่อนเมาส์ ส่องภาพตามตำแหน่งเมาส์
สกอร์ล / + - / ↑ ↓ ขยาย–ย่อ (1×–16×)
0 กลับไป 100%
คลิกลาก เริ่มวาด (ภาพจะล็อกอัตโนมัติ)
Tab สลับล็อก/ปลดล็อกการแพนตามเมาส์
← → เลื่อนภาพซ้าย–ขวา
Esc / คลิกขวา ออก

โหมดซูมสด — Live zoom (⌃4)

ขยายภาพหน้าจอ แบบเรียลไทม์ ต่างจาก ⌃1 ตรงที่ไม่แช่ภาพ และ คลิก/พิมพ์ทะลุลงไปยังแอปข้างล่างได้ตามปกติ จุดที่อยู่ใต้เคอร์เซอร์จะถูกตรึงไว้กับที่ — คลิกตรงไหนก็โดนตรงนั้นจริง

คีย์ / ปุ่ม ทำอะไร
⌃⌥↑ หรือ ⌃⌥= ขยาย
⌃⌥↓ หรือ ⌃⌥- ย่อ
⌃⌥0 กลับ 200%
แถบลอยด้านบนจอ ปุ่ม − + และ ✕ (กดได้โดยไม่แย่งโฟกัสจากแอปที่ใช้อยู่)
⌃4 ปิด

คีย์ ⌃⌥… จะถูกจองเฉพาะตอนซูมสดทำงาน แล้วคืนให้ระบบเมื่อปิด

เมาส์ใหญ่ + เอฟเฟกต์คลิก (⌃5)

เมาส์ตัวใหญ่มีวงแสงเหลืองล้อม ผู้ชมมองเห็นง่ายตอนสอน/แชร์จอ และ ทุกครั้งที่คลิกจะมีวงกระเพื่อม (คลิกซ้าย = แดง · คลิกขวา = น้ำเงิน · ปุ่มกลาง = เขียว) — คลิกทะลุใช้งานแอปข้างล่างได้ตามปกติ

เมนู "ตั้งค่าเมาส์" ทำอะไร
ขนาดเมาส์ 2× / 3× / 4× ค่าเริ่มต้น 3×
วงแสงเหลืองรอบเมาส์ เปิด/ปิด
เอฟเฟกต์ตอนคลิก เปิด/ปิด
  • จำค่าไว้ เปิดโปรแกรมครั้งหน้ายังเปิดอยู่ · ไม่ต้องขอสิทธิ์เพิ่ม
  • ติดไปในโปรแกรมอัดจอ/แชร์จอ (ตั้งใจ) แต่ไม่ติดลงภาพแช่ของ ⌃1
  • ระหว่างโหมดวาด/ซูม/นาฬิกา (⌃1–⌃3) เมาส์ใหญ่จะพักไว้ เพราะโหมดนั้นมีเคอร์เซอร์ของตัวเอง
  • macOS ไม่ให้แอปขยายเคอร์เซอร์ของระบบ จึงวาดเมาส์ใหญ่ซ้อนไว้ใต้เมาส์จริง ปลายตรงกันพอดี (ตอนเมาส์จริงเปลี่ยนเป็นรูปมือ/ตัว I เมาส์ใหญ่ยังเป็นลูกศร)

โหมดนาฬิกาจับเวลาถอยหลัง (⌃3)

หน้าจอพักเบรกเต็มจอ พื้นหลังเป็นภาพหน้าจอที่เบลอ + หรี่แสง พร้อมวงแหวนนับถอยหลัง และบอกเวลาที่จะกลับมาต่อ เมื่อหมดเวลาจะมีเสียงเตือนและตัวเลขกะพริบสีแดง

คีย์ ทำอะไร
Space หยุด / เดินเวลาต่อ
↑ ↓ ±1 นาที
← → ±10 วินาที
พิมพ์ตัวเลข + Enter ตั้งเวลาใหม่ (นาที)
⌘R เริ่มนับใหม่
D เปิด/ปิดแถบเครื่องมือ
Esc ออก

ตั้ง เวลาพักเริ่มต้น ได้จากเมนูบนแถบเมนู (จำค่าไว้ให้) และยังวาดลูกศร/ข้อความทับหน้าจอพักได้ด้วย


สีเส้น

คีย์ สี
r แดง
g เขียว
y เหลือง
k ดำ
b น้ำเงิน
w ขาว
o ส้ม
m ชมพู

เครื่องมือวาด

คีย์ เครื่องมือ
a ลูกศร
p ปากกาวาดอิสระ (ค่าเริ่มต้น)
l เส้นตรง
s สี่เหลี่ยม
c วงรี
h ปากกาไฮไลต์ (โปร่งแสง)
t ข้อความ — คลิกแล้วพิมพ์, Enter/Esc จบ

ทางลัดขณะลาก (ไม่ต้องเปลี่ยนเครื่องมือ): ⇧ ค้าง = ลูกศร · ⌃⇧ ค้าง = สี่เหลี่ยม · ⌥ ค้าง = บังคับมุม 45° / จัตุรัส

อื่น ๆ

คีย์ ทำอะไร
[ ] ลด/เพิ่มขนาดเส้น (1–60)
⌫ / ⌘Z / U ย้อนกลับ (รวมถึงย้อนการลบทั้งหมด)
⇧⌘Z ทำซ้ำ
E / ⌘⌫ ลบภาพวาดทั้งหมด
⌘S บันทึกเป็น PNG ลง Desktop
⌘C คัดลอกภาพลงคลิปบอร์ด
? แสดง/ซ่อนตารางคีย์ลัดบนจอ
D ซ่อน/แสดงแถบเครื่องมือ + แถบสถานะ
z (ในโหมดวาด) แช่หน้าจอแล้วซูมต่อ โดยเก็บภาพวาดเดิมไว้
⌘Q ปิดโปรแกรม

หมายเหตุ

  • ทำงานบน จอที่เมาส์อยู่ ขณะกดคีย์ลัด (รองรับหลายจอ ทีละจอ)
  • ภาพวาดเก็บเป็นพิกัดของหน้าจอ จึง เกาะตำแหน่งเดิมเมื่อซูม/เลื่อน
  • ภาพที่แช่ไว้จับที่ความละเอียด Retina เต็ม ซูมแล้วยังคมชัด
  • คีย์ลัดจองผ่าน Carbon RegisterEventHotKey จึง ไม่ต้องขอสิทธิ์ Accessibility
  • ถ้าแอปอื่นจอง ⌃1–⌃5 ไว้ จะมีแจ้งเตือนตอนเปิด — สั่งงานผ่านเมนูบนแถบเมนูแทนได้

โครงสร้างซอร์ส

ไฟล์ หน้าที่
Sources/main.swift จุดเริ่มโปรแกรม
Sources/AppInfo.swift ชื่อ/แบรนด์ของโปรแกรม
Sources/AppDelegate.swift ไอคอน/เมนูบนแถบเมนู + ลงทะเบียนคีย์ลัด
Sources/HotKeyCenter.swift คีย์ลัดระดับระบบ (Carbon) จอง/ถอนคืนได้
Sources/OverlayController.swift หน้าต่างคลุมจอ, จับภาพ, เบลอพื้นหลัง, เซฟ/คัดลอก
Sources/OverlayView.swift เรนเดอร์ภาพซูม + ภาพวาด + หน้าปัดนาฬิกา + แถบเครื่องมือ + HUD · คีย์ลัดแบบ key code
Sources/LiveZoom.swift โหมดซูมสด (SCStream) + แถบควบคุมลอย
Sources/ScreenCapture.swift จับภาพนิ่งด้วย ScreenCaptureKit
Sources/Annotation.swift โมเดลเส้น/สี/เครื่องมือ + ตารางแมปตำแหน่งปุ่ม

สัญญาอนุญาต

MIT License — © 2026 Thanasarn Rujira

ใช้ ทำสำเนา แก้ไข รวมเข้ากับงานอื่น เผยแพร่ หรือขายต่อได้อย่างอิสระ เพียงคงข้อความลิขสิทธิ์และสัญญาอนุญาตไว้ในสำเนาที่แจกจ่าย · ให้ไว้ตามสภาพ ไม่มีการรับประกันใด ๆ

About

ZoomJor (ซูมจอ) — แอปช่วยนำเสนอ/สอนบน macOS: ซูมหน้าจอ วาดทับจอ ซูมสด และนาฬิกาจับเวลาพัก · Swift/AppKit

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages