วันศุกร์ที่ 12 มีนาคม พ.ศ. 2553

MultiMedia Keys กับ IceWM ใน FreeBSD (ฉบับทดลอง)

     สงสัยมานานแล้วครับ ว่า ปุ่ม Function ต่างๆ เช่น F1-F12 บนKeyboard ของ Notebook M2000 ของผมเนี่ย จะใช้งานอะไรได้บ้าง เพราะถ้าเป็นWindows XP(เถื่อน)ที่ติดเครื่องมา คงใช้ได้เต็มประสิทธิภาพแน่
     แต่ทีนี้ทั้ง Ubuntu เอย FreeBSDของเราเอย จะทำให้ปุ่มเหล่านี้ใช้งาน(ไม่เป็นง่อย)ได้ยังไงนะ...
ก็อีกแล้วครับ Google is Your Friend Again... หาไปหามาก็ชักได้เรื่อง...
     เครื่องมือของเรา ซึ่งติดมากับ Xorg อยู่แล้ว คือ xev และ xmodmap นั่นเอง...

เท่าที่ลองทำดู หลักการก็ประมาณว่า  หาหมายเลขประจำปุ่ม หรือ keycode แล้วเอามา map หรือ ผูกกับ คำสั่งใช้งาน หรือ command สำหรับ Application หรือ Utility ต่างๆ สำหรับผม ลองใช้กับ IceWM ซึ่งเป็น Window Manager ที่ชอบมากๆ เพราะปรับใช้ปุ่มต่างๆได้โดยตรงผ่าน ไฟล์ ~/.icewm/keys

     ขั้นแรก ตรวจสอบการ map key ของkeyboard ก่อนด้วย คำสั่งดังนี้
$xmodmap -pke
จะเห็นรายการ Mapping ทั้งหมดของ keyboard ตัวอย่างเช่น
...
keycode  57 = n N Thai_sarauee Thai_thanthakhat
...
     ขั้นต่อมา หาค่า keycode ของปุ่มพิเศษที่ต้องการใช้งาน เช่นปุ่ม เพิ่มระดับเสียง, ลดระดับเสียง, ปุ่มMute เป็นต้น โดยใช้ โปรแกรม xev โดยสั่งทาง xterm หรือ terminal ดังนี้
$xev
     ก็จะมีหน้าต่างเล็ก สำหรับรอรับเหตุการณ์ เช่น Mouse Click ให้ทดลองกดปุ่ม เร่งเสียงดู จะมีข้อความปรากฏขึ้น แสดงรายระเอียดของปุ่มที่กด ในขณะกด และ ปล่อย ดังรูป

     จะเห็นว่า ค่า keycode ของปุ่มลดเสียง คือ 174 นั่นเอง ส่วน ปุ่มเพิ่มเสียง กับ ปุ่มMute คือ 176 และ 140 ตามลำดับ(เฉพาะเครื่องของผมนะครับ ของท่านอาจเป็นค่าอื่น)
     เมื่อได้ค่า keycode มาแล้ว ต่อไปก็ตั้งชื่อปุ่มครับ การตั้งชื่อก็ให้มีความหมายเข้าใจได้ เช่น RaiseVOL, LowerVOL, Mute เป็นต้น แต่ถ้าจะให้ดี และ เข้ามาตราฐาน XF86 (เผื่อโปรแกรมอื่น ได้ใช้งานได้ด้วย)สามารถไปดูรายชื่อปุ่มต่างๆ ได้ในไฟล์ XKeysymDB (/usr/local/lib/X11/XKeysymDB)
     ได้ชื่อมาแล้ว ต่อไปก็นำมาผูกเข้าด้วยกันโดยการ สร้างไฟล์ชื่อ '.Xmodmap' ขึ้นมาที่ User Home directoryของเรา (~/.Xmodmap) (มี "."อยู่ข้างหน้า เพราะเป็น Hidden File(ซ่อนเอาไว้)) โดยมีรูปแบบดังนี้
...
keycode 140 = XF86AudioMute
keycode 174 = XF86AudioLowerVolume
keycode 176 = XF86AudioRaiseVolume
...
เสร็จแล้วบันทึก แล้วก็ทำในขั้นต่อไป
สำหรับ ทั้ง 3ปุ่มที่พูดถึง ผมจะหยุดแค่ขั้นตอนนี้ เพราะ โปรแกรมMultimedia บางตัว เช่น Gmplayer จะรู้จักปุ่มทั้ง 3 แล้ว แต่บางตัว เช่น xmms ยังไม่รู้จัก แต่ ก็สามารถทำให้รู้จักได้ โดยการลงpackage เสริมคือ xmms-xf86audio (/usr/ports/audio/xmms-xf86audio)เป็นต้น
     จะยกตัวอย่างปุ่มอื่นๆ เช่น Fn+F3 (กดปุ่ม Fnค้างไว้ แล้วกด F3ตาม) คือปุ่มที่มีเครื่องหมาย www ซึ่งจะทำให้เรียกโปรแกรมFirefox webbrowserขึ้นมา ซึ่งมี keycode = 178
     เพิ่มใน ~/.Xmodmap ดังนี้
keycode 178 = XF86WWW
จากนั้น ใช้ vi editor เปิด ไฟล์ ~/.icewm/keys ขึ้นมา
$vi ~/.icewm/keys
พิมพ์ "G" ตามด้วย "o" แล้ว พิมพ์เพิ่ม บรรทัดนี้
key      "XF86WWW"     firefox3
Saveไฟล์ โดยพิมพ์ :wq! แล้ว กด Enter

     สุดท้าย ทำการแก้ไขเพิ่มข้อความนี้ในไฟล์ ~/.xintrc เพื่อให้ xmodmap ทำงาน กับ ~/.Xmodmap
xmodmap $HOME/.Xmodmap
แล้ว Reboot 1ครั้ง  แล้ว Login เข้ามาใหม่ เพื่อทดสอบ โดย ลองกด Fn+F3 ดู แล้ว ลุ้น...
     แว๊งสสสสส์... Firefox มาแว้วววว...

สามารถอ่านเพิ่มเติม ได้จาก ที่นี่ ครับ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น