Keyboard tidak memerlukan sinyal dari komputer, cukup daya, bukan? ATAU apakah perlu menerima sinyal serta mengirimnya?
Sunting: Saya tidak berharap pertanyaan ini menghasilkan bunga sebanyak ini! Saya menanyakannya karena saya memiliki mimpi kosong untuk membangun doohickey yang menduplikasi sinyal sehingga keyboard dapat mengirim surat yang sama ke dua komputer sekaligus. Karena (dari apa yang saya dapat temukan dalam jawaban) komputer secara aktif mengontrol keyboard seperti perangkat lain, ini jelas tidak mungkin. Bukan masalah besar karena secara praktis saya tidak memiliki keterampilan untuk membangunnya!
Jawaban:
Dari spesifikasi " Definisi Kelas Perangkat untuk Perangkat Antarmuka Manusia (HID)" versi 11.1 ":
Untuk mengubah LED keyboard, keyboard menerima perintah untuk melakukannya. Jadi itu bukan perangkat "input-only" (artinya hanya output data ke host).
Yang sedang berkata, ada proses negosiasi dan enumerasi dengan semua perangkat USB yang membutuhkan percakapan bolak-balik antara host dan perangkat. Anda tidak dapat memiliki perangkat USB "baca-saja".
Bahkan sebelum USB, pengontrol keyboard PC akan menerima perintah karena melakukan beberapa hal selain membaca keyboard ( referensi ):
sumber
So it is not an "input-only" device (meaning it only outputs data to the host)
yang membingungkan sayaPerangkat USB apa pun terlepas dari kelasnya membutuhkan komunikasi dua arah agar berfungsi . Setiap perangkat USB (atau fungsi dalam hal spesifikasi USB) direpresentasikan sebagai sekumpulan titik akhir yang dapat dianggap sebagai buffer yang menerima atau menerima data. Namun, bahkan titik akhir yang hanya dapat mengirim data menunggu paket khusus yang disebut token sebelum mereka dapat menjawab:
(gambar dari sini , kotak abu-abu mewakili host USB, kotak putih mewakili fungsi USB)
Bahkan apa yang disebut transfer interupsi dilakukan dengan cara ini, dengan USB host polling menghubungkan perangkat menggunakan paket token. Apa yang berbeda antara transfer reguler (bulk) dan transfer interupsi adalah bahwa waktu pemungutan suara kecil dan dijamin dalam kasus terakhir. Namun, semua transfer dilakukan oleh tuan rumah.
sumber
Pertanyaan tersebut mencerminkan kesalahpahaman umum bahwa perangkat USB "mengirim" sesuatu ke PC mereka sendiri ketika tombol ditekan (atau mouse bergerak), itu sebabnya perhatian sangat tinggi. Faktanya, perangkat USB tidak mengirim apa-apa sampai mereka MENERIMA respons permintaan host. Satu pengecualian adalah proses bangun dari perangkat yang ditangguhkan.
Sementara USB terlihat sederhana di permukaan, sebenarnya fungsinya cukup rumit. Setiap perangkat USB baru harus "disebutkan" terlebih dahulu sebelum mulai berfungsi. Urutannya adalah sebagai berikut:
Setelah keyboard dicolokkan, port host menerima sinyal "status koneksi" (untuk sinyal LS, D- ditarik TINGGI oleh keyboard).
Kemudian tuan rumah mengatur port ke mode "port reset", dan USB PHY (driver lapisan fisik) mengirim "USB_RESET" ke bawah garis D + / D- (kedua garis digerakkan RENDAH untuk waktu yang ditentukan). Beberapa info tentang "port reset" untuk perangkat FS / HS dapat ditemukan di sini .
Kemudian tuan rumah mulai paket paket batas bingkai pada interval 1 ms. Untuk perangkat berkecepatan rendah (LS) sebagai keyboard kabel biasa, ini hanyalah pulsa "tetap hidup", sedangkan untuk FS SOF khusus - paket awal-frame dibuat. Paket-paket ini menjaga perangkat dalam mode aktif dan mencegahnya melakukan SUSPEND berdaya rendah.
Kemudian "enumerasi" dimulai. Tuan rumah mengirimkan permintaan untuk mendapatkan keterangan perangkat. Permintaan dikirim ke "pipa default" dengan alamat perangkat "0". [Hanya ada satu perangkat seperti itu saat ini - keyboard - karena semua perangkat lain di bus sudah harus memiliki alamat USB yang ditetapkan secara individual]
Keyboard mengembalikan informasi yang diminta, sehingga tuan rumah akan dapat menentukan jenis driver apa yang harus dimuat.
Tuan rumah mengirim transaksi yang mengharuskan perangkat untuk mengubah alamat default-nya ke alamat yang ditetapkan baru.
Kemudian tuan rumah memulai babak baru komunikasi dengan perangkat, sekarang di alamat yang baru ditugaskan. Semua perangkat lain mengabaikan komunikasi ini karena tidak ditujukan kepada mereka.
Tuan rumah mungkin membaca lebih banyak informasi dari beberapa deskriptor lain, dan akhirnya memilih "konfigurasi perangkat". Ini menyimpulkan proses pencacahan.
Tergantung pada kelas perangkat USB, host mulai berkomunikasi dengan perangkat. Dalam kasus keyboard, host mengirim permintaan "IN" pada dasarnya secara berkala, pada dasarnya polling perangkat (bahkan jika pipa periodik ini disebut "interrupt" pipe). Jika keyboard memiliki tombol yang ditekan / ditekan, keyboard akan mengembalikan informasi ini. Jika tidak, tidak ada data yang akan dikembalikan ke driver perangkat.
Singkatnya, setiap perangkat USB harus menerima alamat unik dari host USB, dan dua host USB akan mengalami kesulitan untuk berkomunikasi dengan perangkat - tabrakan bus, ketidakcocokan alamat, penyadapan acak data keypress, dll. Protokol USB membuat tidak mungkin untuk berbagi perangkat antara dua host USB.
sumber
If keyboard has any key pressed/depressed, the keyboard will return this information
- Bagaimana kunci hantu terjadi? Saya mendapat kesan bahwa keyboard harus mengirim peristiwa key-up dan key-down, yang akan menjelaskan mengapa jika acara key-up terjawab Anda akan memiliki kunci hantu ...Seperti jawaban lain telah menjelaskan, USB memerlukan komunikasi dua arah sebagai bagian dari cara kerjanya. PS / 2, sementara memungkinkan komunikasi dua arah, tidak memerlukannya untuk mengirim kunci ke komputer, tetapi mengharuskannya untuk mengatur LED keyboard.
Secara teoritis, Anda dapat membangun perangkat untuk menduplikasi sinyal PS / 2 dan mengirimkannya ke komputer kedua, dan membuang perintah apa pun dari komputer, sehingga Anda dapat mengirim penekanan tombol ke beberapa komputer tetapi LED keyboard tidak akan menanggapi status num lock, caps lock, dan scroll lock (atau perubahan status LED lainnya, misalnya di Linux, LED keyboard kadang-kadang digunakan untuk tujuan alternatif).
Saya tidak yakin seberapa kompleks proyek semacam itu. Sudah lama sejak saya bekerja dengan PS / 2, jadi saya tidak tahu apakah Anda bisa dengan mudah menjembatani beberapa kabel / konektor atau jika Anda memerlukan perangkat aktif (mis. Mikrokontroler) untuk mengirimkan perintah dalam satu arah tetapi membuangnya di yang lain. Jika Anda memang memiliki mikrokontroler, Anda bahkan dapat membuat perangkat sedemikian rupa sehingga dapat menginterpretasikan perintah LED keyboard dan "menggabungkan" mereka untuk ditampilkan (mis. Flash panjang LED jika dihidupkan pada komputer satu tetapi dimatikan pada komputer dua, flash pendek) LED jika dihidupkan pada komputer dua tetapi dimatikan pada komputer satu, LED stabil jika menyala di kedua komputer, dan LED mati jika dimatikan pada kedua komputer). Itu akan lebih maju.
Juga, jika tujuan Anda adalah untuk dapat mengendalikan satu komputer dari komputer lain, atau dua komputer dari meja yang sama, atau apa pun, Anda mungkin ingin melihat ke dalam:
sumber
Sebelum keyboard USB, keyboard PS / 2 menggunakan protokol yang jauh lebih sederhana di mana dimungkinkan untuk memiliki satu keyboard yang terhubung ke 2 perangkat dan membuatnya bekerja. Hanya diperlukan koneksi Y sederhana.
Keyboard USB yang lebih lama masih memiliki mode emulasi PS / 2 bawaan; menggunakan salah satu adaptor konektor ungu memungkinkan Anda mencolokkannya ke port PS / 2 di bagian belakang komputer. Jadi, menggunakan kabel breakout USB ke PS / 2 pada 2 komputer, maka adaptor ungu yang kembali ke keyboard USB Anda mungkin berfungsi.
Keyboard USB yang lebih baru menjatuhkan mode legacy PS / 2, jadi tidak akan berfungsi untuk kasus ini.
sumber