ไม่เอา QWERTY แล้วหนีมาใช้ Engram Keyboard แทนดีกว่า
อยากมาเล่าประสบการณ์การใช้ keyboard layout ที่ชื่อว่า engram มาได้สัก 6 เดือน จากคนที่ใช้แต่ QWERTY มาตั้งแต่เริ่มเขียนโปรแกรม


ทำไมไม่ใช้ QWERTY ต่อ?
มีอยู่ช่วงนึงที่ปวดข้อมือมากระหว่างกำลังพิมพ์โค้ดอยู่
ก็เลยเริ่มสังเกตตอนพิมพ์ แล้วก็เห็นว่ามันต้องขยับข้อมือเยอะเหมือนกันนะกว่าจะเขียนได้คำนึง โดยเฉพาะที่ต้องขยับซ้ายๆขวาๆนี่คือปวดสุดๆ นานๆเข้าเลยไปลองค้นในเน็ตหาวิธีแก้ ก็ไปเจอว่ามันมีคนพูดถึงเรื่องนี้มาตั้งนานแล้ว ว่าจะให้ปวดมือน้อยสุดควรให้ตัวอักษรที่กดบ่อยๆมาอยู่ตรง Home row (หรือที่ชอบเรียกๆกันว่า “ฟหกด ่าสว” นั่นแหละ)ให้ได้มากที่สุด เพราะมันเป็นตำแหน่งที่นิ้วมืออยู่นิ่งสุด ไม่ต้องเลือนไปๆมาๆ และด้วยความขี้เกียจจะไปสร้าง layout เอง ก็เลยไปก๊อปคนอื่นเขามาเลย เพราะเขาคิดมาให้แล้ว แค่บังเอิญว่าไปเจอ engram ก่อนอันอื่นๆ ก็เลยใช้มาเรื่อยๆ
Layout Engram ที่ใช้อยู่ที่ไปเอามาจาก Sunaku
ตัว layout ที่ผมใช้นี่ก็ไปเอามาจาก Sunaku Glove80 Engram Keyboard
จริงๆแล้ว layout อื่นนอกจาก QWERTY ก็มีมานานแล้ว เช่น DVORAK, COLEMAK, WORKMAN, engram ซึ่งมันก็ดีกว่า QWERTY หมดแหละในเชิงว่ามัน optimize กว่า แต่ถ้าจะพูดถึงว่าอันไหนดีสุด ก็คงแล้วแต่คนกับงานที่ใช้ด้วยเพราะสุดท้ายมันก็ขึ้นกับความชอบของแต่ละคนละ
ความรู้สึกแรก
แปลกๆดี แต่ก็รู้สึกดีที่วางมือที่คีย์บอร์ดแล้ว ไม่จำเป็นต้องยกมือเท่าไหร่ มีหลายคำมากที่แทบจะเขียนได้เลยโดยไม่ต้องเอามือออกจาก home row เลย แต่ถึงอย่างงั้นตอนไปลองเล่น Monkeytype ครั้งแรกก็ได้เร็วสุดแค่ 6 wpm เอง 🥲
หลังจากฝึกวิชามา 6 เดือนตอนนี้จำ layout ได้แล้ว แล้วมันให้ความรู้สึกว่าทุกครั้งที่กดแป้นไปทีนึงคือรู้ว่าจะกดอะไรและจินตนาการออกว่ามันจะอยู่ตรงไหน ไม่เหมือนตอนทำ QWERTY ที่กดๆไปก่อน ตัวอักษรที่อยากกดมันอยู่แถวๆนั้นแหละ (อันนี้อาจจะ Skill issue 🤣)
มันให้ความรู้สึกเหมือนมีสติระหว่างพิมพ์มากขึ้น ไม่รู้เหมือนกันว่าดีไหมที่คิดแบบนี้ แต่มันรู้สึกดีนะ ส่วนตอนนี้ฝึกจนกลับมาอยู่ที่ประมาณ 50-80 wpm แล้ว ที่ range มันกว้างเพราะว่ามีโอกาสอ๊องระหว่างฝึกด้วย 555
ปัญหาหลักๆตอนนี้มีอย่างเดียว ไปใช้คอมคนอื่นแล้วพิมพ์ช้าสุดๆเลย 😅
วิเคราะห์ layout ว่ามันดียังไง
โดยทั่วไปแล้วตอนออกแบบ layout จะมีเรื่องให้คิดอยู่หลักๆ 3 อย่าง letter frequency, bi-gram roll, และ travel time (อย่างอื่นก็มี แต่มันเป็นส่วนน้อย และไม่ค่อยมีผลมากนักแล้ว)
Letter Frequency (ความถี่ของตัวอักษร)
น่าจะเป็นเรื่องสำคัญสุดเลย เพราะเราก็ต้องการให้ตัวอักษรที่กดบ่อยๆ อยู่ใกล้มือให้ได้มากที่สุด หรือถ้าจะอยู่บน Home row เลยก็ยิ่งดี (เพราะไม่ต้องขยับมือเลย) ดังนั้นพวกตัวสระ aeiou
และพยัญชนะที่ใช้บ่อยๆเช่น h
, n
, t
, r
, s
ดังนั้นใน layout ใหม่ๆ ก็จะเห็นตัวอักษรพวกนี้มาอยู่ตรงกลางแถว เท่าที่จะเป็นไปได้ แล้วค่อยเอาตัวอักษรอื่นๆที่ความถี่น้อยกว่าไปกระจายๆกันรอบนอก
ตารางแสดงความถี่ของตัวอักษรที่ใช้บ่อย
ตารางแสดงความถี่ของตัวอักษรที่ใช้บ่อย
เราก็พอรู้แล้วแหละว่าตัวอักษรอย่าง e
, t
, i
, o
, a
ควรจะเอามาวางใกล้ๆมือไว้
แต่แค่นั้นมันก็ยังไม่พอ ถึงจะรู้ว่าจะเอาพวกตัวอักษรใช้บ่อยมาวางตรงกลาง แต่จะเรียงมันยังไงดีก็เป็นอีกประเด็นนึงเลย จะวางเป็น aeiou
เรียงติดกันเลยไหม หรือสลับเป็น ieao
หรือรูปแบบอื่นๆดี ในจุดนี้เราไม่สามารถใช้แค่ความถี่ตัวอักษรมาคิดได้แล้ว ก็เลยจำเป็นที่จะต้องเอา bi-gram เข้ามาช่วยคิดต่อด้ย
แล้ว bi-gram คืออิหยังนิ
อาจจะเป็นศัพท์ที่ไม่ค่อยคุ้นตาเท่าไหร่ถ้าไม่ได้ทำงานสาย NLP แต่ถ้าแปลง่ายๆใน context ของคีย์บอร์ดคือ ตัวอักษรสองตัวที่เขียนติดกัน อย่างเช่น คำว่า this
สามารถแบ่งเป็น bi-gram ได้เป็น th
, hi
, is
ทีนี้คือถ้าลองสังเกตดีๆบางทีตอนเราพิมพ์เอกสาร เราจะเอามือไปคาไว้ที่ตัวอักษรสองตัวแล้วกดพร้อมๆกัน จากตัวอย่างก่อนหน้านี้ ตอนจะพิมพ์คำว่า this
เราจะวางมือไปที่ th
แล้วอีกชุดคือ is
เพื่อให้พิมพ์คำๆนั้นได้เร็วขึ้น
คิดใหม่ว่าถ้าเราวาง t
กับ h
ติดกันเลย เราก็จะกดง่ายๆมากเพราะก็แค่ใช้สองนิ้วจากมือข้างเดียวกันกดได้เลย ก็คล้ายๆเคาะโต๊ะอยู่นะ ว่าเราถนัดเคาะจากมือข้างเดียวกันเหมือนเป็นการ roll นิ้วด้วย
ตัวอย่างการ roll นิ้ว
ทีนี้ก็พอรู้แล้วว่าตัวอักษรที่กดบ่อยๆจะวางยังไงดี ประเด็นคือเรายังไม่ได้พูดถึงตัวอักษรอื่นๆที่ต้องไปวางรอบๆคีย์บอร์ดเลย ในจุดนี้เราต้องเอาเรื่องความยากในการไปกดคีย์มาดูร่วมด้วย ซึ่งความยากจะวัดจากระยะทาง หรือ เวลาที่เราต้องใช้ในการไปกดปุ่มคีย์นั้นๆ หรือเรียกว่า Travel time
คุยเรื่อง Travel time กันบ้าง
อันนี้ไม่ได้พูดถึง Travel time ของพวก Mechanical Keyboard ที่ว่าต้องกดนะ คนละเรื่องกัน อันนี้พูดถึงระยะทางที่นิ้วต้องเลื่อนจาก Home row ไปถึงคีย์อื่นๆ เช่นถ้ามองจากคีย์บอร์ด QWERTY ทั่วไป
รูป keyboard qwerty โดยที่เป็น heatmap แผ่ออกจากตรง Home row
จากรูปคือตรง Home row ที่เป็นสีแดงๆคือตำแหน่งที่กดง่ายๆ และค่อยๆแผ่ออกไปในตำแหน่งที่กดยากขึ้น
จะพอเห็นว่ามันจะมีปุ่มบางตำแหน่งเช่น b
, ]
, \
(ในคีย์บอร์ด QWERTY) ที่เป็นตำแหน่งที่ห่างจาก Home row มากที่สุด หรือจะคิดอีกแบบว่ามันกดยากก็ได้ เขาก็เลยใช้ข้อมูลตรงนี้ร่วมกับความถี่ของตัวอักษรที่เหลือในการหาเลือกว่าจะเอาตัวอักษรตัวอื่นไปวางไว้ตำแหน่งไหนดี
โดยจะเอาตัวอักษรที่ไม่ต้องกดบ่อยๆอย่างพวกสัญลักษณ์ หรือไม่ก็ตัว Q
หรือ Z
ไปไว้ ตำแหน่งที่กดยากๆหน่อย และเอาตัวอักษรที่เหลือไปวางรอบๆ Home row (แต่ก็ยังต้องคิดถึงเรื่อง bi-gram ด้วยนะ)
ที่มาของ QWERTY
คือ QWERTY เนี่ยไม่ได้ออกแบบมาเพื่อคีย์บอร์ดสมัยนี้หรอก มันทำมาตั้งแต่สมัยก่อนโน้นที่ยังใช้เครื่องพิมพ์ดีดกันอยู่เลย ทีนี้ปัญหาก็มีอยู่ว่ามันมี bi-gram(คู่ตัวอักษร) ที่ใช้กันบ่อยๆ แล้วถ้าวางคู่ตัวอักษรพวกนี้ใกล้ๆกัน แล้วถ้าพิมพ์เร็วๆจะทำให้ก้านพิมพ์มันขัดกันเองได้
Christopher Latham Sholes คนออกแบบ QWERTY ก็เลยแยก bi-gram พวกนี้ออกจากกันให้หมดเพื่อลดโอกาสการขัดกันของก้านพิมพ์ แล้วมันก็กลายมาเป็นมาตรฐานมาจนถึงทุกวันนี้
แต่ปัญหาของแต่ก่อน มันไม่เหมือนปัญหาสมัยนี้
จนตอนนี้ที่ไม่ได้ใช้เครื่องพิมพ์ดีดกันแล้ว ปัญหานี้ก็ไม่มีแล้ว QWERTY ก็เลยไม่ได้ optimal สำหรับการพิมพ์อีกต่อไป layout อื่นๆอย่าง DVORAK, COLEMAK, WORKMAN, engram และอีกมากมาย ก็เลยผุดขึ้นมาเยอะเลย
แต่ถึงอย่างงั้น คนทั่วไปก็คงยังใช้กันต่อไปแหละ เพราะมันอยู่มานานแล้ว แถมเป็น standard อีก ถึงผมจะคิดว่า layout อื่นมันสบายกว่าก็เถอะ 😄
เล่าต่ออีกหน่อย
layout ของคีย์บอร์ดไทยที่ใช้ๆกันอยู่เรียกว่า ไทยเกษมณี แต่มันก็มีอีก layout นึงเรียกว่า ไทยปัตตะโชติ ที่เขามาแก้ปัญหาว่า ไทยเกษมณีใช้นิ้วก้อยและมือขวาเยอะไป ไม่บาลานซ์กันระหว่างสองมือ ซึ่งสามารถทำให้เกิดอาการล้าได้ ซึ่งแอดก็ยังไม่เคยลองใช้เหมือนกัน
ใครเคยแล้วมาเล่าให้ฟังหน่อยก็ดี เผื่อเปลี่ยนใจแอดได้