[App.th] ไดรเวอร์อุปกรณ์นำเสนอยี่ห้อ Logitech สำหรับใช้งาน Keynote บน OS X

by Peace
1 November 2012 - 08:30

ไดรเวอร์ตัวนี้สำหรับสำหรับอุปกรณ์นำเสนอ Logitech Wireless Presenter R400 และ Logitech Professional Presenter R800 เพื่อให้ปุ่มทุกปุ่มทำงานร่วมกับโปรแกรม Keynote บน OS X ได้

แรงบันดาลใจ

เวลานำเสนองานผมจะใช้โปรแกรม Keynote กับโปรแกรมบน iOS ที่ชื่อว่า Keynote Remote ปัญหาของ Keynote Remote คือมันค่อนข้างช้าและไม่สามารถใช้ได้ในบางสถานการณ์

สำหรับคนที่ต้องนำเสนองานเป็นประจำอาจจะรู้จัก Logitech Wireless Presenter R400 และ Logitech Professional Presenter R800 ปัญหาของอุปกรณ์สองตัวนี้คือมันถูกออกแบบมาให้ใช้กับโปรแกรม Microsoft PowerPoint บน Windows ทำให้มีสองปุ่มที่ไม่สามารถใช้ได้กับโปรแกรม Keynote คือ ปุ่ม Play Slide กับ ปุ่ม Blank

ผมอยากทำให้อุปกรณ์สองตัวนี้ใช้กับโปรแกรม Keynote ได้อย่างสมบูรณ์ ผมจึงใช้เวลาว่างช่วงปิดเทอมเขียนไดรเวอร์ตัวนี้ขึ้นมา

วิธีใช้

คุณสามารถดาวน์โหลดตัวติดตั้งได้ที่นี่ครับ https://github.com/downloads/ake-koomsin/LogitechWirelessPresenterKext/LogitechWirelessPresenterKernelExtension.zip

หลังติดตั้งแนะนำให้รีสตาร์ทเครื่องเพื่อให้ตัวระบบปฏิบัติการโหลดตัวไดรเวอร์ตอนเปิดขึ้นมา

Source code

คุณสามารถดูได้ที่นี่ครับ https://github.com/ake-koomsin/LogitechWirelessPresenterKext

ข้อมูลทางเทคนิค

จริงๆแล้ว Logitech Wireless Presenter R400 และ Logitech Professional Presenter R800 ก็คือคีย์บอร์ดธรรมดาๆครับ จัดเป็นพวก Human Interface Device (HID)

OS X มี IOKit Framework สำหรับพัฒนาไดรเวอร์ จุดเด่นของ framework อันนี้คือเราสามารถเขียนไดรเวอร์ด้วยเทคนิคการเขียนโปรแกรมเชิงวัตถุได้ครับ ภาษาที่ใช้คือ C++

IOKit Framework มี API สำหรับเขียนไดรเวอร์ USB HID ครับ

สิ่งที่จำเป็นต้องรู้ในการเขียนไดรเวอร์กับ IOKit Framework มีดังต่อไปนี้

  • VendorID/ProductID เลขสองตัวนี้เป็นเหมือนรหัสประจำตัวของอุปกรณ์ USB
  • IOClassProvider เราจำเป็นต้องรู้ว่า class อะไรจะเป็น provider ให้กับไดรเวอร์เรา (สามารถดูแผนผังได้จากโปรแกรม ioreg บนโปรแกรม Terminal)
  • เราต้อง subclass ให้ถูก ไม่อย่างนั้นไดรเวอร์จะไม่ทำงานครับ

class ที่ถูก subclass คือ IOEventDriver ครับ ผมรู้จากการดูว่าไดรเวอร์ของคีย์บอร์ดของ Apple เริ่มที่ไหนใน ioreg และศึกษาจาก source code ที่ Apple ปล่อยออกมาบน http://opensource.apple.com/

ไอเดียก็ง่ายๆ ครับ ตัวไดรเวอร์ตรวจจับปุ่มที่เราสนใจและก็เปลี่ยนให้เป็นปุ่มที่ต้องการ

ปุ่ม Play Slide คือปุ่ม F5 ครับ ผมเปลี่ยนเป็น Command + Alt + P ส่วนปุ่ม Blank คือ ปุ่ม . ครับ ผมเปลี่ยนเป็น B

รายละเอียดที่ลึกกว่านี้ดูได้ใน source code หรือลองสอบถามมาก็ได้ครับ

เรื่องน่ารู้

Logitech Wireless Presenter R400 และ Logitech Professional Presenter R800 มี VendorID และ ProductID เดียวกันครับ ต่างกันที่ว่า R800 มีตัวตั้งเวลาและเลเซอร์สีเขียวที่โฆษณาว่าสว่างกว่าครับ

Blognone Jobs Premium