แป้นพิมพ์ USB ส่งสัญญาณได้เพียงอย่างเดียวหรือไม่หรือยังรับสัญญาณจากคอมพิวเตอร์หรือไม่


83

แป้นพิมพ์ไม่ต้องการสัญญาณใด ๆ จากคอมพิวเตอร์เพียงเปิดเครื่องใช่ไหม หรือมันจำเป็นต้องรับสัญญาณเช่นเดียวกับการส่งพวกเขา?

แก้ไข: ฉันไม่ได้คาดหวังคำถามนี้เพื่อสร้างความสนใจมาก! ฉันถามเพราะฉันมีความฝันที่ไม่ได้ใช้งานในการสร้าง doohickey ซึ่งทำซ้ำสัญญาณเพื่อให้แป้นพิมพ์สามารถส่งจดหมายเดียวกันไปยังคอมพิวเตอร์สองเครื่องได้ในครั้งเดียว เนื่องจาก (จากสิ่งที่ฉันสามารถหาได้ในคำตอบ) คอมพิวเตอร์ควบคุมแป้นพิมพ์อย่างแข็งขันเช่นอุปกรณ์อื่น ๆ ดังนั้นจึงเป็นไปไม่ได้อย่างชัดเจน ไม่ใช่เรื่องใหญ่อย่างที่ฉันไม่ได้มีทักษะในการสร้างมันต่อไป!


40
เช่นมันอาจได้รับสถานะของกุญแจล็อค คีย์บอร์ดจำนวนมากมีไฟ LED แสดงสถานะของกุญแจล็อค ลองเปิดสวิตช์ตัวล็อคจากนั้นเปลี่ยนแป้นพิมพ์ของคุณเป็นไปได้ว่าสถานะจะยังคงล็อคอยู่ข้อมูลนี้ต้องมาจากพีซี
MátéJuhász

8
แม้คีย์บอร์ด PS / 2 จะรับสัญญาณจากพีซีไม่เช่นนั้นจะสามารถเปิด / ปิดไฟ LED ได้อย่างไร?
phuclv

8
@Devsman คุณไม่สามารถทำได้มิฉะนั้นสถานะการล็อคจะไม่ซิงค์เนื่องจากซอฟต์แวร์สามารถเปลี่ยนแปลงได้ ตัวอย่างเช่นถ้าคุณเสียบคีย์บอร์ด 2 อันแล้วกดปุ่ม numlock บนจอ LED LED อีกอันจะสลับกัน สามารถทำได้เช่นเดียวกันกับบนแป้นพิมพ์บนหน้าจอ
phuclv


7
อุปกรณ์ USB ต้องมีข้อมูลสองทิศทางเนื่องจากความต้องการของการจับมือครั้งแรกเพื่อเปิดใช้งานคลาสอุปกรณ์เฉพาะ
Steve

คำตอบ:


101

จากข้อมูลจำเพาะ "ข้อกำหนดคลาสอุปกรณ์สำหรับอุปกรณ์เชื่อมต่อมนุษย์ (HID)" รุ่น 11.1 ":

การซิงโครไนซ์ระหว่างสถานะ LED และ CAPS LOCK, NUM LOCK, SCROLL LOCK, COMPOSE และ KANA นั้นโฮสต์โดยโฮสต์และไม่ใช่คีย์บอร์ด หากใช้ตัวอธิบายแป้นพิมพ์ในภาคผนวก B สถานะ LED จะถูกตั้งค่าโดยการส่งรายงานสัมบูรณ์ 5 บิตไปยังแป้นพิมพ์ผ่านคำขอ Set_Report (เอาต์พุต)

ในการเปลี่ยนไฟ LED ของคีย์บอร์ดแป้นพิมพ์จะยอมรับคำสั่งให้ทำ ดังนั้นจึงไม่ใช่อุปกรณ์ "อินพุตเท่านั้น" (หมายถึงมันจะส่งออกข้อมูลไปยังโฮสต์เท่านั้น)

ที่ถูกกล่าวว่ามีกระบวนการเจรจาและการแจงนับกับอุปกรณ์ USB ทั้งหมดที่ต้องมีการสนทนากลับไปมาระหว่างโฮสต์และอุปกรณ์ คุณไม่มีอุปกรณ์ USB "อ่านอย่างเดียว"

แม้กระทั่งก่อน USB ตัวควบคุมแป้นพิมพ์ PC จะยอมรับคำสั่งเพราะมันทำบางสิ่งนอกเหนือจากการอ่านแป้นพิมพ์ ( อ้างอิง ):

หากแป้นพิมพ์เป็นหน่วยระบบอุปกรณ์ต่อพ่วงที่แยกจากกัน (เช่นในคอมพิวเตอร์เดสก์ท็อปที่ทันสมัยส่วนใหญ่) คอนโทรลเลอร์ของแป้นพิมพ์จะไม่ยึดติดกับปุ่มโดยตรง แต่จะได้รับ scancodes จากไมโครคอนโทรลเลอร์ที่ฝังอยู่ในแป้นพิมพ์ผ่านอินเตอร์เฟสอนุกรม ในกรณีนี้คอนโทรลเลอร์มักจะควบคุมไฟ LED ของคีย์บอร์ดโดยส่งข้อมูลกลับไปที่คีย์บอร์ดผ่านสาย

IBM PC AT ใช้ชิป Intel 8042 เพื่อเชื่อมต่อกับแป้นพิมพ์ คอมพิวเตอร์นี้ยังควบคุมการเข้าถึงสาย A20 เพื่อใช้วิธีแก้ปัญหาสำหรับชิปบั๊กใน Intel 80286 1ตัวควบคุมแป้นพิมพ์ยังใช้เพื่อเริ่มต้นการรีเซ็ตซอฟต์แวร์ของ CPU เพื่อให้ CPU เปลี่ยนจากโหมดป้องกันเป็นจริง โหมด1เนื่องจาก 286 ไม่อนุญาตให้ CPU เปลี่ยนจากโหมดที่ได้รับการป้องกันไปเป็นโหมดจริงยกเว้นว่ามีการรีเซ็ต CPU นี่เป็นปัญหาเนื่องจาก BIOS และบริการของระบบปฏิบัติการสามารถเรียกใช้โดยโปรแกรมในโหมดจริงเท่านั้น

พฤติกรรมเหล่านี้มีการใช้งานโดยซอฟต์แวร์จำนวนมากที่คาดว่าจะเกิดพฤติกรรมนี้และดังนั้นผู้ควบคุมแป้นพิมพ์จึงยังคงควบคุมสาย A20 และทำการรีเซ็ต CPU ของซอฟต์แวร์อย่างต่อเนื่องแม้ว่าความต้องการการรีเซ็ตผ่านตัวควบคุมแป้นพิมพ์จะถูกยกเลิก โหมดจริงจากโหมดป้องกันโดยไม่ต้องรีเซ็ต CPU


15
หากเรากำลังพูดถึงสิ่งต่าง ๆ ในระดับ "สัญญาณ" แม้ว่าเราจะลืมการแจงนับและไฟ LED อินพุต USB นั้นขึ้นอยู่กับการสำรวจ อุปกรณ์ไม่สามารถส่งข้อมูลไปยังโฮสต์ได้ในเชิงรุกเว้นแต่ว่าโฮสต์ร้องขอ อุปกรณ์ป้อนข้อมูลจะทำการสำรวจบ่อยครั้งเพื่อถามว่ามีอะไรใหม่ที่จะรายงานหรือไม่
Matti Virkkunen

คุณหมายถึง "เอาท์พุทเท่านั้น" ใช่ไหม
Daniel

ไม่แน่ใจว่าจะใช้คำว่า tbh ได้อย่างไรแป้นพิมพ์เป็นอุปกรณ์ "อินพุต" และ "อินพุตเท่านั้น" จะหมายถึงมันส่งข้อมูลไปยังโฮสต์เท่านั้น แต่ไม่เคยได้รับ ขึ้นอยู่กับว่ามุมมองเป็นแป้นพิมพ์หรือโฮสต์
LawrenceC

1
@Daniel คนส่วนใหญ่จะไม่เรียกแป้นพิมพ์เป็นอุปกรณ์ "เอาท์พุท" อุปกรณ์ต่อพ่วงติดอยู่ภายนอกดังนั้นเราจึงโดดเด่นจากมุมมองของพีซีเพื่อเรียกว่าอินพุตหรือเอาต์พุต มันเป็นพีซีที่เราต้องการใช้ไม่ใช่แป้นพิมพ์เมาส์หรืออุปกรณ์ต่อพ่วงอื่น ๆ
phuclv

@ LưuVĩnhPhúcฉันรู้ แต่เขาเขียนSo it is not an "input-only" device (meaning it only outputs data to the host)ที่ทำให้ฉันสับสน
Daniel

56

ใด ๆ อุปกรณ์ USB โดยไม่คำนึงถึงระดับนี้ต้องมีการสื่อสารแบบสองทิศทางการทำงาน อุปกรณ์ USB ทุกตัว (หรือฟังก์ชั่นในแง่ของข้อมูลจำเพาะ USB) จะแสดงเป็นชุดของจุดปลายซึ่งสามารถคิดได้ว่าเป็นบัฟเฟอร์ที่ยอมรับหรือรับข้อมูล อย่างไรก็ตามแม้แต่ปลายทางที่สามารถส่งข้อมูลได้เพียงรอแพ็คเก็ตพิเศษที่เรียกว่าโทเค็นก่อนจึงจะสามารถตอบกลับได้: ป้อนคำอธิบายรูปภาพที่นี่

(ภาพจากที่นี่กล่องสีเทาแสดงถึงโฮสต์ USB, กล่องสีขาวแสดงถึงฟังก์ชั่น USB)

แม้จะมีการถ่ายโอนอินเตอร์รัปต์แบบนี้ก็ทำได้ด้วยวิธีนี้โฮสต์ USB ที่เชื่อมต่ออุปกรณ์ที่โพลโดยใช้โทเค็นแพ็คเก็ต สิ่งที่แตกต่างระหว่างการถ่ายโอนแบบปกติ (จำนวนมาก) และการถ่ายโอนแบบขัดจังหวะคือเวลาการลงคะแนนมีขนาดเล็กและรับประกันในกรณีหลัง ยังคงการถ่ายโอนทั้งหมดจะเริ่มต้นโดยโฮสต์


18

คำถามนี้สะท้อนให้เห็นถึงความเข้าใจผิดที่พบบ่อยว่าอุปกรณ์ USB "ส่ง" บางสิ่งไปยังพีซีด้วยตนเองเมื่อมีการกดปุ่ม (หรือเลื่อนเมาส์) นั่นเป็นสาเหตุที่ทำให้เกิดความสนใจสูง ในความเป็นจริงอุปกรณ์ USB จะไม่ส่งสิ่งใดจนกว่าจะได้รับคำขอที่เกี่ยวข้องจากโฮสต์ หนึ่งข้อยกเว้นคือกระบวนการปลุกจากอุปกรณ์ที่ถูกระงับ

ในขณะที่ USB ดูเรียบง่ายบนพื้นผิวในความเป็นจริงการทำงานค่อนข้างซับซ้อน อุปกรณ์ USB ใหม่ใด ๆ จะต้อง "แจงนับ" ก่อนจึงจะเริ่มทำงานได้ ลำดับมีดังนี้:

  1. หลังจากเสียบแป้นพิมพ์แล้วพอร์ตโฮสต์จะรับสัญญาณ "สถานะการเชื่อมต่อ" (สำหรับสัญญาณ LS, D- ถูกดึงด้วยคีย์บอร์ดสูง)

  2. จากนั้นโฮสต์จะตั้งค่าพอร์ตเป็นโหมด "รีเซ็ตพอร์ต" และ USB PHY (ไดรเวอร์เลเยอร์ทางกายภาพ) จะส่ง "USB_RESET" ลงในบรรทัด D + / D- (ทั้งสองบรรทัดถูกขับเคลื่อนต่ำตามเวลาที่กำหนด) ข้อมูลบางอย่างเกี่ยวกับการ "ตั้งค่า" พอร์ตสำหรับ FS / อุปกรณ์ HS สามารถพบได้ที่นี่

  3. จากนั้นโฮสต์เริ่มส่งแพ็กเก็ตขอบเขตเฟรมออกในช่วงเวลา 1ms สำหรับอุปกรณ์ความเร็วต่ำ (LS) เป็นแป้นพิมพ์แบบมีสายธรรมดาเหล่านี้เป็นเพียง "รักษา" พัลส์ในขณะที่สำหรับ FS พิเศษ SOF - แพ็คเก็ตเริ่มต้นของเฟรมจะถูกสร้างขึ้น แพ็คเก็ตเหล่านี้ทำให้อุปกรณ์อยู่ในโหมดแอ็คทีฟและป้องกันไม่ให้เข้าสู่โหมดประหยัดพลังงาน

  4. จากนั้น "แจงนับ" จะเริ่มขึ้น โฮสต์ส่งคำขอเพื่อรับตัวอธิบายอุปกรณ์ คำขอถูกส่งไปที่ "default pipe" พร้อมที่อยู่อุปกรณ์ "0" [ขณะนี้มีเพียงหนึ่งอุปกรณ์ดังกล่าว - แป้นพิมพ์ - เนื่องจากอุปกรณ์อื่น ๆ ทั้งหมดบนรถบัสควรมีที่อยู่ USB ที่กำหนดไว้แยกต่างหาก]

  5. แป้นพิมพ์ส่งคืนข้อมูลที่ร้องขอดังนั้นโฮสต์จะสามารถกำหนดประเภทของไดรเวอร์ที่ควรโหลด

  6. โฮสต์ส่งธุรกรรมที่ต้องการให้อุปกรณ์เปลี่ยนที่อยู่เริ่มต้นเป็นที่อยู่ใหม่ที่กำหนด

  7. จากนั้นโฮสต์จะเริ่มรอบใหม่ของการสื่อสารกับอุปกรณ์ตอนนี้ที่อยู่ที่ได้รับมอบหมายใหม่ อุปกรณ์อื่น ๆ ทั้งหมดไม่สนใจการสื่อสารนี้เพราะไม่ได้ส่งถึงพวกเขา

  8. โฮสต์อาจอ่านข้อมูลเพิ่มเติมจากตัวอธิบายอื่นหลายตัวและในที่สุดก็เลือก "การกำหนดค่าอุปกรณ์" นี่เป็นการสรุปกระบวนการแจงนับ

  9. โฮสต์จะเริ่มสื่อสารกับอุปกรณ์ทั้งนี้ขึ้นอยู่กับคลาสอุปกรณ์ USB ในกรณีแป้นพิมพ์โฮสต์จะส่งคำขอ "IN" เป็นระยะ ๆ โดยทั่วไปจะทำการสำรวจอุปกรณ์ หากคีย์บอร์ดกดหรือกดคีย์ใด ๆ คีย์บอร์ดจะส่งคืนข้อมูลนี้ หากไม่มีข้อมูลจะไม่ถูกส่งกลับไปยังไดรเวอร์อุปกรณ์

กล่าวโดยย่ออุปกรณ์ USB ทุกตัวต้องได้รับที่อยู่ที่ไม่ซ้ำกันจากโฮสต์ USB และโฮสต์ USB สองแห่งจะมีปัญหาในการสื่อสารกับอุปกรณ์ - การชนกันของบัส, ที่อยู่ไม่ตรงกัน, การสกัดกั้นแบบสุ่มของข้อมูลคีย์ ฯลฯ โปรโตคอล USB ทำให้ไม่สามารถแบ่งปัน อุปกรณ์ระหว่างโฮสต์ USB สองแห่ง


If keyboard has any key pressed/depressed, the keyboard will return this information- จะมีปุ่มผีเกิดขึ้นได้อย่างไร? ฉันรู้สึกว่าแป้นพิมพ์จะต้องส่งเหตุการณ์คีย์ - อัพและคีย์ - ดาวน์ซึ่งจะอธิบายว่าทำไมหากเหตุการณ์การคีย์อัพพลาดคุณจะมีผีคีย์ ...
Shadow

2
@shadow ไม่แน่ใจว่าคุณถามอะไรเกี่ยวกับ อัตราการสำรวจสำหรับแป้นพิมพ์ถ้าฉันจำได้คือ 8 ms คุณกำลังกดปุ่มแบบอะซิงโครนัสดังนั้นเหตุการณ์บางอย่าง (สร้างหรือทำลาย) สามารถไปยังเฟรมการสำรวจที่แตกต่างกันได้บางเหตุการณ์จะเกิดขึ้นอย่างแน่นอนเมื่อคำขอ IN กำลังดำเนินการ ตัวควบคุมแป้นพิมพ์ที่ดีควรจัดการเหตุการณ์ข้ามทั้งหมดและไม่ควรพลาดเหตุการณ์ ฉันไม่รู้ว่าทำไมแป้นพิมพ์สร้าง "ปุ่มผี" แต่ไม่มีอะไรเกี่ยวข้องกับโปรโตคอล USB
Ale..chenski

4
ปุ่มผีมีความสัมพันธ์กับวิธีการเชื่อมต่อปุ่มทางกายภาพ คอนโทรลเลอร์ของแป้นพิมพ์ที่ถูกกว่าจะไม่มีพินเดียวสำหรับแต่ละคีย์ แต่จะมีระบบกริดของการกำหนดแอดเดรสด้วยเช่นแถวและคอลัมน์ที่ตัวควบคุมยืนยันลวดคอลัมน์และค้นหาสัญญาณบนลวดแถว ในสถานการณ์นี้การกดสองปุ่มเช่น E และ S พร้อมกันอาจไม่สามารถแยกได้จากการกด W และ D ยกเว้นตามเวลา
Ben

2

ตามที่คำตอบอื่น ๆ ได้อธิบายแล้ว USB ต้องการการสื่อสารสองทางเป็นส่วนหนึ่งของวิธีการทำงาน PS / 2 ในขณะที่อนุญาตการสื่อสารแบบสองทิศทางไม่จำเป็นต้องใช้มันเพื่อส่งคีย์ไปยังคอมพิวเตอร์ แต่ไม่ต้องการให้ตั้งค่า LED ของคีย์บอร์ด

ในทางทฤษฎีคุณสามารถสร้างอุปกรณ์เพื่อทำสำเนาสัญญาณ PS / 2 และส่งไปยังคอมพิวเตอร์เครื่องที่สองและยกเลิกคำสั่งใด ๆ จากคอมพิวเตอร์ดังนั้นคุณจึงสามารถส่งการกดปุ่มของคุณไปยังคอมพิวเตอร์หลายเครื่องได้ ตอบกลับไปยัง num lock, caps lock และ scroll lock state (หรือการเปลี่ยนแปลงสถานะ LED อื่น ๆ เช่นใน Linux บางครั้งไฟ LED ของคีย์บอร์ดจะถูกใช้เพื่อจุดประสงค์อื่น)

ฉันไม่แน่ใจว่าโครงการดังกล่าวจะซับซ้อนเพียงใด เป็นเวลานานแล้วที่ฉันทำงานกับ PS / 2 ดังนั้นฉันไม่รู้ว่าคุณสามารถเชื่อมต่อสาย / ตัวเชื่อมต่อได้หรือไม่ถ้าคุณต้องการอุปกรณ์ที่ใช้งาน (เช่นไมโครคอนโทรลเลอร์) เพื่อส่งคำสั่งในทิศทางเดียว แต่ทิ้งไป ในที่อื่น ๆ หากคุณมีไมโครคอนโทรลเลอร์คุณสามารถทำให้อุปกรณ์ดังกล่าวสามารถแปลคำสั่ง LED ของคีย์บอร์ดและ "รวม" พวกมันเพื่อแสดงผล (เช่นแฟลชยาว LED ถ้ามันอยู่ในคอมพิวเตอร์หนึ่ง แต่ปิดบนคอมพิวเตอร์สองแฟลชสั้น LED หากเปิดอยู่ในคอมพิวเตอร์สองเครื่อง แต่ปิดที่คอมพิวเตอร์หนึ่ง LED จะติดสว่างหากเปิดอยู่ในคอมพิวเตอร์ทั้งสองเครื่องและ LED ดับหากปิดในคอมพิวเตอร์ทั้งสองเครื่อง) นั่นจะสูงขึ้นไปอีก

นอกจากนี้หากเป้าหมายของคุณคือสามารถควบคุมคอมพิวเตอร์หนึ่งเครื่องจากคอมพิวเตอร์เครื่องอื่นหรือคอมพิวเตอร์สองเครื่องจากโต๊ะทำงานเดียวกันหรืออะไรก็ตามคุณอาจต้องการดู:

  • VNC (อนุญาตให้ควบคุมคอมพิวเตอร์หนึ่งเครื่องจากอีกเครื่องหนึ่งผ่านเครือข่าย)
  • RDP (อนุญาตให้ควบคุมคอมพิวเตอร์เครื่องหนึ่งจากอีกเครื่องหนึ่งผ่านเครือข่ายซึ่งสร้างไว้ใน Microsoft Windows แต่ต้องการรุ่น Professional)
  • KVM (ฮาร์ดแวร์ชิ้นหนึ่งที่ให้คุณสลับอุปกรณ์ต่อพ่วงหนึ่งชุดระหว่างคอมพิวเตอร์สองเครื่อง)

1

ก่อนหน้าคีย์บอร์ด USB คีย์บอร์ด PS / 2 ใช้โปรโตคอลที่ง่ายกว่ามากซึ่งเป็นไปได้ที่จะมีคีย์บอร์ดหนึ่งอันเชื่อมต่อกับอุปกรณ์ 2 เครื่องและใช้งานได้ การเชื่อมต่อ Y อย่างง่ายคือสิ่งที่จำเป็นต้องมี

คีย์บอร์ด USB รุ่นเก่ายังคงมีโหมดการจำลอง PS / 2 อยู่ภายใน; การใช้อะแดปเตอร์ขั้วต่อสีม่วงตัวใดตัวหนึ่งให้คุณเสียบเข้ากับพอร์ต PS / 2 ที่ด้านหลังคอมพิวเตอร์ ดังนั้นการใช้สายเคเบิลฝ่าวงล้อม USB to PS / 2 บนคอมพิวเตอร์ 2 เครื่องแล้วอะแดปเตอร์สีม่วงกลับไปที่แป้นพิมพ์ USB ของคุณอาจทำงานได้ดี

แป้นพิมพ์ USB รุ่นใหม่ลดลงโหมด PS / 2 ดั้งเดิมจึงไม่สามารถใช้งานได้ในกรณีนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.