Tags:
Node Thumbnail

ฟีเจอร์หนึ่งที่สำคัญมากของลินุกซ์ คือ ความสามารถในการปรับแต่งปุ่มเปลี่ยนภาษาให้เป็นปุ่มอะไรก็ได้ รวมถึงปุ่ม Caps Lock (ปุ่มที่มักสร้างความสับสนเวลาพิมพ์รหัสผ่านต่างๆ เสมอ) และส่วนตัวผมเองแล้วจะมีคอมพิวเตอร์สองเครื่อง เครื่องหนึ่งเป็นวินโดวส์ และเครื่องหนึ่งเป็นลินุกซ์เพื่อเรียนรู้หลายระบบปฎิบัติการไปพร้อมๆ กัน และข้อขัดใจที่สุดของวินโดวส์คือมันบังคับให้เปลี่ยนภาษาคีย์บอร์ดด้วยปุ่ม Alt+Shift หรือปุ่ม grave accent (~) เท่านั้น ซึ่งทั้งสองตัวไม่ใช่ตัวเลือกที่ผมสะดวก

ทางออกที่ง่ายๆ ของการปรับให้ใช้ Caps Lock ได้อีกครั้งคือการใช้โปรแกรม Auto Hotkeys (ดู nuuneoi.com) แต่จากการใช้งานจริงพบว่ามีข้อจำกัดเช่นไม่สามารถใช้ในบางหน้าจอเช่นจอล็อกอินได้ รวมถึงมีปัญหากับบางหน้าเว็บอยู่เสมอๆ

ทางออกหนึ่งที่ผมคิดไว้ คือ หากเราสามารถสร้างคีย์บอร์ดที่ยิงสัญญาณปุ่ม Alt+Shift ได้เองทุกครั้งที่มีการเปิดไฟ Caps Lock ก็จะสามารถกำหนดปุ่มเปลี่ยนภาษาเป็น Caps Lock แทนได้ ที่จริงแล้วด้วยแนวคิดนี้เราสามารถเปลี่ยนปุ่ม Caps Lock เป็นปุ่มใดๆ แทนก็ได้

ฮาร์ดแวร์: Atmel AT90USB162

จากการค้นคว้าระยะเวลาหนึ่ง แนวคิดของเรื่องนี้ก็เป็นจริง โดยสิ่งที่ผมต้องการคือไมโครคอนโทรลเลอร์ที่ไม่มีอินพุตใดๆ แต่มีส่วนสื่อสาร USB ในตัว และพบว่าอุปกรณ์แนวนี้มีอยู่จำนวนมากในตลาด เพราะมันคือ PlayStation Jailbreak ที่ภายในเป็นชิป AT90USB162 ต่อกับพอร์ต USB เพื่อส่งคำสั่ง USB ที่เป็นบั๊กของเครื่อง PlayStation 3 ให้สามารถรันซอฟต์แวร์จากผู้ผลิตอื่นที่ไม่ใช่โซนี่ได้ ในกรณีของผม ผมสั่ง ps3ukey มาลองใช้งาน โดยที่ตัวเครื่องไม่มีเฟิร์มแวร์มาให้ (น่าจะเพื่อเลี่ยงปัญหาทางกฎหมายในหลายประเทศ)

No Description

ชิป AT90USB162 นั้นเป็นชิปที่น่าสนใจ ในตัวมันเองมี bootloader มาให้ในตัว ทำให้สามารถเขียนโปรแกรมลงไปใหม่ได้ผ่าน USB ทันที หากรีเซ็ตชิปโดยหากดึงสัญญาณขา HWB (Hardware Boot) เป็น 0 ขณะที่กำลังรีเซ็ต คอมพิวเตอร์จะมองเห็นเป็นอุปกรณ์ USB เฉพาะของทาง Atmel เองและสามารถลงไดร์เวอร์เพื่อลงเฟิร์มแวร์ใหม่ได้ทางโปรแกรม FLIP ของทาง Atmel หรือโปรแกรม dfu-programmer ที่เป็นโอเพนซอร์สในลินุกซ์หลายดิสโทร (โดยส่วนตัวผมว่าการลง dfu-programmer บนลินุกซ์ง่ายกว่ามาก)

ซอฟต์แวร์: LUFA

แม้ว่าตัวชิป AT90USB162 จะมีส่วนสื่อสารด้วย USB อยู่ในตัวก็ตาม แต่การเรียกฟังก์ชั่นการทำงานของฮาร์ดแวร์โดยตรงก็ยังเป็นเรื่องยาก และต้องเข้าใจพื้นฐานการทำงานของโปรโตคอล USB โดยไม่จำเป็น ในส่วนนี้มีโครงการโอเพนซอร์สที่ชื่อว่า LUFA (Lightweight USB Framework for AVRs) ที่ช่วยจัดการการทำงานในระดับล่างให้

ตัว LUFA เองนั้นมีฐานข้อมูลของชิป และบอร์ดพัฒนาต่างๆ จำนวนมาก หากเราพัฒนาแอพพลิเคชั่นบนชิปและบอร์ดที่ความสามารถใกล้เคียงกัน ก็มีความเป็นไปได้ว่าจะสามารถย้ายซอฟต์แวร์ไปรันบนแพลตฟอร์มอื่นๆ ได้โดยเปลี่ยนเพียงค่าคอนฟิคเท่านั้น

ตัว LUFA เฟรมเวิร์คสำหรับการพัฒนาอุปกรณ์ USB มาให้สองแบบ คือ ClassDriver และ LowLevel สำหรับการพัฒนาทั่วไปนั้นการใช้ ClassDriver จะเขียนโค้ดสั้นกว่าและเข้าใจง่ายกว่ามาก ในส่วนของโครงการเดโมนั้นมีการสร้างคีย์บอร์ดจากบอร์ดพัฒนามาให้เรียบร้อย ทำให้เราสามารถสร้างจอยสติ๊กที่ส่งค่าเป็นคีย์บอร์ด WASD ได้

ในลินุกซ์นั้นการคอมไพล์โครงการเหล่านี้ทำได้ง่ายๆ ด้วยการติดตั้งแพ็กเกจ gcc-avr และ avr-libc พร้อมกับแพ็กเกจ build-essential (สำหรับการ make) เสียก่อน จากนั้นก็สั่ง make ได้เลย

ดัดแปลง

โครงการเดโมของ LUFA สำหรับการเดโมคีย์บอร์ดนั้นจะใช้ชิป AT90USB1287 ที่อยู่บนบอร์ด USBKEY ของ Atmel เอง เริ่มต้นสิ่งที่ต้องแก้ คือ makefile ที่ชื่อชิป (ช่อง MCU) ต้องเปลี่ยนเป็น at90usb162 ส่วนบอร์ดนั้นเนื่องจากเราไม่ได้ใช้ความสามารถอื่น เช่น LED ก็ไม่จำเป็นต้องเปลี่ยน

ไฟล์ที่ต้องแก้ต่อมาคือ Keyboard.h ที่จะต้องคอมเมนต์หรือลบสามไฟล์ออก เพื่อให้คอมไพล์ผ่าน

{syntaxhighlighter brush:cpp} #include <LUFA/Drivers/USB/USB.h>
//#include <LUFA/Drivers/Board/Joystick.h>
//#include <LUFA/Drivers/Board/Buttons.h>
//#include <LUFA/Drivers/Board/LEDs.h>{/syntaxhighlighter}

จากนั้นกลับมาดูที่ไฟล์ Keyboard.c สิ่งแรกที่เราต้องทำคือการคอมเมนต์หรือลบฟังก์ชั่นที่เกี่ยวกับ LED, joystick และ button ออกทั้งหมดตามที่เราคอมเมนต์ไฟล์ header ทิ้งไป เช่น ฟังก์ชั่นที่เกี่ยวกับ LED

ในการทำงานจริงเราต้องการเพิ่มกระบวนการสองอย่าง ได้แก่ การตรวจสอบว่ามีการกด Caps Lock หรือไม่ผ่านทางสัญญาณไฟ Caps Lock สังเกตว่าเมื่อเรากด Caps Lock บนคีย์บอร์ดตัวหนึ่ง ไฟจะติดบนคีย์บอร์ดทุกตัว เพราะระบบปฎิบัติการจะยิงข้อความไปบอกให้คีย์บอร์ดทุกตัวเปิดไฟ เราจะอาศัยพฤติกรรมนี้ในการเปลี่ยนปุ่ม Caps Lock เป็นปุ่มเปลี่ยนภาษา ภายใต้เฟรมเวิร์ค ClassDriver นั้นกำหนดให้ฟังก์ชั่น CALLBACK_HID_Device_ProcessHIDReport เป็นฟังก์ชั่นรับคำสั่งจากเครื่องแม่ (USB Host)

{syntaxhighlighter brush:cpp}static bool isGotCapLockSignal = false;
static bool isCancelledCaplock = false;
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
const uint8_t ReportID,
const uint8_t ReportType,
const void* ReportData,
const uint16_t ReportSize)
{
uint8_t LEDMask = LEDS_NO_LEDS;
uint8_t* LEDReport = (uint8_t*)ReportData;
if (*LEDReport & HID_KEYBOARD_LED_CAPSLOCK){
PORTD = 0xFF;
isGotCapLockSignal = true;
}else{
PORTD = 0x00;
}
}{/syntaxhighlighter}

เริ่มต้นจากการสร้างตัวแปรสองตัว เพื่อเก็บสถานะว่าเราได้รับคำสั่งให้เปิดไฟ Caps Lock หรือไม่ ถ้าได้รับก็จะส่งสัญญาณ Caps Lock กลับไป เพื่อล้างคำสั่งเดิมทิ้ง หลังจากล้างคำสั่งแล้วจึงส่งคำสั่งใหม่ตามที่เราต้องการ (ในกรณีนี้คือคำสั่งเปลี่ยนภาษา) สำหรับฟังก์ชั่นในการส่งสัญญาณการกดปุ่มบนคีย์บอร์ด ในเฟรมเวิร์ค ClassDriver จะใช้ชื่อฟังก์ชั่น CALLBACK_HID_Device_CreateHIDReport

{syntaxhighlighter brush:cpp}bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
uint8_t* const ReportID,
const uint8_t ReportType,
void* ReportData,
uint16_t* const ReportSize)
{
USB_KeyboardReport_Data_t* KeyboardReport = (USB_KeyboardReport_Data_t*)ReportData;
static uint8_t sendcount = 0;
uint8_t UsedKeyCodes = 0;
if(isGotCapLockSignal){
KeyboardReport->KeyCode[UsedKeyCodes++] = HID_KEYBOARD_SC_CAPS_LOCK;
isGotCapLockSignal = false;
isCancelledCaplock = true;
PORTD = 0xFF;
PORTB = 0xFF;
}else if(isCancelledCaplock){
KeyboardReport->Modifier = HID_KEYBOARD_MODIFIER_LEFTSHIFT | HID_KEYBOARD_MODIFIER_LEFTALT;
if(sendcount < 50){
PORTD = 0x00;
PORTB = 0xFF;
sendcount++;
}else{
isGotCapLockSignal = false;
isCancelledCaplock = false;
sendcount = 0;
}
}else{
PORTD = 0x00;
PORTB = 0x00;
}
*ReportSize = sizeof(USB_KeyboardReport_Data_t);
return true;
}{/syntaxhighlighter}

ฟังก์ชั่นนี้จะทำหน้าที่สองอย่างได้แก่ส่งสัญญาณ Caps Lock เมื่อได้รับสัญญาณให้เปิดไฟ ซึ่งหลังจากส่งสัญญาณกลับไป ก็จะได้รับสัญญาณให้ปิดไฟตามมา จากนั้นจึงเข้าสู่ช่วงคำสั่ง Alt+Shift เพื่อเปลี่ยนภาษา จากการทดลองพบว่าจะต้องเปลี่ยนภาษานานเป็นระยะเวลาหนึ่ง หากกระบวนการเร็วเกินไป จะกลายเป็นเปลี่ยนภาษาไปมา ในกรณีนี้คือให้ส่งสัญญาณเปลี่ยนภาษาไป 50 รอบคำสั่ง

การแฟลชโปรแกรมใน Ubuntu

ใน Ubuntu รุ่น 12.10 ที่ผมใช้งาน ไม่รู้จักชิป AT90USB162 นี้แต่แรก ทำให้ต้องเขียนกฎการใช้งานใหม่ ลงในไฟล์ /etc/udev/rules.d/60-at90usb162.rules

# This file gives all users permission to update firmware for an AT90USB162
# device in DFU mode
SUBSYSTEM=="usb", SYSFS{idVendor}=="03eb", SYSFS{idProduct}=="2ffa", GROUP="users", MODE="0666"

หลังจากนั้นสั่ง service udev restart เป็นอันเรียบร้อย

เมื่อ make เฟิร์มแวร์ที่เราต้องการเสร็จแล้ว จะได้ไฟล์ออกมาจำนวนมาก แต่ไฟล์ที่ใช้งานจริงๆ คือ ไฟล์ Keyboard.nex เอาไว้สำหรับอัพโหลดขึ้นชิป เมื่อเสียบ dongle เข้าสู่บอร์ด หากไม่แน่ใจให้กดปุ่มโปรแกรมบนบอร์ดอีกครั้ง แล้วตรวจสอบสถานะด้วยคำสั่ง

sudo dfu-programmer at90usb162 get

หากมีการตอบกลับเลขรุ่น bootloader ก็แสดงว่าใช้งานได้แล้ว สามารถสั่งคำสั่งแฟลชเฟิร์มแวร์ลงไปต่อได้

sudo dfu-programmer at90usb162 erase
sudo dfu-programmer at90usb162 flash Keyboard.hex
sudo dfu-programmer at90usb162 reset

ตัว dongle ก็จะได้รับเฟิร์มแวร์ใหม่พร้อมใช้งาน

พัฒนาต่อ

แม้โครงการนี้จะพัฒนาขึ้นจากความรำคาญเล็กๆ แต่ในความเป็นจริงแล้วการเรียนรู้การพัฒนาอุปกรณ์ USB ด้วยตัวเองเปิดความเป็นไปได้จำนวนมาก เช่น การพัฒนาอุปกรณ์อินพุตอัตโนมัติรูปแบบต่างๆ ที่เราเห็นจำนวนมากได้แก่ เครื่องอ่านบาร์โค้ด และบัตรแม่เหล็กต่างๆ เราอาจจะพัฒนาเครื่องบันทึกค่าต่างๆ ในสิ่งแวดล้อมเช่นอุณหภูมิแล้วส่งค่าผ่านทาง USB สามารถบันทึกค่าลงโปรแกรม notepad ได้โดยง่าย ตลอดจนเราอาจจะสำรวจความปลอดภัยในรูปแบบต่างๆ เช่น การที่โปรแกรมบนเดสก์ทอปไม่มีการป้องกันการโจมตีแบบ brute force แฮกเกอร์อาจจะส่งรหัสผ่านมาเป็นสัญญาณคีย์บอร์ดอย่างรวดเร็วเป็นจำนวนมากๆ ได้

อุปกรณ์เช่นนี้ยังทำให้การออกแบบระบบรักษาความปลอดภัย ต้องคำนึงถึงการปิดพอร์ต USB ที่ไม่ใช้งานทั้งหมด แฮกเกอร์ที่อาจจะเป็นคนภายในด้วยกันเองอาจจะเสียบพอร์ต USB เอาไว้เพื่อตั้งเวลาให้ทำงานเมื่อถึงเวลาที่ต้องการ หรือมีสัญญาณกระตุ้นบางอย่าง เช่น ไฟ Caps Lock ที่ใช้ในบทความนี้ แล้วส่งคำสั่งตามต้องการโดยที่ผู้ใช้จริงเป็นผู้ล็อกอินระบบให้

Get latest news from Blognone

Comments

By: iamcmnut on 11 March 2013 - 03:11 #551089
iamcmnut's picture

ว้าว!! น่าสนใจมากครับ

By: kajokman
ContributorAndroidIn Love
on 11 March 2013 - 03:29 #551093
kajokman's picture

ยกนิ้วให้เลยครับ ^^

By: btxxxx
AndroidWindows
on 11 March 2013 - 04:51 #551100

ตรง "พัฒนาต่อ" มีคำว่า อุณภูมิ-->อุณหภูมิ ครับ

By: hisoft
ContributorWindows PhoneWindows
on 11 March 2013 - 08:18 #551116 Reply to:551100
hisoft's picture

ค่าคอนฟิด

ฟิด => ฟิค

สัญญญาณ

Triple ญ ครับ

By: mix5003
AndroidUbuntuWindows
on 11 March 2013 - 10:04 #551139 Reply to:551100

ตรง Code ที่ 2 มี </em> เกินมาครับ
{syntaxhighlighter "brush:plain"}if (LEDReport & HID_KEYBOARD_LED_CAPSLOCK){{/syntaxhighlighter}

By: SaMzAn
Windows PhoneWindows
on 11 March 2013 - 05:07 #551102
SaMzAn's picture

เยี่ยมครับ!

อยากถามว่าในกรณีนี้ใช้ Caps lock เป็นตัวเปลี่ยนภาษา แล้วถ้าเกิดในสถานการณ์ที่เราต้องการกดปุ่ม Caps lock จริงๆ จะสามารถทำได้มั้ยครับ

By: mix5003
AndroidUbuntuWindows
on 11 March 2013 - 10:01 #551138 Reply to:551102

ผมเดาว่า ถอดตัวนี้ออกครับ แล้ว Caplock จะกลับมาใช้ได้

By: hisoft
ContributorWindows PhoneWindows
on 11 March 2013 - 11:16 #551168 Reply to:551138
hisoft's picture

ถอดแล้วได้แน่นอนครับ เพียงแต่ว่าผมยังไม่เคยเจอสถานการณ์ที่ต้องเปิดไฟ caplock ตอนใช้งานเลย - -"

อ้อ แต่ปุ่ม caplock ผมใช้นะ ใช้สลับโหมดคีย์บอร์ดญี่ปุ่น กดไม่ได้นี่มีงานงอก

By: SaMzAn
Windows PhoneWindows
on 11 March 2013 - 16:37 #551276 Reply to:551168
SaMzAn's picture

ผมใช้ Caps lock ตอนเขียนโปรแกรมครับ โดยเฉพาะเวลาเขียนชื่อพวก Constance ต่างๅ ผมชอบตั้งเป็น Capital letter ทั้งหมด

อยากรู้ว่าที่คุณใช้ Capslock สลับโหมดคีย์บอดญี่ปุ่น สลับโหมดอะไรหรอครับ ロマンジ=>漢字? หรือว่าแค่เปลี่ยนจากภาษาอื่นไปเป็นภาษาญี่ปุ่น?

ที่ถามเพราะผมลองกดดู ผลลัพธ์เหมือนกับคีย์บอร์ดภาษาอังกฤษ อยากรู้เฉยๆ เผื่อได้เทคนิกใหม่

By: hisoft
ContributorWindows PhoneWindows
on 11 March 2013 - 18:47 #551316 Reply to:551276
hisoft's picture

ผมถนัดใช้นิ้วก้อยค้าง Shift เลยอ่ะครับ - -" ยาวแค่ไหนก็กดค้างไว้ยังงั้น

Ctrl + Caplock => ひらがな、Alt+Caplock => カタカナ อ่ะครับ เห็นมัน default มาแบบนี้ก็เลยจำไว้ใช้

มีที่ไหนรวม ๆ เทคนิคคีย์บอร์ดญี่ปุ่นไหมครับ? ผมไม่รู้จะหาจากไหน นั่งแกะเอาเองจากหน้าตั้งค่าปุ่มลัดของวินโดว์

By: SaMzAn
Windows PhoneWindows
on 11 March 2013 - 22:24 #551399 Reply to:551316
SaMzAn's picture

เพิ่งรู้ว่า Ctrl-Capslock ก็ใช้ได้ ขอบคุณสำหรับความรู้ครับ

คีย์บอร์ดที่ผมใช้บ่อยๆ ก็มีตามนี้ครับ

ロマンジ => ひらがな OR ひらがな => ロマンジ = Alt+`

カタカナ => ひらがな = F6

ひらがな => カタカナ = F7

半角カタカナ = F8

Hand Writing = F5 ต้องพิมพ์ตัวญี่ปุ่นก่อนตัวนึง

By: hisoft
ContributorWindows PhoneWindows
on 11 March 2013 - 22:46 #551409 Reply to:551399
hisoft's picture

ได้ของใหม่เพียบเลย โดยเฉพาะ F5 ปกติผมต้องไปคลิกขวามาจาก language bar - -"

ปกติใช้แค่ ALT+`, CTRL+Cap lock, ALT+Cap lock ขอบคุณครับ

แล้วเครื่องผมเอาคีย์บอร์ดอังกฤษออกไปเลย เวลาเปลี่ยนภาษาแล้วมันเกะกะครับ ต้องกดข้ามไปข้ามมา ใช้ ロマンジ พิมพ์แทนเอาตลอดเลย

จริง ๆ ผมยังสงสัยเลยว่าทำไมเค้าต้องใส่คีย์บอร์ด ロマンジ มาให้ด้วย (-.-)a

By: Eka-X
ContributoriPhoneAndroidIn Love
on 11 March 2013 - 12:29 #551199 Reply to:551102

Caplock ใช้กับภาษาอังกฤษเท่านั้นครับ คงไม่มีใครใช้ caps lock กับภาษาไทย

ถ้าเป็นเครื่องแมค เมื่อเราอยู่ในโหมดคีย์บอร์ดภาษาไทย จะใช้ capslock เปลี่ยนกลับเป็นอังกฤษได้ แต่ถ้าคีย์บอร์ดอยู่ในโหมดอังกฤษ Capslock ก็จะทำหน้าที่ตัวใหญ่ของมัน ต้องใช้ comd + space bar เปลี่ยนกลับเป็นคีย์บอร์ดไทยก่อนถึงจะใช้ caplock เปลี่ยนภาษาได้

แบบนี้ก็รัดกุมดีนะครับ

By: sakuraba
Windows PhoneWindows
on 11 March 2013 - 06:55 #551105
sakuraba's picture

นึกถึง 8051 ขึ้นมาทันที

By: AmidoriA
UbuntuWindows
on 11 March 2013 - 07:19 #551106
AmidoriA's picture

ตรง </em>LEDReport แท็กเกินมารึเปล่าครับ

By: PaPaSEK
ContributorAndroidWindowsIn Love
on 11 March 2013 - 07:30 #551107
PaPaSEK's picture

ประเทืองปัญญาดีมากครับ ขอบคุณครับ

By: viroth
ContributorBlackberryIn Love
on 11 March 2013 - 14:54 #551233 Reply to:551107
viroth's picture

แวมไพร์ปัญญาดีมากเหมือนกันครับ ขอบคุณครับ

By: PaPaSEK
ContributorAndroidWindowsIn Love
on 11 March 2013 - 15:15 #551240 Reply to:551233
PaPaSEK's picture

ตึกโป๊ะ!!

By: kswisit
ContributoriPhoneAndroidIn Love
on 11 March 2013 - 15:53 #551256 Reply to:551233

ซูโม่ปัญญาดีมากเหมือนกันครับ ขอบคุณครับ

//เล่นด้วย


^
^
that's just my two cents.

By: PaPaSEK
ContributorAndroidWindowsIn Love
on 11 March 2013 - 15:58 #551260 Reply to:551233
PaPaSEK's picture

เคยบอกแล้วครับ อย่าเอาอายุมาโชว์กันมาก อย่าอวดครับ

ผมมั่นใจว่าอายุผมเยอะเหมือนกัน ... แก่น่ะแหละครับ = =

By: Volition
Windows
on 11 March 2013 - 16:10 #551264 Reply to:551233

บอกตรงๆ อายุ 17 ยังไม่เข้าใจมุกเลยครับ

By: SaMzAn
Windows PhoneWindows
on 11 March 2013 - 16:23 #551271 Reply to:551264
SaMzAn's picture

+1 ยังไม่เก็ทมุขด้วยคน -*-

By: xestz
AndroidWindows
on 11 March 2013 - 20:13 #551344 Reply to:551271
xestz's picture

เป็นแผ่นเพลงผี mp3 ครับ

ปล.ผมพึ่ง 19 นะ แต่ยังทัน -..-

By: tonkung
Windows Phone
on 11 March 2013 - 16:29 #551273 Reply to:551264

ชื่อแผ่นผีเมือก่อนล่ะครับ ระบบ 20 up นั้นล่ะ(มีเพลงด้วยนะ)

By: mr_tawan
ContributoriPhoneAndroidWindows
on 11 March 2013 - 22:35 #551405 Reply to:551233
mr_tawan's picture

ปัญญามยุราดีมากเหมือนกันครับ ขอบคุณครับ


  • 9tawan.net บล็อกส่วนตัวฮับ
By: hisoft
ContributorWindows PhoneWindows
on 11 March 2013 - 08:17 #551115
hisoft's picture

น่าเล่นมากครับ

สอบถามเพิ่มนิดนึง ใน Windows ต้องลง Driver หรือเปล่าครับ ถ้าไม่นี่เรื่อง brute force เข้าหน้า log-in Windows ก็มีสิทธิ์ทำได้จริงเหมือนกันนะ

แต่ผมยังสงสัยอยู่อย่างนึง ทำไมเวลาพิมพ์รหัสผิดติดกันหลาย ๆ ครั้งมันต้องใช้เวลาตรวจรหัสผ่านนานขึ้น - -" บางทีนานจนเหมือนเครื่องค้างเลย

By: nat3738
ContributorAndroidRed HatUbuntu
on 11 March 2013 - 09:30 #551129 Reply to:551115

ก็มันใช้กัน brute force ไงครับ โดยการหน่วงเวลา

By: hisoft
ContributorWindows PhoneWindows
on 11 March 2013 - 09:34 #551131 Reply to:551129
hisoft's picture

คือสงสัยว่าแค่หน่วงเวลากันดื้อ ๆ เลยเหรอครับ? หรือมันมี algorithm อะไรซับซ้อนกว่านั้นมั้ย? อย่างน้อยถ้าหน่วงเวลากันดื้อ ๆ ก็น่าจะขึ้นบอกเวลาใส่รหัสผิดหลาย ๆ รอบสักหน่อย ประมาณว่าผิดบ่อยไปแล้วนะ

แต่เห็นเวลาถอดรหัสกันตรง ๆ มันก็ไม่มีปัญหาอะไร รัวได้อย่างใจหมาย - -"

By: lancaster
Contributor
on 11 March 2013 - 14:00 #551217 Reply to:551131

หน่วงเวลานี่แหละครับวิธีป้องกันชั้นยอด จากที่จะมั่วได้นาทีละเป็นร้อยเป็นพันครั้ง ก็เหลือแค่ไม่ถึงสิบครั้ง

By: EThaiZone
ContributorAndroidUbuntuWindows
on 11 March 2013 - 10:10 #551141
EThaiZone's picture

ด้วยความเคารพ อยากได้สักตัวแม้ตอนนี้จะไม่มี PS3


มันไม่ง่ายเลยที่จะทำ GIF ให้มีขนาดน้อยกว่า 20kB

By: hisoft
ContributorWindows PhoneWindows
on 11 March 2013 - 11:16 #551169 Reply to:551141
hisoft's picture

+1

By: PiKO
ContributorAndroid
on 11 March 2013 - 10:38 #551148

เคยคิดจะทำเป็นเครื่องช่วยตี Pangya (เกมส์ online) ตอนนี้มี hardware น่ารักๆแบบนี้ขายก็น่าสนใจ :D


:: DigiKin8 ::

By: illuminator
ContributorAndroidUbuntuWindows
on 11 March 2013 - 11:14 #551166 Reply to:551148
illuminator's picture

+1

By: hisoft
ContributorWindows PhoneWindows
on 11 March 2013 - 11:15 #551167 Reply to:551148
hisoft's picture

ผมเห็นแล้วอยากทำโปรแกรม Robot Mouse & Keyboard เลย ตัวโปรแกรมเหมือนมันจะโดนตรวจจับได้ง่าย ถ้าทำเป็นคีย์แบบนี้สงสัยจะทะลุได้หมด

By: vitnu
iPhone
on 11 March 2013 - 20:03 #551343 Reply to:551148

สมัยเกมส์ Gunbound ผมเอา Microcontroller PIC ยัดเข้าไปใน Mouse ให้มันคลิกซ้ายทุกวินาที เพื่อให้มันเข้าเกมเองได้ แล้วเอากระดาษยัดปุ่ม space bar ไว้ให้มันยิงสุดแรงตลอด เอาไว้เป็นคู่ซ้อม ช่วยปั้มแต้ม

By: Onewings
Windows
on 11 March 2013 - 12:44 #551181

อ่านตอนแรกก็มีความสงสัยว่าทำไมถึงควรจะเขียนโปรแกรมลงในระดับ Hardware ด้วยเพราะสามารถทำการ Intercept ข้อมูลที่ตัว Windows ได้(คือรับ Input มาเป็น Caplock แต่เราให้มันทำอย่างอื่นแทน คล้ายๆกับ Key config ในเกม/โปรแกรมต่างๆ)เวลาเลิกการใช้งานได้ได้ง่ายกว่าเพียงแค่ทำการปิดโปรแกรมที่เขียนไว้แต่มีข้อเสียบางอย่างเช่น อาจจะมีปัญหากับบางโปรแกรมที่ทำงานซ้อนกัน และจำเป็นต้อง run โปรแกรมก่อนจึงจะใช้งานได้ (ไม่ได้ลองกับ Win 8)
พออ่านถึงย่อหน้าสุดท้ายถึงบางอ้อเลย

By: ZeventhSense
Windows
on 11 March 2013 - 11:52 #551182

ผมใช้ caps lock เปลี่ยนภาษาด้วยการแก้ไข registry ครับ ไม่ต้องลงโปรแกรม, ไม่มีปัญหาหน้าจอล็อคอิน (windows8), ยังไม่เคยเจอปัญหากับเวบไหน และสามารถใช้ปุ่ม grave accent (~) เพื่อเปลี่ยนภาษาได้ด้วย (คนอื่นมาใช้คอมเรา จะได้ไม่งง)

วิธีนี้สามารถใช้ได้กับ windows xp และ windows 8 (windows อื่นยังไม่เคยทำครับ)

1.กด win + r พิมพ์ regedit

2.ไปที่ hkey_local_machine > system > current control set > control > keyboard layout

3.click ขวาที่พื้นที่ว่างด้านขวามือ เลือก new > binary value ตั้งชื่อว่า Scancode Map

4.ใส่โค้ดตามนี้ 00 00 00 00 00 00 00 00 02 00 00 00 29 00 3a 00 00 00 00 00 (ไม่ต้องเคาะวรรค มันจะเว้นวรรคให้เอง)

5.ตั้งค่าให้ปุ่ม grave accent (~) ให้เป็นปุ่มเปลี่ยนภาษา

6.restart ;)

By: lew
FounderJusci&#039;s WriterMEconomicsAndroid
on 11 March 2013 - 11:56 #551184 Reply to:551182
lew's picture

ในกรณีของผม ผมต้องการใช้ปุ่ม grave accent เพื่อพิมพ์ครับ


lewcpe.com, @wasonliw

By: lancaster
Contributor
on 11 March 2013 - 14:01 #551220 Reply to:551182

grave accent นี่สำคัญมากสำหรับสาย linux/unix ฮะ

By: chayaninw
WriterMEconomicsAndroidIn Love
on 11 March 2013 - 19:17 #551327 Reply to:551182
chayaninw's picture

ผมเก็บ grave accent ไว้ใช้กับ US-International Keyboard ครับ

By: Thaitop_BN
Windows PhoneUbuntuWindows
on 11 March 2013 - 20:47 #551359 Reply to:551182
Thaitop_BN's picture

แล้วถ้าอยากใช้ caps lock ขึ้นมานี่ต้องกดปุ่มอะไรครับ หรือต้องไปเปลี่ยน registry ให้กลับเป็นเหมือนเดิม (ในลิกนุกซ์เท่าที่ผมเคยใช้ คือ ubuntu, debian, fedora ใช้ shift + caps lock แทน)

By: ZeroEngine
ContributorRed HatSUSEUbuntu
on 11 March 2013 - 13:37 #551211

ผมนึกว่า (`) เรียกว่า grave accent ซะอีก
ส่วน (~) เรียกว่า tiled

พอดีเคยหาคำอ่าน

http://en.wikipedia.org/wiki/Grave_accent
http://www.giss.nasa.gov/tools/latex/ltx-401.html

ท่านใดพอจะทราบไหมครับว่าทำไมถึงเรียก (~) ว่า grave accent

อย่างในของ windows เองก็ใช้ (`) ว่า grave accent ไม่ใช่เหรอครับ


[Blog ZeroEngine] [@ZeroEngines]

By: wichate
Android
on 11 March 2013 - 14:00 #551218 Reply to:551211

grave คือ (`) ถูกแล้วครับ มันเอาไว้เขียนโปรแกรม จึงไม่ควรเอามาใช้เป็นปุ่มเปลี่ยนภาษา (แต่ user ทั่วไปคงไม่ได้ใช้ เลยเอามาใช้เปลี่ยนภาษากัน)

By: hisoft
ContributorWindows PhoneWindows
on 11 March 2013 - 14:44 #551229 Reply to:551218
hisoft's picture

ผมไม่ชอบใช้ ` ด้วยสามสาเหตุครับ คือหนึ่ง บางทีมันต้องใช้คีย์นั้น (คีย์ไทยก็ใช้นะ ขี้เกียจเปลี่ยนภาษา) ข้อสอง มันใกล้ Esc มาก เผลอไปโดนประจำ โดยเฉพาะสมัยเล่นเอ็ม โดนแล้วหน้าคุยปิดเลย ข้อสุดท้าย มันไม่สากลแล้วเดี๋ยวนี้ - -" เน้นใช้ตาม default ที่เค้าให้มาแทน

By: kswisit
ContributoriPhoneAndroidIn Love
on 11 March 2013 - 14:00 #551219 Reply to:551211

ผมว่า ตามท่านว่ามาอ่ะถูกแล้ว

แต่พอดีว่า ~ กับ ` มันอยู่ปุ่มเดียวกัน เลยเรียกปนกัน


^
^
that's just my two cents.

By: sdh on 11 March 2013 - 14:40 #551227 Reply to:551211

ส่วน (~) เรียกว่า -> tilde

By: mr_tawan
ContributoriPhoneAndroidWindows
on 11 March 2013 - 22:37 #551406 Reply to:551227
mr_tawan's picture

ผมพิมพ์ผิดครับ ;-)


  • 9tawan.net บล็อกส่วนตัวฮับ
By: wichate
Android
on 11 March 2013 - 14:03 #551221

ทดลองเขี่ยนให้มันกดปุ่ม Ctrl+Alt+Del แล้ว Enter

By: kswisit
ContributoriPhoneAndroidIn Love
on 11 March 2013 - 14:09 #551225 Reply to:551221

ให้ทำงานทุกครั้งที่ไฟ Num lock ติด


^
^
that's just my two cents.

By: PaPaSEK
ContributorAndroidWindowsIn Love
on 11 March 2013 - 15:18 #551241 Reply to:551225
PaPaSEK's picture

ให้มันทำงานทุกครั้งที่กดปุ่ม Left Shift + Right Ctrl + Scroll lock + Num lock + F6 + Windows key

By: wichate
Android
on 11 March 2013 - 15:29 #551243 Reply to:551241

อยากเห็นท่ากดจัง (ต้องมีซัก 8 มือ ถึงจะกดได้)

By: PaPaSEK
ContributorAndroidWindowsIn Love
on 11 March 2013 - 15:33 #551246 Reply to:551243
PaPaSEK's picture

คิดว่ามือเป็นตะคริวแน่ๆ ครับ

By: hisoft
ContributorWindows PhoneWindows
on 11 March 2013 - 18:48 #551318 Reply to:551243
hisoft's picture

Laptop สองมือกดได้ครับ บ้าจี้ทำตามไปแล้ว (T^T)

By: viroth
ContributorBlackberryIn Love
on 11 March 2013 - 19:09 #551325 Reply to:551318
viroth's picture

คีย์บอร์ดปรกติกดได้ครับ แต่ท่าพิลึกน่าดูยากขนาดนี้เอาเมาส์จิ้มเอาเหอะ

By: X3STeNLiTE
AndroidUbuntuWindows
on 13 March 2013 - 00:42 #551809 Reply to:551318

คีย์บอร์ดคอมก็ทำได้ครับ.. ผมก็บ้าจี้ทำตามไปแล้วด้วยเหมือนกัน (>_<)

By: equivalent
ContributorAndroid
on 11 March 2013 - 23:38 #551423
  1. ~~~~~~~~~

  2. (ลบๆๆๆๆ)

  3. ~