Tags:
Node Thumbnail

ไดรเวอร์ตัวนี้สำหรับสำหรับอุปกรณ์นำเสนอ 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 มีตัวตั้งเวลาและเลเซอร์สีเขียวที่โฆษณาว่าสว่างกว่าครับ

Get latest news from Blognone

Comments

By: mk
FounderAndroid
on 1 November 2012 - 16:55 #499806
mk's picture

ผมยังอ่านหัวข่าวไม่ค่อยรู้เรื่องว่ามันเอาไว้ทำอะไรนะครับ (แต่พอมาอ่านในเนื้อหาแล้วเข้าใจ) อาจจะลองปรับคำพูดให้มันเหมาะสำหรับคนที่อยู่นอกวงการเข้าใจได้ง่ายขึ้นหน่อยครับ

By: Peace
Contributor
on 1 November 2012 - 17:18 #499825 Reply to:499806

แก้ไขแล้วครับ หัวข้อพอรู้เรื่องขึ้นมั้ยครับ

By: nuntawat
WriterAndroidWindowsIn Love
on 1 November 2012 - 17:50 #499848 Reply to:499825
nuntawat's picture
  • หัวข่าวยาวไปมากครับ ลองตัดให้ประมาณหนึ่งบรรทัด อาทิ

ไดรเวอร์อุปกรณ์นำเสนอยี่ห้อ Logitech สำหรับใช้งาน Keynote บน OS X ได้สมบูรณ์แบบ

  • Restart -> รีสตาร์ท
  • Framework, Source code ตัวพิมพ์เล็ก (Provider, Terminal หากใช้เป็นคำนามทั่วไป ไม่ได้บ่งบอกอะไรเฉพาะ อาทิ ชื่อคลาส ให้เป็นตัวพิมพ์เล็กเช่นกัน)
  • หลังไม้ยมก เว้น 1 เคาะ
  • แท็กลิงก์ตรง "(http://opensource.apple.com/)[http://opensource.apple.com/]" ผิด ลิงก์เลยไม่ขึ้น
By: Peace
Contributor
on 1 November 2012 - 18:08 #499867 Reply to:499848

ขอบคุณสำหรับคำชี้แนะครับ ได้ทำการแก้ไขแล้วครับ

By: PaPaSEK
ContributorAndroidWindowsIn Love
on 2 November 2012 - 09:48 #500304 Reply to:499867
PaPaSEK's picture

ผมอ่านหัวข้อแล้วยังค่อนข้างมึนนะครับ อาจเป็นเพราะตัวภาษาไทย

อยากถามคุณ mk ว่าไดรเวอร์ ถ้าเราใช้ทับศัพท์แนวนี้จะได้มั้ย

"ไดรเวอร์สำหรับไวร์เลสพรีเซ็นเตอร์ของ Logitech"

By: panurat2000
ContributorSymbianUbuntuIn Love
on 1 November 2012 - 21:35 #499971 Reply to:499806
panurat2000's picture

แรงบัลดาลใจ => แรงบันดาลใจ

คุณสามารถดาวโหลดตัวติดตั้งได้ที่นี่ครับ

ดาวโหลด => ดาวน์โหลด

ภาษาที่ให้คือ C++

ภาษาที่ให้ => ภาษาที่ใช้

By: Peace
Contributor
on 1 November 2012 - 22:52 #499994 Reply to:499971

ขอบคุณมากครับ ได้แก้ไขแล้วครับ

By: tinydavilmc
iPhone
on 1 November 2012 - 18:31 #499890

"กับโปแกรมบน iOS ที่ชื่อว่า Keynote Remote"

By: Peace
Contributor
on 1 November 2012 - 18:34 #499893 Reply to:499890

ขอบคุณครับ

By: -Rookies-
ContributorAndroidWindowsIn Love
on 2 November 2012 - 01:27 #500128

โอ้ สุดยอด "อยากได้ต้องทำเอง" ของแท้เลย ขอแสดงความนับถือครับ


เทคโนโลยีไม่ผิด คนใช้มันในทางที่ผิดนั่นแหละที่ผิด!?!

By: caznova
AndroidRed HatUbuntuWindows
on 2 November 2012 - 11:17 #500383
caznova's picture

อันนี้ไม่ธรรมดาจริงๆ นับถือครับ