ผม custom layout คีย์บอร์ดยังไงบ้าง

ผม custom layout คีย์บอร์ดยังไงบ้าง

ตอนนี้น่าจะถึงเวลาอันสมควรละที่จะมาอัพเดทโพสในหมวดคีย์บอร์ดอีกครั้งหลังจากหายไปนานมาปีกว่า จนถึงตอนนี้ก็ใช้คีย์บอร์ดมา 4 layout physical layout + 3 logical layout โพสนี้เลยจะมาเล่าให้ฟังว่าปรับตัวเองให้ใช้คีย์บอร์ดที่มีอยู่แต่ละตัวได้ยังไง สลับไปสลับมาโดยที่ไม่บ้าไปซะก่อน โดยจะเริ่มจากตัวที่มีปุ่มเยอะที่สุดไล่ลงไปหาปุ่มน้อยที่สุดครับ

Ergodox EZ

ในบรรดาทุกตัวในรอบหนึ่งปี ตัวนี้เป็นคีย์บอร์ดที่มีวิวัฒนาการ layout เป็นหลักมาอย่างต่อเนื่อง เรียกได้ว่าปรับไปใช้โปรแกรมไหนก็มาปรับตรงนี้ตามเดี๋ยวเราค่อยๆ ดูไปทีละ layer เลย

layer 0 - Dvorak

ด้วยความที่ layout ภาษาอังกฤษหลังผมเป็น Dvorak เลยบังคับโดยปริยายว่า layer แรกต้องเป็น Dvorak ก่อนหน้านี้เคยใช้ Dvorak เป็น layer หลังๆ แต่ค้นพบว่ามันจำกัดการใช้งานคีย์บอร์ดลงเยอะมาก ถ้าเป็น layer รองๆ ซึ่งนอกจากจะใช้เป็น Dvorak ในตัว Base แล้ว Modifier ข้างๆ ก็ปรับตาม Ergodox เช่นกัน เพราะปุ่มน้อยลงตรงขอบๆ แต่มากขึ้นในส่วนที่เป็นนิ้วโป้ง ซึ่งพวก - = [ ] ที่ Dvorak เอาไว้ทางขวาบนผมก็แมพมาไว้ในแถวล่างสุด แล้วใช้นิ้วโป้งกดแทนครับ

เริ่มจากทางซ้ายบนผมแมพ Undo (Cmd + Z) เอาไว้ตรงที่คีย์บอร์ดอื่นๆ จะเป็น ESC หรือ grave ascent ซึ่งมีประโยชน์เพราะแทนที่จะต้องกดสองปุ่มก็เหลือปุ่มเดียวแทน ปุ่มถัดมาก็จะเป็น alt/option ปุ่มแรกแทน tab เพราะ tab ไปอยู่ตรงนิ้วโป้งขวาแล้ว ถัดลงมาที่ปกติจะเป็น Caplock ซึ่งไม่มีประโยชน์สำหรับผมเลยเปลี่ยนเป็น Ctrl เวลากด hold และเป็น ESC เวลากดปกติ ซึ่งสองปุ่มนี้พอมันย้ายมาอยู่ใกล้ๆ home row มันทำให้ผมไม่ต้องยกมือขึ้นมาบ่อยๆ เวลากด ESC เพื่อออกจาก Insert mode ของ Vim หรือทั้ง Ctrl, Alt ต่างก็เป็น  lead key ใน Emacs ก็ช่วยลดอาการปวดนิ้วก้อยหรือ Emacs Pinky ไปได้บ้าง เรื่อยไปถึง Magnet ก็ช่วยให้กด lead key ที่ต้องกดทั้ง Ctrl + Alt ในการจัดระเบียบ Window ด้วย

ในส่วนของตรงกลางจะเป็นปุ่ม Screen capture ซึ่งพอเราต้องใช้ทั้งแบบ area และแบบ full screen เลยแมพแยกไปเลยจะได้ใช้ง่ายๆ ถัดมาทางซ้ายจะเป็น Copy/Paste ซึ่งจุดประสงค์เดียวกับ Undo คือไม่ต้องกด Lead key ให้มันจบๆ ไป ส่วนทางขวาจะเป็นปุ่มไว้ปรับไป Layer 3 ที่เป็น QWERTY ซึ่งปกติจะใช้ร่วมกับปุ่ม lang ซึ่งจริงๆ เป็น Macro ที่กด Win + Space ให้ไว้เปลี่ยนภาษาครับ จะเห็นว่าความลำบากนิดหน่อย (แต่ตอนนี้ชินแล้ว) คือไม่ใช่แค่เปลี่ยนภาษาแล้วจะพิมพ์ได้เลย แต่ต้องเปลี่ยน layout กลับมาเป็น QWERTY ด้วย

จุดเด่นของ Ergodox คือ Thumb Cluster ครับ ซึ่งทำให้นิ้วโป้งที่เคยเอาไว้แค่กด Space ง่อยๆ ทำอะไรได้มากขึ้น เช่นนิ้วโป้งซ้ายที่มีสองปุ่ม แต่ผมทำได้ 4 อย่างเลยคือ ซ้ายสุดถ้ากดจะเป็น Space แต่ถ้ากด hold จะเป็น Command/Win ส่วนซ้ายรองถ้ากดจะเป็น Backspace แต่ถ้ากด hold จะเป็น alt/option ปุ่มที่สอง ในส่วนของนิ้วโป้งขวาผมไม่ซับซ้อนมากเลยเป็น Tab, Enter ตามลำดับ ส่วนปุ่มม่วงๆ ข้างบนก็แมพคีย์ลัดไว้เปิดโปรแกรมเช่น raycast, 1password แทนที่จะกดหลายปุ่มก็กดปุ่มพวกนี้ปุ่มเดียวแทน

ทางขวาไม่มีอะไรพิเศษครับ แค่มีปุ่มที่ปกติจะเป็น Enter ให้เป็น Window แทนเวลา hold เพราะบางโปรแกรมใช้ Win + Space ซึ่งพอมันอยู่ด้วยกันตรงนิ้วโป้งซ้ายก็ไม่รู้จะกดยังไงเลยต้องมีแบคอัพไว้อีกปุ่มครับ

ย้อนกลับมาตรงกลางหน่อยคือเวลาเราวางมือตรง Home row นิ้วก้อยผมจะมีหน้าที่เป็น Layer toggle เวลากด Hold เพิ่มมาอีกทั้งสองข้างเลย โดยก้อยซ้ายจะ switch ไป Layer1 ส่วนก้อยขวาจะไป Layer2 ครับ

layer 1 - Symbols

พอผมกดนิ้วก้อยซ้ายตัวคีย์บอร์ดจะ switch มา layer1 ให้จนกว่าผมจะปล่อยซึ่งหลักๆ ใน layer นี้จะเป็นสิ่งที่ Ergodox เซตมาให้แต่แรกคือพวก F1 → F12 จะไล่เรียงกันไปตามแถวบนสุด แต่ use case หลักๆ ผมใน layer นี้จะเอาไว้กดคีย์ที่ใช้บ่อยๆ เวลาเขียนโปรแกรมครับ

โดยคีย์ที่ใช้บ่อยสุดในการเขียนโปรแกรมคือวงเล็บทุกแบบ ซึ่งจะอยู่ในระยะนิ้วกลางกับชี้ซ้ายในขณะที่นิ้วก้อยซ้ายกด hold อยู่ ทำให้เวลาผมเขียนวงเล็บไม่ต้องยกมือไปสุดขอบขวาบนเหมือนชาว Dvorak ปกติครับ รวมไปถึงพวกใช้บ่อยๆ รองลงมาใน Shell ทั้ง Tilde, Pipe, Grave Ascent ต่างก็อยู่ในนี้ให้กดง่ายๆ ด้วย นอกจากนี้จะเห็นว่าใน Layer นี้ผมแมพปุ่ม Copy/Paste ไว้เหมือนกัน แต่ใน Layer1 นี้จะเป็นของ Windows แทนครับซึ่งเป็นคีย์คนละคีย์กับ Mac

ส่วนทางขวาด้วยความที่ผมใช้ IDE อย่าง PyCharm, IntelliJ ด้วยแล้วมันจะมีคีย์ที่กดบ่อยๆ อย่างเช่น Code Generator, Refactor, Switch to Terminal, Goto Implementation ก็เอามาแมพไว้เป็นคีย์ใน home row เลยจะกดก็ไม่ต้องยกมือออก ส่วนคีย์ที่ใช้บ่อยรองลงมาเช่นพวกสั่ง Run, Debug ก็เอาไว้ข้างบนกับล่างแทน ซึ่งมีทั้งแบบกด Cmd กับ Ctrl แยกกัน

layer 2 - Navigations

ถ้ายังจำกันได้จาก layer 0 ผมจะใช้นิ้วก้อยขวาในการกดไป layer 2 ซึ่งจะพามาหา navigation นี่แหละครับ ซึ่งจะมีพวกลูกศรที่ถ้าใครเป็นชาว Vim ก็จะอ๋อทันทีว่า นี่คือการแมพ navigation แบบเดียวกับที่ Vim ใช้เลย นอกจากนั้นแล้วแป้นซ้าย ถ้าขี้เกียจยกมือ ยังสามารถทำตัวเป็นเมาส์แทนได้ด้วยครับ

ส่วน G,C,H,T เป็นคีย์ที่ผมเอาไว้กดคู่กับปุ่ม Alt + Left Ctrl ซึ่งถ้าจำได้มันเป็น Lead key ของ Magnet ทำให้ผมสามารถจัด Window แบบแบ่ง 4 หน้าจอได้ง่ายๆ เลยครับ

layer 3 - QWERTY

ในส่วนของ Layer 3 จะเป็น QWERTY ไว้ใช้ในกรณีที่ผมจะพิมพ์ภาษาไทยหรืออะไรที่ต้องการ QWERTY จริงๆ ครับโดยจะสลับมาผ่านปุ่ม toggle layer 3 ตรงกลางๆ ที่เป็นลายๆ จาก layer 0 ซึ่งประโยชน์ของ Layer นี้มีแค่นี้จริงๆ ครับ 555

layer 4 - FPS

Layer นี้จุดประสงค์ตามตัวครับคือเอาไว้เล่นเกม ซึ่งน่าจะใกล้เคียงกับคีย์บอร์ดปกติที่สุดละ ซึ่งถามว่าแล้วทำไมต้องทำแยกมาจาก layer 3 - QWERTY ต้องบอกว่าพวกปุ่ม Modifier ใน Layer นี้ถ้าจะสังเกตุดีๆ จะใกล้เคียงกับคีย์บอร์ดคนทั่วไปมากที่สุดละครับ ซึ่งมันก็คือคีย์บอร์ดที่เกมมันออกแบบมาให้ใช้เล่นเกมนั่นเอง ในขณะที่ QWERTY จะยังใช้ความสามารถของปุ่มที่แมพไว้ใน Layer 0 หลายปุ่มอยู่ครับ

layer 5 - Steno

อันนี้แถมเฉยๆ ด้วยความที่คีย์บอร์ดที่เป็น QMK Based firmware จะรองรับ Steno mode ด้วยทำให้ผมเซต layer นี้เอาไว้ใช้เล่น Steno ที่ทำให้เราพิมพ์คำผ่านการกดคอร์ดได้ครับ แต่ต้องบอกว่าหลังจากใช้แล้วมันไม่สบายมากๆ เพราะคีย์บอร์ดปกติเราปุ่มมันจะสูงๆ แล้วการกดคอร์ดมันต้องวางนิ้วไว้ระหว่างกลางของสองปุ่มเช่น T- K- พอต้องกดคอร์ดที่ต้องใช้สองปุ่มเลยเจ็บมากครับ ผมเลยแนะนำว่าถ้าอยากลอง Steno จริงๆ ไปซื้อคีย์บอร์ด steno หรือ low profile มาลองจะเจ็บนิ้วน้อยกว่าครับ ซึ่งผมก็มีอีกอันคือ Georgi keyboard ที่เป็น low profile ไว้ฝึก Steno โดยเฉพาะครับ

d60lite — 60% HHKB

จริงๆ มาเขียนบล็อกนี้เพราะว่าเพิ่งได้ตัวนี้มานี่แหละ แล้วหลังจากใช้งานมาอาทิตย์กว่าๆ รู้สึกว่ามันได้ Custom มาอยู่ในจุดที่ใช้ได้ใกล้เคียงกับตอนใช้ Ergodox บ้างแล้ว แต่ก็ยังต้องพัฒนาต่อไปเรื่อยๆ เดี๋ยวค่อยๆ ดูทีละ layer โดยต้องบอกว่าพื้นฐานของแต่ละ layer ก็จะมาจากที่เคยใช้ใน Ergodox นีแหละครับ

layer 0 - Dvorak

โดยใน Layer 0 นี้พื้นฐานจะเป็น Dvorak เหมือนกันจากประสบการณ์ที่ได้มาจาก Ergodox ที่ layer แรกจะมีความสามารถมากที่สุด แต่ก็จะเสียความสามารถของ Ergodox ไปที่ทำให้นิ้วโป้งเรามีความสามารถเยอะกลับกลายเป็นกด Space เหงาๆ เหมือนเดิมแทน แล้วยกภาระให้กับ Modifier ไปกองกันทางขวาแบบใกล้เคียงคีย์บอร์ดปกติแทน

ในส่วนของปุ่ม Tab, Caplock ถ้าเทียบกับคีย์บอร์ดปกติตัวนี้จะคล้ายๆ กับ Ergodox โดยปุ่ม Tab จะกลายเป็น Tab ถ้ากดแต่ถ้า hold จะเป็น Alt ส่วน Caplock จะเป็น Esc ถ้ากดและ Ctrl ถ้า hold ต่อมาส่วนของ home row เรายังใช้ประโยชน์จากนิ้วก้อยในการ switch ไป layer1 ตอน hold เหมือนเดิม

ส่วนที่ Tricky แต่ก็โชคดีคือการที่ HHKB layout ย้ายปุ่ม backspace ลงมาทำให้ผมมีปุ่มขวาบนที่ไม่มีในคีย์บอร์ดปกติเพิ่มขึ้นมา ทำให้ตรงจุดนี้ผมแมพ Macro เป็น Win + Space หรือปุ่มเปลี่ยนภาษาครับ ซึ่งจะใช้คู่กับปุ่ม TO(3) ซึ่งเป็นปุ่ม Switch ไป layer 3 ในการสลับระหว่าง EN(Dvorak) → TH(QWERTY) ได้ใกล้เคียงกับ Ergodox เลย

ซึ่งก็จะเหลือปุ่ม MO(1) กับ MO(2) ที่ไม่มีในคีย์บอร์ดปกติเหมือนกัน ผมเลยเอาไว้ทำงานพิเศษคือ switch ไป layer ตามตัวเลขมัน

layer 1 - Symbols + Navigations

อาศัย Practice จาก Ergodox เหมือนกัน แต่แทนที่จะแยก symbol, navigation layer ก็จับมันมารวมกันเลย นั่นหมายความว่า layer switch ที่ใช้นิ้วก้อยใน layer 0 คือชี้มาที่ layer นี้แทนหมด

ด้วยความที่ปุ่มตรงกลางๆ ที่ Ergodox มันหายไปเลยต้องที่ของ Curry Bracket เดิมให้กับ Copy/Paste แทน แล้วย้ายไปกด Curry Bracket กับตัวล่างแทนผ่านการกด Shift ทางขวาร่วมด้วย แต่ด้วยความที่ Curry Bracket ยังเจอไม่บ่อย (ยกเว้นเขียน template เลยยังไม่ปวดใจมากตอนนี้)

layer 3 - QWERTY

ตัว layer 3 ไม่มีอะไรมากมันคือ QWERTY ปกติเลย และปุ่มต่างๆ ใกล้เคียงกับ layer 0 มากยกเว้นเปลี่ยน TO(0) แทนเพื่อให้มันพากลับ layer 0

Drop x OLKB Planck Keyboard — 40% Ortholinear

ด้วยความที่เคยระเบิด Planck keyboard ไปรอบนึงแล้ว เพราะพยายามจะ Custom layout นี่แหละพอได้อีกตัวมาเลยใช้ง่ายๆ ละแทนที่จะ Custom ให้เหมือนตัวบนๆ ที่ผ่านมา ตัวนี้คือ มีอะไรให้ใช้ก็ใช้เลย ซึ่งด้วยความที่ Planck มี Dvorak Layer ให้ switch มาอยู่แล้ว พอปรับตัวมาจาก Ergodox ก็สามารถทำงานได้เลย ตัวปุ่มอาจจะเรียงแปลกๆ บ้างแต่ก็สลับมาใช้ QWERTY ได้แบบพิมพ์ไทยถูๆ ไถๆ ได้

src: https://www.reddit.com/r/olkb/comments/oll0oi/create_you_own_planckpreonic_keymap/

ปัญหาหลักๆ ของการที่ปรับมาใช้ Planck คือการที่ต้องกด layer เพื่อจะกดแถวตัวเลขได้นี่แหละ เป็นอะไรที่พอสลับใหม่ทุกครั้ง ก็ต้องเริ่มทำความคุ้นเคยใหม่ทุกครั้ง ยังไม่ชินซักที


ก็ประมาณนี้ครับ จริงๆ ถ้ามามองย้อนดูจุดเริ่มต้นที่เริ่ม Custom layer เยอะขนาดนี้แรกสุดเลย ไม่ใช่เพราะ Ergodox แต่เป็นตอนที่วางแผนจะมาใช้ Planck แล้วต้องพยายามจัดการตัวเองให้อยู่ใน 40% layout ให้ได้ เลยทำให้เริ่มมาศึกษาการใช้ Layer จนออกมาแบบที่เล่ามาข้างบนนั่นแหละครับ

ส่วนใครใช้ Layer ยังไงอยู่มาแชร์กันได้ฮะ ผมอยากเห็นมากเผื่อจะเอาไปปรับใช้เองด้วย สำหรับบล็อกนี้ก็ประมาณนี้ครับ