Sponsor

25 มิถุนายน 2563

Vim-key - hjkl ปุ่มควบคุมทิศทางในตำนาน

adm-3a keyboard cb140
คีย์บอร์ดของคอมฯ ADM-3A ซึ่งได้กำหนดปุ่มลูกศรไว้บน hjkl จนเป็นมาตราฐานดั้งเดิมของโปรแกรมบน Unix มาจนถึงปัจจุบัน
ตอนที่ 1
ปุ่มทิศทางในการควบคุมเคอร์เซอร์บนจอคอมฯ หรือควบคุมตัวละครในเกม ปัจจุบันมักจะใช้ปุ่มลูกศรที่ออกแบบมาเป็นรูปแบบตัว Tคว่ำ ซึ่งอยู่บนคีย์บอร์ดช่วงขวามือ (หรือเกมที่ต้องใช้เม้าส์ด้วยมือขวาจะนิยมควบคุมทิศทางด้วย wasd ในมือซ้ายซึ่งอยู่ในรูปแบบ Tคว่ำ เช่นกัน) แต่ในสมัยที่คีย์บอร์ดยังไม่มีปุ่มทิศทาง ในฝั่ง Unix มีการควบคุมเคอร์เซอร์และเล่นเกมด้วยปุ่ม hjkl โดยสมัยก่อนเมื่อจะเลื่อนเคอร์เซอร์ต้องกด Ctrl แช่ไว้ แล้วตามด้วยปุ่มทิศทาง hjkl จึงจะไม่เป็นการพิมพ์ตัวอักษร

hjkl keys

เกม NetHack กำเนิดมาบนเครื่อง Unix เก่าแก่เหล่านั้น ปุ่มควบคุมทิศทางแบบดั้งเดิมของ NetHack จึงควบคุมด้วย hjkl เป็นค่าปริยายได้เลย (แต่ปัจจุบันสามารถใช้ปุ่มทิศทางได้ ถ้าเล่นบนคีย์บอร์ดที่มี Numpad แล้วต้องการใช้ปุ่มดั้งเดิม ต้องปิด Numlock ก่อน) โดยทิศทางคือ

h=ซ้าย j=ล่าง k=บน l=ขวา

วางนิ้วแบบ ชี้กลางนางก้อย ได้เลย และยังมีปุ่มเฉียงที่ปุ่มทิศทางแบบอื่นๆไม่มี คือ

y=เฉียงขึ้นซ้าย u=เฉียงขึ้นขวา
b=เฉียงลงซ้าย n=เฉียงลงขวา

ใน NetHack ถ้าเรียกเต็มๆจะเรียกว่า hjklyubn Keys หรือเรียกย่อๆว่า hjkl Keys ยังรู้จักในอีกชื่อว่า vi Keys มาจากชื่อโปรแกรมพิมพ์งานยอดนิยมบนเครื่อง Unix

นอกจาก NetHack แล้ว เกมที่ใช้ปุ่ม hjkl ยังมี the Rogue series, Linley's Dungeon Crawl และ Dance Dance Revolution clone StepMania ทั้งใน Gmail และ Google labs ยังใช้ shortcuts เป็น j และ k คือ "next" และ "previous" อีกด้วย

ฮิตขนาดไหนถามใจดู ๕๕๕
ตอนที่ 2
ปุ่มทิศทาง hjkl เป็นที่คลั่งไคล้มากนะครับในหมู่ชาว Unix โดยเฉพาะชาว Vi และยังเป็นที่ถกเถียงกันอีกด้วยว่า ควรวางมืออย่างไรเมื่อต้องใช้ปุ่มทิศทาง hjkl
จะวางตามแป้นเหย้า แล้วค่อยเอื้อมนิ้วชี้ไปกด h เมื่อต้องการ หรือพูดง่ายๆคือ ใช้ 3 นิ้วในการควบคุม โดยนิ้วชี้คุม j และ h, กลาง k และ นาง l
หรือจะขยับทั้งมื้อมาทางซ้ายโดย ชี้-กลาง-นาง-ก้อย : h-j-k-l เพื่อใช้ 4 นิ้วคุมอย่างละปุ่ม
กระทั่งเป็นดราม่าไปว่า ทำไมไม่ทำปุ่มทิศทางให้อยู่บนแป้นเหย้า jkl; ไปเลย จะได้ไม่ต้องเอื้อมนิ้วหรือขยับมือ
แล้วยังว่ากันว่าการกำหนด j เป็นปุ่มลูกศรลงก็เพราะ j ดูคล้าย ↓
เรื่องนี้ปวดหัวชะมัดครับ😅 [ส่วนตัวคิดว่าที่ยกออกจากแป้นเหย้าเพราะไม่ต้องการให้ใช้ปุ่ม ; เนื่องจากน่าจะคีย์ตัวแปรแตกต่างออกไปอีกในการเขียนโปรแกรม คงวุ่นวาย มั้ง?]
แต่การใช้ hjkl นั้นมีข้อดีคือความรวดเร็ว(และดั้งเดิม)โดยเฉพาะผู้ที่พิมพ์โค้ดบ่อยๆ จะได้ไม่ต้องย้ายมือไปมาที่ชุดปุ่มลูกศร(ถ้ามี) สำหรับใน NetHack นั้น การใช้ hjkl ก็เป็นข้อดีคือสามารถควบคุมปุ่ม เฉียง ได้ใกล้ๆ จาก yubn

สรุปแล้วผมคิดว่า สำหรับ NetHack การขยับมือมาวาง hjkl คุมนิ้วละปุ่ม(ใช้ 4 นิ้ว) จะสะดวกกว่า โดยใช้นิ้วชี้เอื้อมกด ybn และกลางเอื้อมกด u ก็จะสามารถควบคุมแบบสัมผัสได้ 8 ทิศทาง ซึ่งใน NetHack จะเรียกว่า hjklyubn (ยาวกว่าเดิมอีก😅)


ตอนที่ 3
ทำไมปุ่มทิศทางของ NetHack แบบดั้งเดิมถึงเป็น hjkl
คำตอบของเรื่องนี้อยู่ที่คีย์บอร์ดคอมฯในยุคแรกๆครับ ตอนนั้นยังไม่มีชุดปุ่มลูกศร แต่ใช้ปุ่มทิศทางอยู่บนแป้มพิมพ์ทั่วไปแทน จากในรูปเป็นคีย์บอร์ดของคอมฯ ADM-3A ซึ่งได้กำหนดปุ่มลูกศรไว้บน hjkl จนเป็นมาตราฐานดั้งเดิมของโปรแกรมบน Unix มาจนถึงปัจจุบัน
นอกจาก NetHack แล้ว โปรแกรม Text editor อย่าง Vi ที่นิยมในหมู่นักเขียนโปรแกรม ก็ใช้ปุ่ม hjkl ในการเลื่อนเคอร์เซอร์เช่นกัน และ NetHack มีทิศทางเฉียงด้วย โดย
y=เฉียงขึ้นซ้าย u=เฉียงขึ้นขวา
b=เฉียงลงซ้าย n=เฉียงลงขวา
ซึ่งชุดปุ่มลูกศรไม่มี จึงเรียกกว่า hjklyubn

Roguelike keyset

อ้างอิง
https://www.facebook.com/NetHackThailand/
https://jazzylj.blogspot.com/2019/05/the-vi-editor-vi-text-editor.html
http://xahlee.info/kbd/ADM-3A_terminal.html
https://catonmat.net/why-vim-uses-hjkl-as-arrow-keys

ไม่มีความคิดเห็น:

แสดงความคิดเห็น