การใช้งาน VIA และตัวอย่างการตั้งค่า Knob
ก่อนหน้านี้เราก็ได้ทำความรู้จักกับ Knob หรือ Rotary encoder และ software ที่ใช้ควบคุมการทำงานและตั้งค่าคีย์บอร์ดอย่าง QMK และ VIA กันไปแล้ว เรามาดูเพิ่มเติมกันดีกว่าว่าเราสามารถนำ knob บนคีย์บอร์ด Keychron Q1 Knob ของเราไปใช้งานได้อย่างไรบ้าง
โดยเบื้องต้นต้องขออนุญาตเกริ่นไว้ก่อนว่าการตั้งค่าผ่าน VIA หรือ QMK นั้น สามารถตั้งค่าตัว rotary encoder (โดยจากนี้ไปจะขออนุญาตเรียกว่า knob เพื่อให้เข้าใจตรงกัน) ให้ส่งคำสั่งตามปุ่มที่ QMK รองรับเท่านั้น โดยส่วนมากจะเป็นคำสั่งเดียวกันกับปุ่ม multimedia หรือปุ่มทั่วไปที่พบได้บนคีย์บอร์ดอยู่แล้ว เช่น ตั้งค่าให้การหมุน knob แทนการกดปุ่ม page up/page down เพิ่ม-ลดเสียงคอมพิวเตอร์ หรือใช้ knob แทน scroll wheel บนเมาส์ ซึ่งอาจจะทำให้ knob ของเจ้า Q1 knob นั้นไม่สามารถตอบโจทย์การใช้งานที่ไม่สามารถทำงานด้วยปุ่มลัด (hotkey) ได้ เช่น การหมุน color wheel ในโปรแกรมด้านกราฟิกต่างๆ เป็นต้น ทั้งนี้ทั้งนั้น การใช้งานคีย์ลัดอื่นๆ ที่สามารถกดบนตัวคีย์บอร์ดได้ จะสามารถตั้งค่าให้ใช้ knob ในการส่งคำสั่งไปที่คอมพิวเตอร์ได้ โดยเรามาดูตัวอย่างการใช้งานของ knob เพื่อเป็นไอเดียให้กับผู้ใช้ในการนำไปตั้งค่ากับคีย์บอร์ดของตัวเองกันเลย
เริ่มต้นจากการใช้งานทั่วไป ผู้ใช้สามารถตั้งค่าตัว knob ตามขั้นตอนใน blog post นี้ โดยการตั้งค่าใน VIA จะอนุญาตให้ผู้ใช้สามารถตั้งค่า knob ได้ 1 คำสั่งต่อ 1 ทิศทาง และอีก 1 คำสั่งสำหรับการกดตัว knob โดยตรง ซึ่งโดยทั่วไปเราจะใช้ knob แทนปุ่มคำสั่งที่เราต้องกดย้ำหลายๆ ครั้ง เช่น การตั้งค่าเริ่มต้นของ Q1 จะตั้งให้ตัว knob ส่งคำสั่ง volume up (vol+) หรือ volume down (vol-) เมื่อผู้ใช้ทำการหมุนตัว knob ไปทางซ้ายหรือขวา เพื่อเพิ่ม-ลดเสียงของเครื่องคอมพิวเตอร์ของเรา และ mute เมื่อกดตัว knob ลงไปเพื่อปิดเสียงของเครื่องคอมพิวเตอร์ ซึ่งผู้ใช้สามารถเปลี่ยนจากการตั้งค่าเริ่มต้นให้เป็นปุ่มอื่นๆ ที่ต้องการใช้งานได้ เช่น ผู้ใช้สามารถไปหน้า KEYMAP แล้วเลือกแท็บ Special จากนั้นไปที่ด้านบนขวาสุดสองปุ่ม แล้วตั้งค่าปุ่มให้เป็น Mouse Wh↑ (KC_WH_U) และ Mouse Wh↓ (KC_WH_D) เพื่อใช้แทนการเลื่อนลูกกลิ้งเมาส์ หรือไปที่แท็บ Basic แล้วเปลี่ยนสองปุ่มดังกล่าวให้เป็น Page Up (KC_PGUP) และ Page Down (KC_PGDN) เพื่อแทนการกด Page up และ Page down ซึ่งใช้ในการเลื่อนหน้าเอกสารขึ้น-ลงก็ได้ ในส่วนของปุ่มที่เป็นปุ่ม mute อยู่ ผู้ใช้อาจจะอยากปรับให้เป็นปุ่ม Print Screen (KC_PSCR) ซึ่งก็คือปุ่มที่ใช้จับภาพหน้าจอ เพื่อความสะดวกในการจับภาพหน้าจอของผู้ใช้นั่นเอง
ทั้งนี้ทั้งนั้น ผู้ใช้บางท่านอาจจะต้องการใช้ knob เพื่อแทนการกดปุ่มฟังก์ชั่นที่ซับซ้อนขึ้น เช่นการกดคีย์ลัดที่ใช้งานเป็นประจำ ซึ่งอาจจะต้องกดมากกว่า 2 ปุ่มขึ้นไป (เช่น การกด ctrl+z เพื่อ undo หรือยกเลิกการแก้ไขที่ได้ทำไปก่อนนี้) ซึ่งเราสามารถทำได้ด้วยการใช้ชุดคำสั่ง macro โดยผู้ใช้สามารถไปที่แท็บ MACROS ในโปรแกรม VIA จากนั้นกดเลือกปุ่ม macro ที่ผู้ใช้ยังไม่เคยบันทึกการตั้งค่าใดๆ ไว้ (ในที่นี้คือ macro 0 และ macro 1) จากนั้นผู้ใช้สามารถใส่คำสั่งสำหรับชุดปุ่มที่ผู้ใช้ต้องการใช้งาน เช่น {KC_LCTL, KC_Z} เพื่อสร้าง macro สำหรับปุ่ม ctrl + z และ {KC_LCTL, KC_Y} สำหรับ macro ของปุ่ม ctrl + y หลังจากนั้น ผู้ใช้สามารถกลับไปที่หน้า KEYMAP เพื่อเปลี่ยนปุ่มด้านมุมบนขวาสุดให้กลายเป็นปุ่ม Macro ที่ผู้ใช้ตั้งค่าไว้ เมื่อเรียบร้อยแล้ว ผู้ใช้ก็จะสามารถเริ่มใช้ knob เพื่อแทนการกด undo, redo ได้เลย
นอกจากนี้แล้ว เนื่องจาก QMK Firmware สามารถให้ผู้ใช้ตั้งค่าปุ่มต่างๆ บนคีย์บอร์ดแยกเป็น Layer ได้ ผู้ใช้จึงสามารถตั้งค่าให้ knob แต่ละ layer ทำงานต่างกันได้เมื่อผู้ใช้กดปุ่ม fn ค้างไว้ด้วย โดยผู้ใช้สามารถไปที่ layer 1 สำหรับผู้ใช้ Mac หรือ layer 3 สำหรับผู้ใช้ Windows แล้วตั้งค่า knob ให้เป็นปุ่มที่ต้องการใช้งานได้เลย โดยการตั้งค่าเริ่มต้น ตัว knob บน layer fn จะถูกตั้งค่าไว้ให้เพิ่ม-ลดความสว่างของไฟ RGB backlight ด้วยปุ่ม RGB_VAI และ RGB_VAD (โดยจะแสดงในหน้าต่าง VIA เป็นคำว่า Bright+ และ Bright-) ซึ่งผู้ใช้อาจจะอยากตั้งให้เป็นปุ่มอื่น เช่น arrow keys ซ้าย-ขวา หรือ macro สำหรับการใช้งานที่ต่างกันออกไป
สุดท้ายนี้ ตัวอย่างที่ยกมานั้นเป็นเพียงส่วนหนึ่งของการใช้งาน Knob ของ Keychron Q1 ผ่านการตั้งค่าด้วย VIA เท่านั้น ผู้ใช้สามารถเขียนโปรแกรมและสามารถแก้ไขไฟล์ source code ของ QMK firmware สำหรับ Q1 เพื่อสร้างคำสั่งสำหรับควบคุมการใช้งาน knob ที่มีความซับซ้อนขึ้นไปอีกเมื่อเทียบกับการตั้งค่าผ่าน VIA หรือ macro ของ VIA เท่านั้น เช่น เปลี่ยนพฤติกรรมของ knob ด้วยการกดปุ่ม ctrl หรือ alt ค้างไว้แทนการใช้ปุ่ม fn อย่างเดียว หรือสร้าง macro ที่มีความละเอียดของคำสั่งสูงกว่าที่ VIA จะอนุญาตให้ผู้ใช้ตั้งค่าได้ โดยเราจะมาดูการตั้งค่าด้วยการแก้ไข source code ของ QMK firmware สำหรับ Q1 โดยตรงในโอกาสถัดไป