Có một bàn phím USB chỉ gửi tín hiệu, hoặc nó cũng nhận được chúng từ máy tính?


83

Bàn phím không cần bất kỳ tín hiệu nào từ máy tính, chỉ cần nguồn, phải không? HOẶC nó có cần nhận tín hiệu cũng như gửi chúng không?

Chỉnh sửa: Tôi không mong đợi câu hỏi này sẽ tạo ra nhiều sự quan tâm! Tôi hỏi nó bởi vì tôi có một giấc mơ nhàn rỗi là xây dựng một doohickey sao chép tín hiệu để bàn phím có thể gửi cùng một chữ cái cho hai máy tính cùng một lúc. Vì (từ những gì tôi có thể đưa ra trong câu trả lời), máy tính chủ động điều khiển bàn phím như mọi thiết bị khác, điều này rõ ràng là không thể. Không phải là vấn đề lớn vì thực tế tôi không có kỹ năng để xây dựng nó!


40
ví dụ, nó có thể nhận trạng thái của các phím khóa. Nhiều bàn phím có đèn led chỉ trạng thái của các phím khóa. Hãy thử bật khóa mũ, sau đó thay thế bàn phím của bạn, có khả năng trạng thái vẫn sẽ bị khóa, thông tin này cần phải đến từ máy tính.
Máté Juhász

8
ngay cả bàn phím PS / 2 cũng nhận được tín hiệu từ PC, nếu không thì làm thế nào để bật / tắt đèn LED?
phuclv

8
@Devsman bạn không thể làm điều đó, nếu không trạng thái khóa sẽ không đồng bộ vì phần mềm có thể bị thay đổi. Ví dụ: nếu bạn cắm 2 bàn phím và nhấn numlock trên cái này, đèn LED bên kia sẽ chuyển đổi. Điều tương tự cũng có thể đạt được với trên bàn phím màn hình
phuclv


7
Một thiết bị USB phải có dữ liệu hai chiều, đơn giản là do các yêu cầu của bắt tay ban đầu để kích hoạt lớp thiết bị cụ thể.
Steve

Câu trả lời:


101

Từ thông số kỹ thuật " Định nghĩa lớp thiết bị cho thiết bị giao diện con người (HID)" phiên bản 11.1 ":

Đồng bộ hóa giữa các trạng thái LED và các sự kiện CAPS LOCK, NUM LOCK, SCROLL LOCK, COMPOSE và KANA được duy trì bởi máy chủ và KHÔNG phải bàn phím. Nếu sử dụng bộ mô tả bàn phím trong Phụ lục B, trạng thái LED được đặt bằng cách gửi báo cáo tuyệt đối 5 bit đến bàn phím thông qua yêu cầu Set_Report (Đầu ra).

Để thay đổi đèn LED bàn phím, bàn phím chấp nhận lệnh để làm như vậy. Vì vậy, nó không phải là một thiết bị "chỉ đầu vào" (có nghĩa là nó chỉ xuất dữ liệu cho máy chủ).

Điều đó đang được nói, có một quá trình đàm phán và liệt kê với tất cả các thiết bị USB yêu cầu một cuộc trò chuyện qua lại giữa máy chủ và thiết bị. Bạn không thể có thiết bị USB "chỉ đọc".

Ngay cả trước USB, bộ điều khiển bàn phím PC sẽ chấp nhận các lệnh vì nó đã thực hiện một số điều ngoài việc đọc bàn phím ( tham khảo ):

Nếu bàn phím là một đơn vị hệ thống ngoại vi riêng biệt (như trong hầu hết các máy tính để bàn hiện đại), bộ điều khiển bàn phím không được gắn trực tiếp vào các phím, nhưng nhận được các đoạn mã từ một vi điều khiển được nhúng trong bàn phím thông qua một loại giao diện nối tiếp. Trong trường hợp này, bộ điều khiển cũng thường điều khiển đèn LED của bàn phím bằng cách gửi dữ liệu trở lại bàn phím thông qua dây.

IBM PC AT đã sử dụng chip Intel 8042 để giao tiếp với bàn phím. Máy tính này cũng kiểm soát quyền truy cập vào dòng A20 để thực hiện cách khắc phục lỗi chip trong Intel 80286. 1 Bộ điều khiển bàn phím cũng được sử dụng để khởi động lại CPU phần mềm để cho phép CPU chuyển từ chế độ được bảo vệ sang thực chế độ 1 vì 286 không cho phép CPU chuyển từ chế độ được bảo vệ sang chế độ thực trừ khi CPU được đặt lại. Đây là một vấn đề vì BIOS và các dịch vụ hệ điều hành chỉ có thể được gọi bởi các chương trình ở chế độ thực.

Những hành vi này đã được sử dụng bởi rất nhiều phần mềm mong đợi hành vi này và do đó, bộ điều khiển bàn phím đã tiếp tục điều khiển dòng A20 và thực hiện đặt lại CPU phần mềm ngay cả khi nhu cầu thiết lập lại thông qua bộ điều khiển bàn phím bị hạn chế bởi khả năng chuyển đổi sang Intel 80386 chế độ thực từ chế độ được bảo vệ mà không cần thiết lập lại CPU.


15
Nếu chúng ta đang nói về những thứ ở mức "tín hiệu", ngay cả khi chúng ta quên liệt kê và đèn LED, đầu vào USB dựa trên việc bỏ phiếu. Một thiết bị không thể chủ động gửi dữ liệu đến máy chủ trừ khi máy chủ yêu cầu. Một thiết bị đầu vào chỉ được thăm dò rất thường xuyên để hỏi xem nó có gì mới để báo cáo không.
Matti Virkkunen

Bạn có nghĩa là "chỉ đầu ra" phải không?
Daniel

Không chắc chắn làm thế nào để từ đó, bàn phím là một thiết bị "đầu vào" và "chỉ đầu vào" có nghĩa là nó chỉ gửi dữ liệu đến máy chủ, nhưng không bao giờ nhận được. Phụ thuộc vào nếu quan điểm là bàn phím hoặc máy chủ.
LawrenceC

1
@Daniel hầu hết mọi người sẽ không gọi bàn phím là thiết bị "đầu ra". Thiết bị ngoại vi được gắn bên ngoài để chúng tôi đứng từ quan điểm của PC để gọi chúng là đầu vào hoặc đầu ra. Đó là PC mà chúng tôi muốn sử dụng, không phải bàn phím, chuột hoặc các thiết bị ngoại vi khác
phuclv

@ LưuViênPhúc Tôi biết, nhưng anh ấy viết So it is not an "input-only" device (meaning it only outputs data to the host)khiến tôi bối rối
Daniel

56

Bất kỳ thiết bị USB nào, bất kể lớp của nó đều yêu cầu giao tiếp hai chiều để hoạt động . Mỗi thiết bị USB (hoặc chức năng theo thông số kỹ thuật USB) được biểu diễn dưới dạng một tập hợp các điểm cuối có thể được coi là bộ đệm chấp nhận hoặc nhận dữ liệu. Tuy nhiên, ngay cả các điểm cuối chỉ có thể gửi dữ liệu, hãy đợi một gói đặc biệt được gọi là mã thông báo trước khi chúng có thể trả lời: nhập mô tả hình ảnh ở đây

(hình ảnh từ đây , hộp màu xám đại diện cho máy chủ USB, hộp màu trắng đại diện cho chức năng USB)

Ngay cả cái gọi là chuyển gián đoạn cũng được thực hiện theo cách này, với thiết bị kết nối bỏ phiếu của máy chủ USB sử dụng các gói mã thông báo. Điều khác biệt giữa chuyển khoản thường xuyên (số lượng lớn) và chuyển khoản gián đoạn là thời gian bỏ phiếu là nhỏ và được đảm bảo trong trường hợp sau. Tuy nhiên, tất cả các giao dịch chuyển tiền được bắt đầu bởi máy chủ lưu trữ.


18

Câu hỏi phản ánh một quan niệm sai lầm phổ biến rằng các thiết bị USB "tự mình" gửi một cái gì đó đến PC khi nhấn phím (hoặc di chuyển chuột), đó là lý do tại sao rất chú ý. Trên thực tế, các thiết bị USB không gửi bất cứ thứ gì cho đến khi chúng NHẬN yêu cầu sửa lỗi từ máy chủ. Một ngoại lệ là quá trình đánh thức từ một thiết bị treo.

Mặc dù USB trông đơn giản trên bề mặt, nhưng trên thực tế chức năng của nó khá phức tạp. Bất kỳ thiết bị USB mới nào cũng phải được "liệt kê" trước khi thiết bị bắt đầu hoạt động. Trình tự như sau:

  1. Sau khi cắm bàn phím, cổng máy chủ nhận được tín hiệu "trạng thái kết nối" (đối với tín hiệu LS, D- được kéo CAO bằng bàn phím).

  2. Sau đó, máy chủ đặt cổng thành chế độ "thiết lập lại cổng" và USB PHY (trình điều khiển lớp vật lý) gửi "USB_RESET" xuống các dòng D + / D- (cả hai dòng đều được điều khiển THẤP trong một khoảng thời gian quy định). Một số thông tin về "thiết lập lại cổng" cho các thiết bị FS / HS có thể được tìm thấy ở đây .

  3. Sau đó, máy chủ bắt đầu xuất các gói ranh giới khung trong khoảng thời gian 1ms. Đối với các thiết bị tốc độ thấp (LS) như bàn phím có dây thông thường, đây chỉ là các xung "duy trì sự sống", trong khi đối với FS, SOF đặc biệt - các gói bắt đầu khung hình được tạo ra. Các gói này giữ cho thiết bị ở chế độ hoạt động và ngăn không cho thiết bị hoạt động ở chế độ năng lượng thấp.

  4. Sau đó, "liệt kê" bắt đầu. Các máy chủ gửi một yêu cầu để có được mô tả thiết bị. Yêu cầu được gửi đến "đường ống mặc định" với địa chỉ thiết bị "0". [Chỉ có một thiết bị như vậy tại thời điểm này - bàn phím - vì tất cả các thiết bị khác trên xe buýt đã có địa chỉ USB được gán riêng]

  5. Bàn phím trả về thông tin được yêu cầu, do đó máy chủ sẽ có thể xác định loại trình điều khiển nào sẽ được tải.

  6. Máy chủ gửi một giao dịch yêu cầu thiết bị thay đổi địa chỉ mặc định thành địa chỉ được gán mới.

  7. Sau đó, máy chủ bắt đầu vòng liên lạc mới với thiết bị, bây giờ tại địa chỉ được chỉ định mới. Tất cả các thiết bị khác bỏ qua giao tiếp này vì nó không được gửi đến họ.

  8. Máy chủ có thể đọc thêm nhiều thông tin từ một số mô tả khác và cuối cùng chọn "cấu hình thiết bị". Điều này kết thúc quá trình liệt kê.

  9. Tùy thuộc vào lớp thiết bị USB, máy chủ bắt đầu liên lạc với thiết bị. Trong trường hợp bàn phím, máy chủ gửi yêu cầu "IN" về cơ bản theo định kỳ, về cơ bản là bỏ phiếu cho thiết bị (ngay cả khi đường ống định kỳ này được gọi là đường ống "ngắt"). Nếu bàn phím có bất kỳ phím nào được nhấn / ấn, bàn phím sẽ trả về thông tin này. Nếu không, sẽ không có dữ liệu nào được trả về trình điều khiển thiết bị.

Nói ngắn gọn, mọi thiết bị USB phải nhận địa chỉ duy nhất từ ​​máy chủ USB và hai máy chủ USB sẽ gặp khó khăn khi giao tiếp với thiết bị - va chạm xe buýt, không khớp địa chỉ, chặn ngẫu nhiên dữ liệu nhấn phím, v.v. Giao thức USB khiến không thể chia sẻ thiết bị giữa hai máy chủ USB.


If keyboard has any key pressed/depressed, the keyboard will return this information- làm thế nào các phím ma xảy ra sau đó? Tôi có ấn tượng rằng bàn phím phải gửi các sự kiện phím và phím xuống, điều này sẽ giải thích tại sao nếu một sự kiện khóa bị bỏ lỡ, bạn sẽ có các phím ma ...
Shadow

2
@shadow, không chắc bạn hỏi về cái gì Tỷ lệ bỏ phiếu cho bàn phím, nếu tôi nhớ lại, là 8 ms. Bạn đang nhấn các phím không đồng bộ, do đó một số sự kiện (thực hiện hoặc ngắt) có thể đi vào các khung bỏ phiếu khác nhau, một số sự kiện sẽ xảy ra chính xác khi yêu cầu IN đang diễn ra. Một bộ điều khiển bàn phím tốt sẽ xử lý đúng cách tất cả các giao cắt sự kiện và không nên thiếu các sự kiện. Tôi không biết tại sao bàn phím tạo ra "phím ma", nhưng nó không liên quan gì đến giao thức USB.
Ale..chenski

4
Các phím ma có liên quan đến cách các phím vật lý được nối dây. Bộ điều khiển bàn phím rẻ hơn không có một pin cho mỗi phím, thay vào đó chúng có hệ thống địa chỉ lưới với các hàng và cột, ví dụ như bộ điều khiển khẳng định dây cột và tìm tín hiệu trên dây hàng. Trong trường hợp này, nhấn hai phím, ví dụ E và S đồng thời có thể không thể phân biệt được với nhấn W và D, ngoại trừ theo thời gian.
Ben

2

Như các câu trả lời khác đã giải thích, USB yêu cầu giao tiếp hai chiều như một phần của cách thức hoạt động. PS / 2, trong khi cho phép giao tiếp hai chiều, không yêu cầu nó để gửi khóa tới máy tính, nhưng yêu cầu nó phải đặt đèn LED bàn phím.

Về mặt lý thuyết, bạn có thể xây dựng một thiết bị để nhân đôi tín hiệu PS / 2 và gửi nó đến máy tính thứ hai và loại bỏ bất kỳ lệnh nào từ máy tính, do đó bạn có thể gửi phím nhấn của mình đến nhiều máy tính nhưng đèn LED bàn phím sẽ không đáp ứng với khóa num, khóa mũ và trạng thái khóa cuộn (hoặc bất kỳ thay đổi nào khác về trạng thái LED, ví dụ như trong Linux, đèn LED bàn phím đôi khi được sử dụng cho mục đích thay thế).

Tôi không chắc chắn một dự án như vậy sẽ phức tạp như thế nào. Đã được một thời gian kể từ khi tôi làm việc với PS / 2, vì vậy tôi không biết liệu bạn có thể đơn giản kết nối một vài dây / đầu nối hoặc nếu bạn cần một thiết bị hoạt động (ví dụ như vi điều khiển) để truyền lệnh theo một hướng nhưng loại bỏ chúng trong cái khác Nếu bạn đã có một vi điều khiển, bạn thậm chí có thể tạo ra thiết bị sao cho nó có thể diễn giải các lệnh LED của bàn phím và "kết hợp" chúng để hiển thị (ví dụ: đèn flash dài nếu đèn LED bật trên máy tính nhưng tắt trên máy tính hai, đèn flash ngắn Đèn LED nếu bật trên máy tính hai nhưng tắt trên máy tính một, đèn LED sáng ổn định nếu bật trên cả hai máy tính và đèn LED tắt nếu tắt trên cả hai máy tính). Điều đó sẽ được nâng cao hơn mặc dù.

Ngoài ra, nếu mục tiêu của bạn là có thể điều khiển một máy tính từ một máy tính khác hoặc hai máy tính từ cùng một bàn hoặc bất cứ thứ gì, bạn có thể muốn xem xét:

  • VNC (cho phép điều khiển một máy tính từ một máy tính khác qua mạng)
  • RDP (cũng cho phép điều khiển một máy tính từ máy tính khác qua mạng, được tích hợp vào Microsoft Windows nhưng yêu cầu phiên bản Professional)
  • KVM (một phần cứng cho phép bạn chuyển đổi một bộ thiết bị ngoại vi giữa hai máy tính)

1

Trước bàn phím USB, bàn phím PS / 2 đã sử dụng giao thức đơn giản hơn nhiều trong đó có thể có một bàn phím được kết nối với 2 thiết bị và hoạt động. Một kết nối Y đơn giản là tất cả những gì cần thiết.

Bàn phím USB cũ hơn vẫn có chế độ mô phỏng PS / 2 được tích hợp; sử dụng một trong các bộ điều hợp đầu nối màu tím cho phép bạn cắm nó vào cổng PS / 2 ở mặt sau của máy tính. Vì vậy, sử dụng cáp ngắt USB sang PS / 2 trên 2 máy tính, sau đó bộ chuyển đổi màu tím trở lại bàn phím USB của bạn có thể hoạt động tốt.

Bàn phím USB mới hơn đã bỏ chế độ PS / 2 cũ, vì vậy sẽ không hoạt động trong trường hợp này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.