ทำไมคีย์บอร์ด NKRO ถึงยังหายคีย์?
N-key rollover หมายถึงคีย์บอร์ดสามารถรายงานการกดพร้อมกันหลายคีย์โดยไม่ก่อพิกเซลปลอม แต่ไม่ใช่การรับประกันเดียวกับการจับทุกคีย์สโตรกภายใต้ทุกเงื่อนไข HID report descriptor ของ USB จำกัดว่า packet เดียวกันบรรจุ keycode กี่ตัว ดังนั้นแม้บอร์ดที่โฆษณาว่า NKRO เต็มก็หายคีย์ระหว่างคอร์ดสุดโต่งได้ Ghosting เป็นข้อจำกัดการต่อสายเมทริกซ์ที่ NKRO แก้จริงๆ ผ่านการแยกด้วยไดโอด คีย์ที่หายภายใต้โหลดพร้อมกันหนักเป็นปัญหาอื่นทั้งหมด มักมาจากความจุ packet รายงานหรือการจำกัดฝั่ง host และทั้งสองยืนยันได้ในการทดสอบคีย์บอร์ดบนเบราว์เซอร์ก่อนตัดสินว่ามีข้อบกพร่อง
ตังที่เขียนตังกล่อง วา้กับตังที่เปนจริง
| ตังที่คณอ่านบนกล่อง | ตังที่หมายจริง |
|---|---|
| “Full NKRO” | 固件 สามารถรายงานคียี่กดพร้อมกันทื่อบคุได้ ไม่ถุกต้องว่ำทุกคียจะต้องกดได้อยู่ซื่งๆ |
| “No ghosting” | การแยกตัวด้วยไดโอดแท้ป้องกันคียผีในคู่ผสมที่ทดสอบแล้ว แต่วิธีของ固件อาจไม่ครอบคลุมทุกสถานการณ์ |
| “ใช้งานได้กับเกมนำ้ใดๆ” | บอรดยังมีลิมิตของ HID descriptor และวงจรสแกน — คอร์ดใหญ่ๆอาจยังสูญเสียคียได้ |
| “N-key rollover” | N กำหนดโดยบอรด ไม่ได้เปนโปรโตคอล บอรดที่อ้าง 6KRO มีเพดานจริงหกคีย |
ข้อมูลจำเพาะมันไมได้เปนเท็จ แต่มันก็ไมไดเปืนภาพครบถ้วน สติ๊กเกอร์บอกคณว่าบอรดออกแบบมาเพื่อดูแลอะไร; descriptor และ固件 บอกคณว่ามันสามารถให้อะไรได้จริงสั้่งสถานการณ์
“NKRO เต็ม” อยู่ในสเปกคีย์บอร์ดที่โฆษณามากที่สุดสเปกหนึ่ง มักนำเสนอเป็นการรับประกันว่าคุณจะ ไม่มีวันหายคีย์ การจัดกรอบนั้นถูกครึ่งหนึ่ง NKRO แก้ ghosting อย่างสมบูรณ์จริงๆ แต่ไม่รับประกันว่าทุกคีย์สโตรกถูกจับภายใต้ทุกเงื่อนไข ช่องว่างระหว่างสองคำกล่าวนี้ก่อความสับสนมาก การคืนที่ไม่จำเป็นอย่างต่อเนื่อง และการโต้เถียงในฟอรัมมากระหว่างคนที่อธิบายปัญหาต่างกันด้วยคำเดียวกัน
Ghosting กับ rollover เป็นสองปัญหาต่างกัน
Ghosting: ปัญหาการต่อสายเมทริกซ์
Ghosting เป็นอาร์ทิแฟกต์ของเมทริกซ์ฮาร์ดแวร์ คีย์บอร์ดสแกนคีย์เป็นตารางแถวและคอลัมน์แทนที่จะต่อสายแต่ละสวิตช์เอง เพราะการต่อสายเองจะต้องการ pin คอนโทรลเลอร์จำนวนไม่เป็นไปได้ ในเมทริกซ์ที่ไม่มีไดโอดแยก การกดคีย์เฉพาะสามคีย์สามารถทำเส้นทางไฟฟ้าเสร็จที่โน้มคอนโทรลเลอร์ให้เชื่อว่าคีย์ที่สี่ที่ไม่ได้แตะก็ถูกกดด้วย การบันทึกปลอมนั้นคือ ghosting และเป็นคุณสมบัติของดีไซน์วงจรไม่ใช่เฟิร์มแวร์
Rollover: กี่คีย์บันทึกพร้อมกัน
Rollover ที่ย่อเป็น KRO อธิบายว่าบอร์ดรายงานกี่คีย์พร้อมกันได้ 2KRO หมายถึงสองพร้อมกัน 6KRO หมายถึงหก และ NKRO เต็มหมายถึงหลักการคือทั้งหมด
NKRO กำจัด ghosting อย่างไร
NKRO เป็นทางแก้สำหรับ ghosting เพราะการใช้งานที่ถูกต้องวางไดโอดอนุกรมกับแต่ละสวิตช์เพื่อให้กระแสไม่ไหลย้อนกลับผ่านคีย์ที่ไม่ได้กดและสร้างเส้นทางปลอม ถ้าบอร์ดใช้ NKRO จริงๆ การกดปลอมเป็นไปไม่ได้ทางไฟฟ้า ส่วนนั้นของการอ้างทางการตลาดถูกต้องทั้งหมด

ขีดจำกัดที่ NKRO ไม่สามารถเอาออกได้
นี่คือสิ่งที่การตลาดละเว้นอย่างสม่ำเสมอ คีย์บอร์ด USB HID ส่ง keycode ภายใน packet รายงานขนาดคงที่ ที่โครงสร้างประกาศใน HID descriptor ของอุปกรณ์ boot protocol อนุญาตหกคีย์ปกติบวกบิต modifier HID report คีย์บอร์ดเต็มที่ใช้โดยระบบปฏิบัติการสมัยใหม่อนุญาตสล็อตคีย์จำกัดจำนวนใกล้เคียงกันต่อ packet ตัวเลขที่แน่นอนแตกต่างตามการใช้งานเฟิร์มแวร์
กดคีย์จำนวนมากพอภายในหน้าต่างรายงานเดียวและ packet ไม่มีที่ว่างให้ส่วนเกิน เฟิร์มแวร์ NKRO ดันเพดานนี้สูงกว่าบอร์ด 6KRO พื้นฐานมาก ด้วยเทคนิคเช่นรายงานแบบ bitmap หรือการนำเสนอ logical HID interface หลายอัน แต่ไม่มีเฟิร์มแวร์ใดเกินความจุที่ descriptor ของตัวเองประกาศกับ host ได้
ผลคือแม้บอร์ดที่โฆษณาว่า NKRO เต็มก็สามารถ ทิ้งคีย์ระหว่างคอร์ดสุดโต่ง ไม่ใช่เพราะ ghosting ที่ไดโอดกำจัดแล้ว แต่เพราะ packet รายงานถึงความจุ เรื่องนี้หายากจริงๆ ในการใช้งานปกติ แต่เป็นเหตุผลที่ NKRO ไม่ได้หมายถึงคีย์ไม่จำกัดกับการสูญเสียเป็นศูนย์ภายใต้โหลดใดๆ
ทำไมบอร์ดเกมมิ่งของคุณยังอาจหายคีย์
เมื่อบอร์ด high-rollover ทิ้งคีย์ในทางปฏิบัติ สาเหตุเกือบทั้งหมดเป็นหนึ่งจากสี่:
- HID report overflow ระหว่างการกดพร้อมกันที่ใหญ่ผิดปกติ ดังที่อธิบายข้างบน
- เฟิร์มแวร์หรือ debounce lag เมื่อการกดเร็วกว่าที่รอบสแกนจัดการได้สะอาด
- การอ้าง NKRO เกินจริง ที่สเปกชีตเกินความจริงที่ใช้งาน
- การจำกัดฝั่ง host จาก USB controller ที่โอเวอร์โหลด hub ไม่เพียงพอ หรือการจัดการอินพุตของระบบปฏิบัติการภายใต้โหลดโปรเซสเซอร์หนัก ทั้งหมดไม่อยู่ในการควบคุมของคีย์บอร์ด
การแยกระหว่างพวกมันต้องการ tester ที่บันทึก raw event code ที่เบราว์เซอร์ได้รับจริง เพราะเท่านั้นคุณจึงจะเห็นอย่างแม่นยำว่าคีย์ไหนมาและคีย์ไหนไม่มาเลย การเดาจากความรู้สึกคีย์บอร์ดมักให้การวินิจฉัยผิดอย่างน่าเชื่อถือ
Rollover กับ polling rate ไม่ใช่สิ่งเดียวกัน
สเปกทั้งสองเป็นอิสระ และการสับสนทั้งสองนำไปสู่การซื้อการอัปเกรดผิด:
- Rollover (KRO) กำหนดว่ากี่คีย์สามารถบันทึกพร้อมกันได้
- Polling rate (Hz) กำหนดว่าบอร์ดรายงานให้คอมพิวเตอร์บ่อยแค่ไหน มัก 125, 250, 500 หรือ 1000 ครั้งต่อวินาที
บอร์ดสามารถเสนอ polling 1000Hz กับ 2KRO เท่านั้น หรือ NKRO เต็มที่ 125Hz อย่างเรียบง่าย Polling สูงทำให้แต่ละการกดบันทึก เร็วขึ้น ในขณะที่ rollover สูงอนุญาตให้การกดมากขึ้นบันทึก พร้อมกัน ถ้าคำร้องของคุณคือ delay ที่รับรู้ ให้สืบ polling rate, เวลาเฟรม และ latency ระบบ ถ้าคำร้องคือคีย์ที่หายระหว่างคอร์ด ให้สืบ rollover และขีดจำกัด HID report การถือทั้งสองเป็นสเปกเดียวทำให้เสียเงินไปกับสิ่งที่คุณไม่ได้ต้องการจริง
คุณต้องการ rollover แค่ไหนจริงๆ?
จับคู่สเปกกับการใช้งานจริงของคุณแทนระดับการตลาด:
- พิมพ์ร้อยแก้ว: 6KRO เกินพอ แม้พิมพ์เร็วก็ไม่ค่อยเกินสามหรือสี่คีย์พร้อมกันจริงระหว่างการเปลี่ยนนิ้ว
- เกมกระแสหลัก: 6KRO ครอบคลุมสองทิศทางเคลื่อนที่บวก modifier บวก binding ความสามารถ ซึ่งอธิบายคอร์ดที่ต้องการมากที่สุดส่วนใหญ่
- เกมจังหวะ, stenography, layout macro ซับซ้อน: NKRO เต็มสมควรค่า เพราะกรณีใช้งานเหล่านี้เกี่ยวข้องกับอินพุตพร้อมกันขนาดใหญ่โดยตั้งใจเป็นโหมดการทำงานปกติ
ถ้าร้านค้ายืนยันว่า NKRO เต็มจำเป็นโดยไม่ขึ้นกับกรณีใช้งาน นั่นเป็นท่าทีขาย ไม่ใช่ข้อกำหนดทางเทคนิค
ยืนยันแทนที่จะไว้ใจป้าย
keyboard tester ของเราแสดงแผนผังคีย์สดควบกับ log ของ raw event code กดคอร์ดที่ตั้งใจยากและตรวจสอบสามเงื่อนไข: ทุกคีย์ที่คุณกดสว่าง ไม่มีคีย์ที่คุณไม่ได้กดสว่าง และทุกคีย์ที่กดปรากฏใน event log แล้วเพิ่มขนาดคอร์ดเรื่อยๆ จนกว่าบางอย่างจะล้มเหลว ซึ่งเปิดเผยขีดจำกัดปฏิบัติจริงของบอร์ดของคุณแทนตัวเลขบนกล่อง

ถ้าคีย์หายเฉพาะเมื่อเชื่อมต่อผ่าน hub หรือเฉพาะใต้โหลดระบบหนัก คีย์บอร์ดอาจบริสุทธิ์และปัญหาอยู่ที่เส้นทางการเชื่อมต่อหรือการกำหนดค่า host ทดสอบตรงบนพอร์ตเมนบอร์ดก่อนสรุปอะไรเกี่ยวกับฮาร์ดแวร์
รอบสแกนเมทริกซ์: คีย์บอร์ดอ่านคีย์จริงๆ อย่างไร
การเข้าใจว่าคีย์บอร์ดตรวจจับการกดคีย์ที่ระดับฮาร์ดแวร์ชี้แจงทำไม ghosting เกิด ทำไมไดโอดป้องกัน และทำไม scan rate สำคัญควบคู่กับสเปก rollover กระบวนการซับซ้อนกว่าโมเดล “กดคีย์ ส่งสัญญาณ” ง่ายๆ ที่ผู้ใช้ส่วนใหญ่จินตนาการ
ภายในคีย์บอร์ด สวิตช์จัดเป็นตารางแถวและคอลัมน์ แต่ละสวิตช์อยู่ที่จุดตัดของเส้นแถวหนึ่งและเส้นคอลัมน์หนึ่ง microcontroller ไม่สามารถอ่านคีย์ทั้งหมดพร้อมกัน แทนมันสแกนพวกมันอย่างรวดเร็วโดยขับเส้นแถวหนึ่งสูงในแต่ละครั้งและอ่านเส้นคอลัมน์ทั้งหมดเพื่อดูว่าสวิตช์ใดบนแถวนั้นถูกกด แล้วย้ายไปแถวถัดไปและทำซ้ำ คีย์บอร์ดทั่วไปที่มี 6 แถวและ 18 คอลัมน์เสร็จสแกนเต็มในต่ำกว่าหนึ่งมิลลิวินาที หมายความว่า scan rate สูงกว่า 1000 ครั้งต่อวินาที
ในเมทริกซ์ที่ไม่มีไดโอดแยก การกดคีย์หลายคีย์บนแถวหรือคอลัมน์เดียวกันสามารถสร้างเส้นทางไฟฟ้าที่ไม่ตั้งใจ ถ้าสามคีย์เป็นรูปตัว L บนตาราง กระแสจากแถวที่ active สามารถไหลผ่านสวิตช์ที่กดและกลับขึ้นแถวที่ไม่ active ทำให้คอนโทรลเลอร์เชื่อว่าคีย์ที่สี่ — ที่มุม L — ถูกกดด้วย นี่คือกลไก ghosting และเป็นผลโดยตรงของดีไซน์เมทริกซ์ การสแกนเร็ว แต่เส้นทางไฟฟ้าไม่ถูกแยก
การเพิ่มไดโอดอนุกรมกับแต่ละสวิตช์แก้เรื่องนี้เพราะไดโอดอนุญาตให้กระแสไหลทิศทางเดียว เมื่อติดตั้งไดโอด กระแสไม่สามารถไหลย้อนกลับผ่านสวิตช์ที่ไม่ได้กด ซึ่งตัดวงจร ghost คีย์ทุกคีย์ที่อ้าง NKRO ต้องมีไดโอดเหล่านี้ — ไม่มีพวกมัน ghosting เป็นไปไม่ได้ที่จะหลีกเลี่ยงทางกลสำหรับชุดคีย์บางชุดโดยไม่ขึ้นกับคุณภาพเฟิร์มแวร์
scan rate ยังโต้ตอบกับ debounce เมื่อสวิตช์เมคานิคอลปิด คอนแทคเด้งทางกายภาพในช่วงสั้น — มักหลายมิลลิวินาที แตกต่างตามการออกแบบสวิตช์ — ก่อการเปลี่ยน on-off รวดเร็ว คอนโทรลเลอร์ต้องรอให้การเด้งตั้งก่อนบันทึกการกด ซึ่งหมายความว่าแต่ละรอบสแกนรวมการตรวจ debounce ถ้ารอบสแกนเป็นหนึ่งมิลลิวินาทีและหน้าต่าง debounce ห้ามิลลิวินาที คอนโทรลเลอร์ต้องการห้าสแกนติดต่อกันที่แสดงคีย์ถูกกดก่อน commit เหตุการณ์ delay debounce นี้เป็นการแลกโดยตั้งใจ: หน้าต่างสั้นตอบสนองเร็วกว่าแต่เสี่ยงบันทึก noise หน้าต่างยาวคงที่แต่เพิ่ม input latency การใช้งาน debounce เป็นการตัดสินใจดีไซน์เฟิร์มแวร์ ซึ่งเป็นเหตุผลที่คีย์บอร์ดสองตัวที่มีฮาร์ดแวร์สวิตช์เหมือนกันรู้สึกตอบสนองต่างกัน
สถาปัตยกรรมการสแกนนี้ยังอธิบายทำไมคีย์บอร์ดสามารถอ้าง polling rate สูงในขณะที่ยังหายคีย์ภายใต้โหลดพร้อมกันหนัก polling rate กำหนดว่าคีย์ที่ commit แล้วถูกส่งให้คอมพิวเตอร์เร็วแค่ไหน แต่รอบสแกนและ debounce กำหนดว่าคีย์ถูกตรวจจับเร็วแค่ไหนตั้งแต่แรก ถ้ารอบสแกนไม่สามารถ resolve คีย์ที่กดทั้งหมดภายในหน้าต่างรายงานเดียว บางคีย์จะถูกเลื่อนไปรายงานถัดไป ก่ออาการคีย์ที่หายที่ผู้ใช้ให้เหตุผลว่าเป็นขีดจำกัด rollover
ทำไมไดโอดจึงมีราคา: เศรษฐศาสตร์การผลิตของ NKRO
ถ้าไดโอดแก้ ghosting ได้ดีขนาดนั้น ทำไมคีย์บอร์ดไม่ทุกตัวรวมพวกมัน คำตอบเป็นเศรษฐกิจ และการเข้าใจโครงสร้างต้นทุนช่วยให้คุณตีความการอ้างของผู้ผลิตได้สำคัญมากขึ้น
แต่ละสวิตช์ในคีย์บอร์ด NKRO ต้องการไดโอด — มักเป็น signal diode เล็กที่ราคาเศษเซ็นต์เป็นจำนวนมาก บนคีย์บอร์ด 87 คีย์ ต้นทุนไดโอดดิบต่ำกว่าหนึ่งดอลลาร์ ค่าใช้จ่ายจริงอยู่ที่อื่น แต่ละไดโอดต้องถูกแทรกเข้าวงจร บัดกรี และทดสอบ บนสายการผลิตอัตโนมัติเต็มนี่เพิ่มเวลาประมวลผลต่อบอร์ด บนสายการผลิตชุดเล็กที่บัดกรีมือ ต้นทุนแรงงานมีนัยสำคัญ PCB ยังต้องออกแบบด้วย trace ใหญ่กว่าเพื่อรองรับ pad ไดโอด เพิ่มความซับซ้อนและต้นทุนวัสดุของบอร์ดเล็กน้อย
สำหรับคีย์บอร์ดเมมเบรนประหยัด ที่ใช้ trace ตัวนำพิมพ์บนเมมเบรนยืนหยุ่นแทนสวิตช์ discrete การเพิ่มไดโอดไม่สามารถทำได้แม้ไม่มีการออกแบบใหม่พื้นฐานของกระบวนการผลิต คีย์บอร์ดเมมเบรนบรรลุราคาต่ำผ่านการรวมอย่างสุด: เมทริกซ์ทั้งหมดพิมพ์ในรอบเดียวโดยไม่มีชิ้นส่วน discrete NKRO บนบอร์ดเมมเบรนต้องการวิธีไฮบริดที่ลบล้างข้อได้เปรียบต้นทุน
การแบ่งส่วนตลาดที่นี่ก่อขึ้นโดยตั้งใจ คีย์บอร์ดเมคานิคอลพรีเมียมโฆษณา NKRO พรีเมียมค้าปลีกสำหรับ NKRO เต็มมักไม่เยอะ — มักไม่กี่ดอลลาร์ถึงประมาณสิบห้า ต่างตามแบรนด์และรุ่น คีย์บอร์ดเมคานิคอลประหยัดมักอ้าง NKRO บน USB แต่ใช้งานผ่านเทคนิคเฟิร์มแวร์ — bitmap report, logical interface หลายอัน — ที่ขยายขีดจำกัด rollover โดยไม่ต้องการไดโอด การใช้งานเหล่านี้สามารถรายงานมากกว่าหกคีย์ แต่อาจยัง ghost ภายใต้ชุดเฉพาะ เพราะเมทริกซ์พื้นฐานขาดการแยกด้วยไดโอด ป้าย “NKRO” ทางการตลาดไม่แยกระหว่าง NKRO ฮาร์ดแวร์ (มีไดโอด) และ NKRO เฟิร์มแวร์ (ไม่มี) ซึ่งเป็นเหตุผลที่การทดสอบยังจำเป็น
สำหรับผู้ซื้อ สรุปในทางปฏิบัติคือถือการอ้าง NKRO เป็นจุดเริ่มต้นไม่ใช่การรับประกัน คีย์บอร์ดที่โฆษณาว่า NKRO อาจมีไดโอด หรืออาจพึ่งเทคนิคเฟิร์มแวร์ที่ขยายขีดจำกัดแต่ไม่กำจัด ghosting ภายใต้ทุกชุด วิธีเดียวที่ชัดเจนในการรู้คือทดสอบด้วยคอร์ดใหญ่ขึ้นเรื่อยๆ และสังเกตว่าคีย์ปลอมปรากฏหรือไม่
ควรซื้อ NKRO หรือไม่นะ?
NKRO ที่แยกไดโอดจริง ๆ สิ้น ghosting เมทริกซ์, แต่ป้าย “NKRO” เดียวไม่พิสูจน์การดำเนินการนั้น, และบอร์ดทุกตัวยังมีเพดานกดพร้อมกันปฏิบัติที่ตั้งโดย HID descriptor และ firmware ของมัน ให้ความหมาย “NKRO เต็ม” ว่าหมายถึงไม่มีคีย์ปลอมและความจุกดพร้อมกันสูงมาก ในทางปฏิบัติ แทนที่จะเป็นทุกคีย์ตามตัวอักษรเสมอภายใต้โหลดใดๆ ทดสอบบอร์ดเฉพาะของคุณก่อนไว้ใจป้าย แยกปัญหา rollover จากปัญหา polling เพราะต้องการทางแก้ต่างกัน และตรวจสอบ firmware, debounce และการจัดการ input ของ OS ก่อนสมมติว่าปัญหาของ hub หรือ bandwidth