แสดงบทความที่มีป้ายกำกับ Unix แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ Unix แสดงบทความทั้งหมด

วันศุกร์ที่ 25 กุมภาพันธ์ พ.ศ. 2554

Bluetooth USB Adapter กับ FreeBSD 8.1 (ตอนที่ 3) ตอนจบ

     ผมคงจะท้องอืด อึดอัดมากๆอย่างแน่นอน หากไม่ได้เขียนตอนที่3 ให้จบเรื่องนี้ เลยต้องรีบมาจัดการซะให้เรียบร้อยซะเลย...
     จากตอนที่ 2 ที่ลองใช้ obexapp ในการ ล้วงไฟล์ใน Samsung Star GT-S5233S มาดูเล่น มาคราวนี้ เรามาจกไฟล์กันเลยดีก่า ^_^
     ก็เริ่มจากการเสียบ Bluetooth USB dongle ให้เรียบร้อย แล้วก็เปิด xterm ขึ้นมา พิมพ์คำสั่งดังนี้
%obexapp -a 00:35:77:8a:55:ee -c -C ftrn -f
     ก็จะเจอ prompt รับคำสั่ง obex> ลองสั่ง ls เพื่อ ดูรายชื่อfile แล้ว ลอง cd เพื่อเข้าสู่directoryที่ต้องการดู

รับไฟล์จากโทรศัพท์มายังcomputer โดย คำสั่ง get

     เมื่อพบรายชื่อไฟล์ที่ต้องการ ก็ใช้คำสั่ง get เพื่อรับไฟล์ที่ต้องการมาเก็บไว้ใน user directory บน Computer โดย สั่ง get แล้วตามด้วยชื่อที่ถูกต้อง เมื่อรับไฟล์มาเรียบร้อย ก็จะกลับมาที่ obex> อีกครั้ง
     เมื่อต้องการ เลิกการเชื่อมต่อ ก็พิมพ์ คำสั่ง di (คือ DIsconnect นั่นเอง) ก็จะกลับไปสู่ prompt หลักของ xterm (%) เหมือนเดิม

     ส่วนการส่งไฟล์ไปยังโทรศัพท์ ก็เชื่อมต่อเหมือนกัน เพียงแต่เปลี่ยนคำสั่ง จาก get ไปเป็น put เท่านั้น และ สามารถระบุ path ของไฟล์บนComputer ได้เลย

การส่งไฟล์จาก computer ไปยัง โทรศัพท์มือถือโดยคำสั่ง put

และสุดท้าย คือการ set ให้ Computer เป็น Obex server คือ สามารถจัดการ รับส่งไฟล์ โดยจัดการผ่านโทรศัพท์มือถือได้เองเลย ขั้นตอนก็มีเพิ่มเติมอีกเล็กน้อย คือ
     1.สร้าง directory ว่างๆขึ้นมา ใน root directory ของเรา เช่น /home/charan/bluetooth เพื่อเป็นที่เก็บfile สำหรับรับส่งผ่าน Bluetooth โดยเฉพาะ และให้แน่ใจว่า สามารถเขียนอ่านไฟล์ได้แน่ๆ ผมจึงตั้ง permission เป็น 777 ซะเลย
     2.พิมพ์คำสั่ง เพื่อให้ FreeBSD ทำหน้าที่ Obex Server โดยกำหนดให้ ทำงานใน account ของ user คือ charan ดังนี้
#obexapp -s -S -C 10 -u charan -r /home/charan/bluetooth
     เสร็จแล้ว ลองใช้ ps หาดูว่า มี process obexapp ทำงานแล้วหรือไม่ โดยสั่งดังนี้
%ps ax | grep obexapp
ก็จะพบว่า obexapp ทำงานแล้ว

การset obex server

     และเมื่อทดลอง ใช้มือถือรับส่งไฟล์ ก็จะใช้งานได้เหมือน การโอนไฟล์ระหว่างโทรศัพท์ 2 เครืองเลย เมื่อต้องการ เลิกทำงาน ก็สั่ง kill -9 process ของ obexapp นั้นได้เลย...

สามารถ เข้าไปอ่าน เอกสารอ้างอิง ได้ที่นี่
FreeBSD - Bluetooth

จบล่ะครับ ^_^

วันพฤหัสบดีที่ 24 กุมภาพันธ์ พ.ศ. 2554

Bluetooth USB Adapter กับ FreeBSD 8.1 (ตอนที่ 2)

     จากตอนที่1 หลังจากที่เราได้ลง Driver ของ Bluetooth USB Dongle และทดสอบค้นหาอุปกรณ์กันไปแล้ว     ต่อไปก็เป็นการจับคู่(Pairing) ระหว่างComputerของเรา กับ โทรศัพท์มือถือกัน
     งานนี้ hcsecd daemon จะเป็นพระเอกจัดการเรื่องการยืนยันความถูกต้องของอุปกรณ์Bluetooth จึงต้องมีการกำหนดค่าของอุปกรณ์ให้รู้จักกันซะก่อน โดยแก้ไขไฟล์ /etc/bluetooth/hcsecd.conf เพื่อกำหนดชื่ออุปกรณ์ และค่า PIN code ดังนี้
#vi /etc/bluetooth/hcsecd.conf
แล้วเพิ่มค่าBD_ADDR ของอุปกรณ์ และ ชื่อ, PIN code ไปที่บรรทัดล่างสุด  ยกตัวอย่างดังนี้

device {
             bdaddr   00:35:77:8a:55:ee;
             name      "GT-S5233S";
             key          nokey;
             pin          "1234";
}

บันทึกแล้ว ก็ไปสู่ขั้นตอนต่อไป ก็คือ การให้ hcsecd daemon ทำงานทุกครั้งเมื่อเปิดเครื่อง โดยแก้ไขไฟล์ /etc/rc.conf
#vi /etc/rc.conf
เพิ่มข้อความดังนี้ ไปท้ายไฟล์ /etc/rc.conf
hcsecd_enable="YES"

     บันทึกไฟล์ แล้ว restart เครื่อง 1ครั้ง

เมื่อเสร็จขั้นตอนนี้แล้ว ก็จะเป็นการ Install โปรแกรม obexapp ซึ่งจะใช้จัดการเรื่องการย้ายไฟล์ผ่านทาง Bluetooth นั่นเอง โดย install ผ่าน ports ดังนี้
-เปิด xterm ขึ้นมา พิมพ์ su กด Enter ใส่password แล้วสั่ง
#cd /usr/ports/comms/obexapp && make install clean
     รอสักครู่ เสร็จแล้ว สั่ง
#rehash
เสร็จแล้ว พิมพ์ exit กด Enter เพื่อออกจาก root มาเป็น เรา แล้ว มาลองกันดูครับ โดยลองพิมพ์ใน xterm ดังนี้
%obexapp -a 00:35:77:8a:55:ee -c -C ftrn -f
     ถ้าไม่มีปัญหาอะไร ก็จะเจอ prompt ดังนี้

obex>

ลองสั่ง ls  แล้วกด Enter ก็จะเจอรายการชื่อ Directory และ File ของหน่วยความจำในโทรศัพท์กันล่ะ
obexapp client แบบ ftrn จากComputer ไปยัง มือถือ
     และเราสามารถใช้คำสั่ง cd , ls , get , put ได้ในการเคลื่อนย้ายไฟล์ผ่าน bluetooth ซึ่งคงต้องไปว่ากันต่อไป ในตอนสุดท้าย ซึ่งจะ set ให้ Computer เป็น Obex Server ด้วย
     พบกันใหม่ตอนที่ 3 นะครับ ^_^

วันพุธที่ 23 กุมภาพันธ์ พ.ศ. 2554

Bluetooth USB Adapter กับ FreeBSD 8.1 (ตอนที่ 1)

     ก็เนื่องมาจาก อยากลองใช้ Bluetooth USB Adapter กับ FreeBSD จริงๆสักที (เห็น Ubuntu มันทำได้ง่ายๆ)ก็ลองค้นหาวิธีจาก Google ก็ชักเข้าเค้า...
     อุปกรณ์ของผมคือ Bluetooth USB Adapter รุ่น HK-760 Version 2.0 และ NoteBook Compaq Presario M2000 เจ้าเก่า กับ Samsung Star GT-S5233S
Bluetooth USB รุ่น HK-760 Version 2.0
     ขั้นแรกสุด ก็ต้องLoad module Driver ของ bluetooth usb ก่อนดังนี้
-แก้ไข File /boot/loader.conf ด้วย vi
%sudo vi /boot/loader.conf
 เลื่อน cursor ไปบรรทัดล่างสุด กด "o" เพื่อเพิ่มบรรทัดนี้เพิ่มเข้าไป
ng_ubt_load="YES"
 เสร็จแล้ว กด Esc 1ครั้ง แล้วบันทึกโดย พิมพ์ :wq ก็เป็นอันเรียบร้อย แต่ต้องสั่ง Rebootก่อนจึงจะมีผล ถ้าต้องการให้มีผลทันที ต้องสั่ง Load module ของ Driver นี้โดยสั่งดังนี้
#kldload ng_ubt
     จากนั้น ก็เสียบ Bluetooth USB Dongle เพื่อทดสอบกันเลย ซึ่งปกติเมื่อเสียบอุปกรณ์ก็มักจะมีข้อความบางอย่างขึ้นมาในxterm เพื่อบอกว่า FreeBSD รู้จักอุปกรณ์นี้นะ แต่ของผมไม่ยักมีแฮะ แต่ไม่เป็นไร ลองทำขั้นตอนถัดไป...
     ขั้นต่อไปคือ สั่ง run script สำหรับ start bluetooth ดังนี้(เป็น root ก่อนนะครับ)
#/etc/rc.d/bluetooth start ubt0
      ก็จะพบข้อความแจ้งรายระเอียดของอุปกรณ์อีกครั้ง เช่น BD_ADDR และอื่นๆอีกมากมาย แต่ของผมก็ไม่มีข้อความอะไรแจ้งเลยเหมือนเดิม (เฮ้อ... ชักถอดใจซะแล้ว..)
     ขั้นต่อไปคือ ลองเปิดBluetooth ในโทรศัพท์มือถือดู(Bluetooth On)เพื่อใช้ทดสอบว่าอุปกรณ์ของเราทำงานจริงหรือไม่ จากนั้น ก็ลองใช้คำสั่งทดสอบหาดูว่าพบโทรศัพท์รึปล่าว ดังนี้...
%hccontrol -n ubt0hci inquiry
 ถ้าเจอ ก็จะพบข้อความคล้ายๆอย่างนี้...
 
% hccontrol -n ubt0hci inquiry
Inquiry result, num_responses=1
Inquiry result #0
       BD_ADDR: 00:35:77:8a:55:ee
       Page Scan Rep. Mode: 0x1
       Page Scan Period Mode: 00
       Page Scan Mode: 00
       Class: 52:02:04
       Clock offset: 0x78ef
Inquiry complete. Status: No error [00]

      แต่จะใช่โทรศัพท์เราอ๊ะป่าว ก็ต้องลองถามดูต่ออีก โดยเอาค่า BD_ADDR: ไปถามอีก ดังนี้...
%hccontrol -n ubt0hci remote_name_request 00:35:77:8a:55:ee
 ก็จะเจอคำตอบคล้ายๆยังงี้...
BD_ADDR: 00:35:77:8a:55:ee
Name: GT-S5233S

     นั่นคือ ชื่อของโทรศัพท์ของเรานั่นเอง อย่างงี้ แสดงว่า Work!!
และเมื่อลองใช้โทรศัพท์ค้นหา Computer ของเรา ก็จะเจอรายชื่ออุปกรณ์ ชื่อ hostname(ubt0) ของเรา เช่น m2000.rspg (ubt0)

     คงต้องไปต่อกัน ตอนที่ 2 กันต่อนะครับ จะได้ไม่ยาวเกินไป แล้วมาลุยกันต่อนะครับ

วันพฤหัสบดีที่ 17 กุมภาพันธ์ พ.ศ. 2554

กู้ไฟล์ที่เผลอลบไปบน FreeBSD ด้วย testdisk (Data Recovery On FreeBSD with testdisk)

     2-3วันก่อน เผลอลบไฟล์ผิดตัวไป ก็เลยนั่งเหงื่อตก เพราะไม่รู้จะกู้กลับมายังไงดี ไม่เคยทำซะด้วย เลยตั้งสติ แล้วรีบถามพี่google เพื่อนเก่าโดยด่วน ก็พบคำตอบน่าสนใจ นั่นคือ TestDisk นั่นเอง
     สำหรับ TestDisk นั้น มีทั้ง version บน dos, windows , linux, FreeBSD, Sun OS , Mac OSX และอีกหลายระบบ และยังมีความสามารถมากมาย กับ หลายๆ File System อีกด้วย
     และเนื่องจาก ใน FreeBSD ก็มี TestDisk มาให้แล้ว ใน ports(/usr/ports/sysutils/testdisk) งั้นมา install กันเลย ใน xterm หรือ terminal แล้วแต่ถนัด
#cd /usr/ports/sysutils/testdisk && make install clean
     รอสักพัก เมื่อ install เรียบร้อยแล้ว สั่ง rehash อีกครั้ง เพื่อจะได้เรียกใช้ TestDisk ได้โดยไม่ต้อง reboot ใหม่
#rehash
สั่งใน xterm ดังนี้
#testdisk 
ก็จะเจอกับ interface ดังรูป

จากนั้นก็ดูตามตัวอย่าง ก็ละกันครับ
เลือกPartitionที่ต้องการกู้ไฟล์

เลือกชนิดของ partition

เลือก Advance

เลือก Partition ที่ต้องการกู้ไฟล์คืน และเลือก Undelete


ใช้cursor เลื่อนขึ้นลงหาไฟล์ที่ต้องการกู้คืน(บรรทัดสีแดง)แล้วกด C (copy)

จะมีคำถามให้เลือกว่าจะcopy ไฟล์นั้นมาไว้ที่ใด

เมื่อcopyเสร็จ ก็กลับมาหน้าเดิม กด Q เพื่อออกจากโปรแกรม

     หวังว่า คงเป็นประโยชน์สำหรับผู้ที่ชอบเผลอลบไฟล์แบบไม่ดูตาม้าตาเรือแบบผมนะครับ ;-p

วันพฤหัสบดีที่ 7 ตุลาคม พ.ศ. 2553

Upgrading FreeBSD 8.0 To 8.1

     วันนี้ได้ฤกษ์ upgrade FreeBSD เป็น 8.1 สักที ใช้ 8.0 มาหลายเดือนแล้ว ก็ต้องหาวิธีสักหน่อย ปรากฏว่า ก็อยู่ที่หน้าหลักของ FreeBSD.org นั่นเอง

     ขั้นตอนการ upgrade ไม่ยุ่งยาก(ง่ายกว่าที่คิดเยอะเลย ;-)) มาเริ่มกันเลยครับ
ก่อนอื่นให้ใช้สิทธิ์ของ root นะครับ แล้วสั่ง freebsd-update upgrade
$su
Password:
#freebsd-update upgrade -r 8.1-RELEASE

     จากนั้น โปรแกรมจะดำเนินการ ตรวจสอบ และ สอบถามเราว่า ระบบที่ตรวจสอบ ถูกต้องเหมาะสม หรือไม่ และ เมื่อตอบ Yes ก็จะดำเนินการ download patch ต่างๆมาให้จนครบ ก็ตอบ yes ในเกือบทุกคำถาม เว้นในส่วนของ /etc/hosts ให้แก้ไขได้ตามต้องการ หรือ แก้ไขตามของเก่าครับ
     เมื่อดำเนินการเสร็จแล้ว จะกลับมาที่ promt ก็สั่งคำสั่งต่อไป
#freebsd-update install
     โปรแกรม จะทำการ install patch ทั้งหมด เมื่อเสร็จแล้ว โปรแกรม จะแนะนำให้ reboot ระบบใหม่
และ ให้สั่ง freebsd-update install อีกครั้ง
ก็ให้สั่ง reboot ซะก่อน
#shutdown -r now
      เมื่อเข้าสู่ระบบใหม่แล้ว ก็สั่ง install userland อีกรอบ
#freebsd-update install

เมื่อ install เสร็จแล้ว ก็เข้าสู่ขั้นตอนสุดท้าย คือ reboot อีกครั้ง
#shutdown -r now
เมื่อเข้าสู่ระบบอีกครั้ง ลองตรวจสอบดู ว่า เป็น RELEASE 8.1 แล้วหรือยัง ดังนี้
#uname -a

ถ้าถูกต้อง ก็จะแสดงเป็น 8.1-RELEASE ถูกต้องครับ
FreeBSD mylaptop 8.1-RELEASE FreeBSD 8.1-RELEASE ...
 จะว่าไป upgrade ง่ายกว่า ubuntu อีกนะเนี่ย ผมว่านะ.. :-D

วันพฤหัสบดีที่ 29 เมษายน พ.ศ. 2553

Xterm กับ Font Thai (ภาษาไทย)

     เคยสงสัยมานานมากแล้วว่า ทำไม Terminal ใน UBUNTU ถึงได้มีFont ภาษาไทย แล้ว Xterm ใน FreeBSD หล่ะ ติดตั้งFont Thai ได้อ๊ะป่าวหว่า??
     ลองค้นดูอีกซักครั้ง... โป๊ะเช๊ะ ที่นี่เลย
แต่ก่อนอื่น เราต้องมี thailocale (TIS-620) อยู่ในระบบแล้วนะครับ

    1.ขั้นแรก ท่านให้ Download Font ภาษาไทย ได้จาก ที่นี่ ครับ
    2.แตกไฟล์ที่ได้มา โดย ใช้คำสั่ง
    gunzip thailinux.tar.gz 
จะได้ไฟล์ thailinux.tar  แล้วแตกอีกครั้งโดยคำสั่ง
    tar -xvf thailinux.tar
จะได้ไฟล์ เหล่านี้
FontTastic.fm  thai6x14.bdf   thai8x13.pcf   thai9x13.pcf
README         thai7x18.bdf   thai8x20.bdf   thaiXmap.v01
fonts.dir      thai8x13.bdf   thai9x13.bdf
3.Run โปรแกรม mkfontdir (ขั้นนี้ ทำภายใต้ x window) โดยให้ Run คำสั่งนี้ ใน Folder ที่เก็บFontดังกล่าว เช่น เก็บไว้ที่ /root/thaifont ก็ทำดังนี้
#cd /root/thaifont
#mkfontdir
โปรแกรม จะทำการสร้างไฟล์ fonts.dir ขึ้นมา และ เมื่อ cat ดูจะพบข้อความดังนี้
5 
thai7x18.bdf -thai-fixed-medium-r-normal--14-100-100-100-m-70-tis620.2529-1 
thai6x14.bdf -thai-fixed-medium-r-normal--10-100-75-75-c-60-tis620.2529-1 
thai8x13.pcf thai8x13 
thai8x20.bdf -thai-fixed-medium-r-normal--16-114-100-100-m-80-tis620.2529-1 
thai9x13.pcf thai9x13 

     โดยชื่อของฟอนต์ที่จะใช้คือ คอลัมน์ทางขวา เช่น thai8x13 , thai9x13

4.ทำให้ xwindow รู้จ้กกับ Font ที่เพิ่มมาใหม่ โดย คำสั่ง xset +fp (ชื่อfolder ที่เก็บfont)

#xset +fp /root/thaifont
(หากต้องการ ให้เรียกใช้ฟอนต์นี้ทุกครั้งเมื่อ LOGIN ให้เพิ่มบรรทัดบนนี้ใน ~/.xinitrc)
5.ตรวจสอบว่าติดตั้งสมบูรณ์หรือไม่ ด้วยคำสั่ง xlsfonts (ports/x11-fonts/xlsfonts)
#xlsfonts | grep "thai"
จะพบรายชื่อFONTS ที่เราเพิ่มเข้ามา

6.ทดสอบการใช้งาน โดย เปิด xterm ขึ้นมา ดังนี้
$xterm -fn thai8x13
     ให้ลองสั่ง cat หรือ vi ไฟล์ข้อความที่เป็นภาษาไทยดูว่า แสดงผลได้ถูกต้องหรือไม่
    
     คราวนี้ xterm ก็อ่านภาษาไทยออกแล้วครับ ถ้าต้องการพิมพ์ภาษาไทยด้วย ก็ให้สั่ง
$xmodmap /root/thaifont/thaiXmap.v01
แล้วสลับภาษาโดย กด Scroll Lock แต่ไม่ค่อยสะดวกเท่าไร ก็เลยไม่ได้ใช้ครับ  ;P

วันศุกร์ที่ 16 เมษายน พ.ศ. 2553

FreeBSD: Apache 2.2 + php 5 Installation (บันทึกกันลืม) ตอน3

     ตอนนี้เป็นตอนสุดท้ายแล้ว สำหรับการลง Apache22 กับ php5 งั้นไปกันต่อ...
การ Install php5-extensions:
#cd /usr/ports/lang/php5-extensions
#make config
เลือก extensions ต่างๆ ทีจะใช้งาน ผมเลือกตามนี้
BZ2, CALENDER, CTYPE, DOM, FTP, GD, GETTEXT, HASH, ICONV, IMAP, LDAP, MBSTRING, MYSQL, MYSQLI, OPENSSI, PCRE, PDF, PDO, POSIX, SESSION, SIMPLEXML, SOAP, SOCKETS, SQLITE, TOKENIZER, XML, XMLREADER, XMLWRITER, ZIP, ZLIB

เลือกเสร็จ สั่ง INSTALL
#make install clean
เมื่อเสร็จแล้ว สั่ง Restart Apache อีกครั้ง
#/usr/local/etc/rc.d/apache22 restart
ลองเรียก test.php มาดูอีกครั้ง ก็จะเห็น Extensions ใหม่ๆ เพิ่มเข้ามาแล้ว

  
     เฮ้อ.. จบแล้ว

ขอขอบคุณ PDF ไฟล์ จาก คุณ อัครจร นาถาบำรุง ว.ท.บ. (ฟิสิกส์) ซึ่งผมใช้อ้างอิงกระบวนการติดตั้งทั้งหมดครับ ;-)
สามารถ Download ได้ที่นี่ครับ
www.sothorn.org/download/famp.pdf

FreeBSD: Apache 2.2 + php 5 Installation (บันทึกกันลืม) ตอน2

จากตอนที่แล้ว หลังจาก ลง apache22 แล้ว ก็มาถึง PHP ต่อ...
#cd /usr/ports/lang/php5
#make config
เลือก options เกือบหมด เว้น debug แล้ว
#make install clean
ใช้เวลาสักพักก็เสร็จ จากนั้น เป็นการ Config ไฟล์ php.ini โดยการ COPY ไฟล์ตัวอย่างมาปรับใช้
#cp /usr/local/etc/php.ini-development /usr/local/etc/php.ini
 ปรับแต่งไฟล์ php.ini โดย vi
#vi /usr/local/etc/php.ini
เปลี่ยนบรรทัดต่อไปนี้
;default_charset = "iso-8859-1"
เป็น default_charset = "tis-620" และเอาเครื่องหมาย ; ออกด้วย
แล้วแก้ไข 2 บรรทัดนี
;upload_tmp_dir =
;session.save_path = "/tmp"
โดยให้เอา ; ออก แล้วแก้ดังนี้
upload_tmp_dir = "/tmp/uptmp"
session.save_path = "/tmp/sesstmp"
เสร็จแล้ว ก็สร้าง Directory /tmp/uptmp กับ /tmp/sesstmp ขึ้นมา ใน MODE 777
#mkdir /tmp/uptmp
#mkdir /tmp/sesstmp
#chmod 777 /tmp/uptmp
#chmod 777 /tmp/sesstmp
ขั้นต่อไป แก้ไขไฟล์ httpd.conf ให้รองรับ php เสียก่อน ดังนี้
#vi /usr/local/etc/apache22/httpd.conf
ค้นหาบรรทัดที่มีข้อความ
DirectoryIndex index.html
แล้วเพิ่มข้อความลงไป เป็นดังนี้
DirectoryIndex index.html index.php index.phps index.phtml index.cgi index.pl
ค้นหาบรรทัด
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
แล้วเพิ่มบรรทัดต่อไปนี้ลงไป
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps
เสร็จแล้ว Save file แล้ว Restart Apache อีกครั้ง
#/usr/local/etc/rc.d/apache22 restart
ขั้นสุดท้าย สร้างไฟล์ทดสอบขึ้นมา ดังนี้
#vi /usr/local/www/apache22/data/test.php
พิมพ์ดังนี้ลงไป
<?php phpinfo(); ?>
Save ไฟล์ แล้วเรียกผ่าน Browser ดู
http://localhost/test.php

     เรียบร้อยแล้ว
ไปต่อตอนที่ 3 กันต่อครับ ต่อไปจะติดตั้ง php5-extensions กัน

FreeBSD: Apache 2.2 + php 5 Installation (บันทึกกันลืม) ตอน1

     อยากลองเชื่อมต่อ VFP9 กับ PHP ก็เลยต้องลง Apache กับ php ซะก่อน บันทึกไว้ดูคราวหน้า...
ลง Apache 2.2 :
#cd /usr/ports/www/apache22
#make \
?WITH_LDAP_MODULES=yes \
?WITH_MYSQL=yes \
?WITH_SSL_MODULES=yes \
?WITH_THREADS=yes \
?install && make clean
รอซักพัก เสร็จแล้ว เพิ่มข้อความนี้ใน /etc/rc.conf เพื่อสั่ง Start apache ตอนBootเครื่อง
apache22_enable="YES"
เสร็จแล้วลองทดสอบโดยเรียกดูในช่อง URL ของ web browser เช่น Firefox
http://localhost
ถ้าสำเร็จ จะเห็นข้อความ "It works!" ดังรูป

ขั้นต่อไป...เป็นการติดตั้ง PHP ครับ ต่อ ตอนที่2 นะครับ...

วันพุธที่ 14 เมษายน พ.ศ. 2553

การติดตั้ง MySQL 5.1 บน FreeBSD 8 ให้รองรับภาษาไทย(TIS-620)

     เนื่องจากต้องการ ลง MySQL 5.1 เพื่อใช้ทดสอบการเชื่อมต่อกับ Visual FoxPro 9 ที่เพิ่งลงไปก่อนหน้านี้ ก็เลยต้องไปค้นวิธีลงผ่าน ports เพื่อให้รองรับระบบภาษาไทยร่วมกับ VFP9 ได้อย่างไม่มีปัญหา เลยขอมาบันทึกกันลืมไว้ละกันครับ
#cd /usr/ports/databases/mysql51-server
#make \
?WITH_CHARSET=tis620 \
?WITH_XCHARSET=all \
?WITH_COLLATION=tis620_thai_ci \
?WITH_OPENSSL=yes \
?BUILD_OPTIMIZED=yes \
?WITH_ARCHIVE=yes \
?WITH_FEDERATED=yes \
?WITH_NDB=yes \
?install && make clean
รอซักพักใหญ่ เมื่อติดตั้งเสร็จ  ก็ไปทำขั้นต่อไป คือ Config ไฟล์ my.cnf
ผมเลือกใช้ไฟล์ my-medium.cnf โดย COPY ไปไว้ใน /etc/ ดังนี้
#cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf
#chown root:sys /etc/my.cnf
#chmod 644 /etc/my.cnf
เสร็จแล้ว ก็สั่งให้ MySQL Start ทุกครั้งเมื่อBoot เครื่องใหม่ทุกครั้ง โดยเพิ่มข้อความนี้ใน /etc/rc.conf
mysql_enable="YES"
จากนั้น ให้ Restart เครื่องใหม่
#shutdown -r now
แล้ว Log in เข้ามาใหม่ จากนั้น ทำการสร้าง User root และ Password ของ root โดยสั่งดังนี้
#mysqladmin -u root -p9158204
(9158204 เป็นค่าสมมุตินะครับ)
ลอง Log in โดยสั่ง
#mysql -u root -p9158204
ถ้าทุกอย่างถูกต้องดี ก็จะเข้าสู่บรรทัดคำสั่ง ของ MySQL ครับ


บทความน่าอ่าน:-
ภาษาไทยใน MySQL เวอร์ชัน 5 กับ VFP และ PHP

วันเสาร์ที่ 10 เมษายน พ.ศ. 2553

เมื่อVFP บน Wine ติดต่อกับ MySQL บน FreeBSD เครื่องเดียวกัน(2)

     คราวที่แล้ว ได้ทดลอง Setup MySQL-Connector-ODBC กันไปแล้ว หวังว่าคงไม่มีปัญหาอะไรนะครับ ต่อไปเรามาลอง เชื่อมต่อ (Connect) กับ MySQL กันเลย
     ขั้นแรก ลองสร้าง User DSN ขึ้นมาก่อน โดยอาศัย ODBC Data Source Administrator ดังนี้
%wine ~/.wine/drive_c/windows/system32/odbcad32.exe
ก็จะมีโปรแกรมขึ้นมาให้ Setup DSN ดังรูป

 ก็ให้กรอกข้อความสร้าง การเชื่อมต่อให้ครบถ้วน ส่วนภาษาไทย ให้ Set ค่า Character Set : เป็น tis620
     เมื่อกำหนดค่าเรียบร้อยแล้ว ก็ลองกดปุ่ม Test ดูครับ ถ้าถูกต้อง จะมี MessageBox เด้งขึ้นมาว่า "Connection Successful"
     คราวนี้ เราก็มาทดสอบการเชื่อมต่อโดย Visual FoxPro กันต่อ
ให้ Run VFP9 ขึ้นมา แล้วลองเชื่อมต่อกับ User DSN ที่เราสร้างขึ้น ด้วยคำสั่ง SQLCONNECT()

      จากนั้นก็ เลือก DSN ที่เราสร้างขึ้นมา กด OK แล้วลองเรียกข้อมูลขึ้นมาดู ด้วยคำสั่ง SQLEXEC ดังรูป


     แล้วข้อมูลจาก MySQL บน FreeBSD ของเราก็แสดงออกมาได้อย่างถูกต้อง...

ขอขอบคุณ ข้อมูลจาก http://www.songkwae.com 
แหล่งข้อมูลน่าสนใจ:
-หลากหลายวิธีในการติดต่อฐานข้อมูลในวิชวลฟอกส์โปร

-ภาษาไทยใน MySQL เวอร์ชัน 5 กับ VFP และ PHP 

-http://wiki.winehq.org/winetricks

วันศุกร์ที่ 9 เมษายน พ.ศ. 2553

เมื่อVFP บน Wine ติดต่อกับ MySQL บน FreeBSD เครื่องเดียวกัน(1)

     พอเริ่มมาใช้UBUNTU(ตั้งแต่ 7.04) ผมก็หันหลังให้กับ Window$ไปเลย(ไม่มีเงินจ่ายค่าLicenseอ่ะ 5,885.- ;-P) เลยหยุดเล่น Visual Foxpro มาตั้งแต่นั้นเลย เสียดายอ่ะ
     ยังไม่สายสำหรับการเริ่มต้นใหม่ เลยคราวนี้ตั้งไจใหม่ แต่ต้องทำให้มันWORK บน Unix นี่ซิ ท้าทายแฮะ...
     Google Is Your Friend อีกล่ะ ก็ไม่รู้จะหันหน้าไปพึ่งใครนี่นะ สู้ๆ... ก็เลยไปเจอวิธีการที่อยากลองมากๆ คือ ผมอยากให้ VFP9 บน WINE ติดต่อกับ MySQL บน FreeBSD ดู ตามLINK ข้างล่างนี่เลยครับ
-VFP กับ .NET
 สำหรับผม สุดยอดมากๆ อย่างที่ต้องการเลย ผมเลยมาลองใน FreeBSD มั่งดิ
วิธีการSetup ที่ผมลองทำตามท่านอาจารย์แนะนำ มีขั้นตอนง่ายๆดังนี้
1. ติดตั้ง winetrick ซึ่งเป็น Script พระเอกสำหรับงานนี้เลย ดังนี้
%fetch http://kegel.com/wine/winetricks
พอได้ Script มาแล้ว ผมก็เอามา เก็บไว้ใน ~/bin แล้วก็
%chmod +x winetricks 
ทีนี้เราสามารถ สั่ง winetricks ใน Prompt ได้แล้ว
2. ติดตั้ง MDAC 2.8
%winetricks mdac28
รอสักพัก เมื่อติดตั้ง MDAC28 เสร็จ ก็ไปขั้นต่อไป
3. ติดตั้ง mysql-connector-odbc-3.51.27-win32.msi
%wine msiexec /i mysql-connector-odbc-3.51.27-win32.msi
(หมายเหตุ MySQL-Connector อาจเปลี่ยนไปใช้ VERSION ล่าสุดได้ครับ)
รอซักพัก ก็จะมี Installer ก็ตอบ YES ไปเรื่อยๆ จนติดตั้งเสร็จ...
4. สั่ง Allow Port 3306 สำหรับ MySQL โดยสั่งดังนี้
%wine ~/.wine/drive_c/windows/system32/cliconfg.exe

5. Register DLL ซะก่อน

$WINEDLLOVERRIDES="odbccp32,odbc32=n" wine ~/.wine/drive_c/windows/system32/myodbc3i.exe -a -d -t"MySQL ODBC 3.51 Driver;DRIVER=myodbc3.dll;SETUP=myodbc3S.dll"

เสร็จแล้ว ก็ลองเรียก ODBC Datasource Administrator มาทดสอบดู เพื่อเตรียมทดสอบการเชื่อมต่อ ขั้นสุดท้ายได้แล้วครับ
$WINEDLLOVERRIDES="odbccp32,odbc32=n" wine ~/.wine/drive_c/windows/system32/odbcad32.exe


ต่อตอนที่2 นะครับ อิอิ...

FreeBSD:เรื่องวุ่นๆ ของ ภาษาไทย กับ Wine

     หลังจากได้ลองลง Visual Foxpro 6 ใน Ubuntu เมื่อวันก่อน ก็ค่อนข้างสะดวก เพราะมีFont ภาษาไทยจาก M$ อยู่ใน directory Font ของ wine อยู่นานแล้ว ทุกอย่างเลยง่าย
     แต่ทีนี้ พอจะลง Visual Foxpro 9 ใน FreeBSD บ้าง ก็พบว่า...
     -ลงได้สำเร็จดี แต่ สลับภาษาไทยยังไม่ได้ คือ พิมพ์ก็ไม่ได้ อ่านภาษาไทยก็ไม่ออก ว๊าาา...
ลองทำสารพัดวิธี ก็ยังไม่มีทีท่าว่าจะได้ อ๊ากซ์ซ์ซ์ (ทำ)ไมว้าาา...
     สุดท้ายลองค้นในgoogle อีกครั้ง ก็พบกับกระทู้อันนี้ในUbuntuClub.com เข้า ชักเห็นแสงสว่างรำไร...
     ขั้นตอนที่ผมสรุปได้ก็มีดังนี้
1.ลบ directory .wine ออก เพื่อให้ระบบwine reset ค่าเริ่มต้นใหม่ซะ
2.ลง thai locale จากport (/ports/misc/thailocale) ดังนี้
#cd /usr/ports/misc/thailocale && make install clean

3.เปลี่ยน locale เป็น th_TH.TIS-620 โดย
     สำหรับ csh แก้ไข file ~/.cshrc โดยเพิ่มข้อความดังนี้
setenv PATH_LOCALE /usr/local/share/locale
setenv LANG th_TH.TIS-620
setenv LC_ALL th_TH.TIS-620
     สำหรับ bash แก้ไข file ~/.bashrc  โดยเพิ่มข้อความดังนี้
export PATH_LOCALE=/usr/local/share/locale
export LANG=th_TH.TIS-620
export LC_ALL th_TH.TIS-620
เสร็จแล้ว ลองตรวจดูด้วยคำสั่ง
$locale
ถ้าทุกอย่างถูกต้อง ก็จะเห็นประมาณนี้

LANG=th_TH.TIS-620
LC_CTYPE=th_TH.TIS-620
...
...  
LC_ALL=th_TH.TIS-620


4.ต่อไปก็ไป copy font m$ มาจากที่ๆคุณๆก็รู้ว่าที่ไหน มาไว้ใน Directory ~/.wine/drive_c/windows/Fonts ผมแนะนำ font Tahoma ครับ(window$) ไม่มีบัญหา
     ต่อไปก็  ทดลองดูหน่อย ผมลองโดยใช้ notepad ใน wine เองนั่นแหละผลคือ ไม่ได้ผลแฮะ พอกด Alt+Shift แล้วพิมพ์ดู ไม่ยักได้ แต่ทำไมบางครั้งได้หว่า
     อ๊ะ ใช่แล้วที่ได้ มักเห็นไฟ caps lock สว่างอยู่ ลองกด caps lock ดูด้วย ใช่เลย
สรุปว่า สลับมาภาษาไทยต้องกด Alt + Shift + Caps lock นั่นเอง (ไม่ทราบว่าท่านอื่นเป็นอย่างผมอ๊ะป่าวหนิ???)

วันอังคารที่ 6 เมษายน พ.ศ. 2553

เมื่อFreeBSDก็อยากกินจิ้งจอก(FoxPro9)แกล้มWINE

     หลังจากลงVisual Foxpro 6 ให้UBUNTUไปแล้ว FreeBSD8 ก็อยากลองมั่ง งั้นจัดให้เลย
ตอนแรก ผมก็ลองINSTALLมันง่ายๆโดยการ เปิดWINEFILE ขึ้นมา แล้วเข้าไปใน CDROM แล้วDOUBLE CLICK ที่ SETUP.EXE ตรงๆเลย... เน่าครับ ลองเป็น4-5ครั้งก็ไม่ผ่านอ่ะ = ="
     ลองถามพี่GOOGLE อ่อออ... เจอแล้ว มีขั้นตอนนิดหน่อย คือ
     -ก่อนINSTALL VFP9 ให้เลือก WINDOWS VERSION: เป็น WINDOWS NT 3.5
     -เมื่อเริ่มต้น INSTALL จะมีคำถามว่า จะINSTALL Gecko เลยอะป่าว... เลือก YES เลยครับ(ของผม WINE VERSION 1.1.42)
     -และสุดท้าย(ทีเด็ดอยู่ตรงนี้) ให้ CD เข้าไปใน DIRECTORY SETUP ของ VFP9 CD ครับ แล้ว สั่ง
$wine setup.exe
แล้ว หน้า INSTALLATION ก็จะปรากฏขึ้นมาให้เห็นในทันที...

     เอวัง ด้วยประการ ฉะนี้...

วันเสาร์ที่ 3 เมษายน พ.ศ. 2553

Copy Data CD บน FreeBSD ทาง Commandline(กันลืม)

     เมื่อวาน ลองไปค้นหา CD VFP9 กะว่าจะเอามาลองลงใน FreeBSD ผ่าน wine ดูมั่ง ปรากฏว่า ขอบCD มีการหลุดลอกออกมาเป็นแผ่นๆเลย แถมไม่มีCopyซะด้วย ทำไงดี...
     ก็เลยต้องหาทางทำ Copy เอาไว้ดีกว่า ลองค้นดู เจอนี่เข้า ลองเลยละกัน...
-ขั้นแรก สั่งสร้าง Image File(.iso) ด้วยคำสั่ง dd
$dd if=/dev/acd0 of=VFP9_COPY.iso bs=2048
รอซักพักใหญ่ ก็เรียบร้อย
-หากต้องการตรวจสอบ Image File ดูก่อน ว่ามีไฟล์อะไรบ้าง ก็สามารถสั่ง Mount File ISO มาดูได้ดังนี้
#mdconfig -a -t vnode -f VFP9_COPY.iso -u 0
#mount -t cd9660 /dev/md0 /mnt
อย่าลืมแปลงเป็น root ก่อนนะครับ( su ) แล้วเข้าไป ls ดูได้ใน Directory /mnt
หากดูจนพอใจแล้วก็อย่าลืม ยกเลิกการ mount ด้วยคำสั่งดังนี้
#umount /mnt
#mdconfig -d -u 0
สั่ง write CD ต่อได้เลย...
$burncd -f /dev/acd0 -s 4 -e data VFP9_COPY.iso fixate
     ได้ Copy มาเก็บไว้ให้อุ่นใจแล้วล่ะ...

วันเสาร์ที่ 27 มีนาคม พ.ศ. 2553

Burn CD ง่ายๆ ผ่าน Command line ใน FreeBSD

     เนื่องจาก(เอ๊..ทำไมต้องหาเหตุผลด้วยน๊า) ไปsearchเจอการสั่ง Burn CD ใน webนี้ เข้าโดยบังเอิญ  พอดีเลย... มีไฟล์ ISO ของ ubuntu 9.10 ให้ลองพอดี ลองเลยละกัน
     สั่งง่ายๆ ใน xterm ตามนี้เลยครับ
$burncd -f /dev/acd0 -s 4 -e data cd-image.iso fixate
ก็จะมี message แจ้งว่ากำลัง ดำเนินการไปกี่ Byte กี่ Percent ก็รอครับ ซักพัก...
     พอBurn เสร็จ ก็จะ Eject CD ออกมาเอง เรียบร้อย โรงเรียนFreeBSDครับ
ส่วนเอกสารอ้างอิงน่าสนใจ อ่านได้ที่นี่ครับ

วันจันทร์ที่ 22 มีนาคม พ.ศ. 2553

แปลงไฟล์mp4 จาก youtube มาเป็น mp3 กันเถอะ

     วันนี้ ว่าจะทดลองอัดเสียงร้องเพลงของคุณอิน กับ karaoke ที่เป็นเฉพาะ Backing Track (ดนตรีBackupเปล่าๆ) แต่เป็นไฟล์ mp4 ที่โหลดมาจาก youtube ซึ่งก็ไม่มีปัญหาอะไร แต่ว่าเกิดอยากลอง mix เสียงร้องกับดนตรีดู ก็เลยอยากได้แต่เสียงมาทดลองดู ทำไงดีน้า...
     จำได้ว่าเคยเห็นวิธีแปลง mp3 จาก mp4  ใน Ubuntuclub ซึ่งเป็นที่ที่ทำให้ได้รู้จักกับLinux Ubuntu เป็นครั้งแรก โดยท่านผู้รู้ในclub ได้กรุณาเขียนไว้ (อ่านต้นฉบับได้ที่นี่)
     พระเอกของเรื่องนี้ก็ไม่ใช่ไครที่ไหน FFMpeg นั่นเอง
สำหรับ FreeBSD หากยังไม่ได้ติดตั้ง ก็ให้ติดตั้ง 2 packages ผ่านทาง ports นี้ก่อนนะครับ นั่นคือ

     - ffmpeg (/usr/ports/multimedia/ffmpeg)
     - lame (/usr/ports/audio/lame)

     วิธีการก็แสนสะดวก ที่ xterm หรือ terminal ที่ท่านชื่นชอบ สั่งดังนี้ครับ
$ffmpeg -i input.mp4 -ab 128000 -ar 44100 output.mp3
     รอซักพัก... ก็เรียบร้อย ฟังได้เลย ไม่ต้องซื้อ... เอ๊ยย... ไม่ต้องรอนาน ;-)
   

วันอาทิตย์ที่ 21 มีนาคม พ.ศ. 2553

แปลง pdf file ไปเป็น jpg อย่างง่ายด้วย ImageMagick

     วันนี้ คุณอิน ต้องการสั่งซื้อสินค้าทางInternet หลังจากโอนเงินทางInternet Banking แล้ว ก็สั่งพิมพ์ใบโอนเก็บไว้เป็นไฟล์PDF ผ่านทางMenu พิมพ์ ของFirefox
     ทีนี้พอแจ้งการชำระเงินผ่านทางหน้าWeb ก็มีช่องให้Upload ไฟล์ใบโอนเงินไปได้ด้วย เลือกเสร็จสรรพ ก็กด ปุ่ม ตกลง
     ERROR อ่ะครับ... มีข้อความแจ้งว่า ให้Upload เป็นไฟล์ jpg เท่านั้น กรรม...
ทำไงล่ะทีนี้... อ๋อ.. นึกออกแล้ว ลองแปลงจาก PDF ไปเป็น JPG อย่างง่ายๆเลยดีกว่า
     ImageMagick เป็นคำตอบสุดท้าย สำหรับผม ซึ่งใช้ Gimp ไม่เป็นอ่ะ สั่งง่ายๆเลย ดังนี้
$convert Input.pdf Output.jpg

แค่นี้จริงๆครับ แป๊บเดียวเลย ได้ไฟล์รูปภาพ JPG ออกมาแล้ว Upload ได้เลย จบข่าว...
     convert เป็นคำสั่งที่ใช้ในการแปลงไฟล์ ได้หลากหลายรูปแบบมากๆ บนUnix และ Linux ที่ไม่ซับซ้อนมากนัก โดยเฉพาะมือใหม่อย่างผม (ก็ยังไม่เก่งซักทีอ่ะ เฮ้อ...)

     ศึกษาการใช้งานต่อได้ที่นี่ครับ Examples of ImageMagick Usage

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

Sound Recorder อย่างด่วน กับ SoX ฉบับผมเอง

     ช่วงนี้ คุณอิน กำลังฝึกร้องเพลงสากล จากclip ใน Youtube ที่โหลดมา ทำไปทำมา เกิดอยากอัดเสียงร้อง ของตัวเองไว้ฟัง =="   งานเข้าละสิ...
     ค้นไปค้นมา... เจอล่ะ SoX ครับ ง่ายสุด (ยังไม่ได้หัดใช้ Audacity ซักกะที...)
พอดีว่า เคยลง sox ไว้นานแล้ว เพื่ออาศัยเปิดไฟล์ ogg ตอน Startup IceWM ให้มีเสียงเพลงนำ เหมือนใน Gnome หรือ KDE ไง
     ขั้นแรก ต้องมี sox ในเครื่องก่อนครับ สำหรับ FreeBSD ลงผ่านports ได้เลย ;-)
#cd /usr/ports/audio/sox && make install clean
แล้วเลือก options ที่ต้องการทั้งหมดไปเลย
     จากนั้น ให้เสียบ Microphone เข้าช่องสำหรับ Microphoneที่จะใช้บันทึกเสียง แล้วก็ปรับระดับเสียง สำหรับ Microphone และ ระดับเสียงสำหรับ บันทึกเสียง
สำหรับผม ซึ่งใช้ mixer เป็นตัวจัดการระดับเสียงที่ติดมากับ FreeBSD อยู่แล้วก็สั่งดังนี้
$mixer mic 75:75
$mixer rec 75:75
นั่นคือ ปรับระดับเสียงของ microphone ไปอยู่ที่ 75(จาก scale 100) และ ระดับความดังการบันทึกเสียงไปที่ 75 เหมือนกัน สำหรับค่านี้ ก็ลองปรับเองดูนะครับ ตามสะดวก
     เสร็จแล้ว ก็เตรียมบันทึกเสียงกันเลย ผมใช้ชุดหูฟังที่มา microphone มาด้วยในตัวธรรมดา เพื่อเปิดเพลงให้คุณอินฟังไปด้วย พร้อมกับอัดเสียงร้องไปด้วย พอเปิดเพลง ก็เริ่มอัดเสียงโดยคำสั่งนี้
$rec hero_01.ogg
แค่นี้จริงๆครับ พอคุณอินร้องจบ ก็หยุดบันทึกโดยการ กด Ctrl+C ครับ เสร็จแล้ว มาลองฟังกันดู ก็สั่ง...
$play hero_01.ogg
เรียบร้อย ฟังผลงานตัวเองดูนะ คุณอิน อิอิ
      สำหรับ rec และ play ก็เป็นfrontend ของ sox นั่นเอง และ ชื่อไฟล์.ogg ก็เปลี่ยนตามสะดวกนะครับ file เสียงที่ได้ก็เป็น OGG ไฟล์ครับ
     commandline นี่... มันสะดวกโครตๆเลยแฮะ ;-) จิงดิ...

วันศุกร์ที่ 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 มาแว้วววว...

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