อุปกรณ์สามารถทำเป็นคีย์บอร์ด USB ได้หรือไม่?


16

สิ่งที่ฉันกำลังมองหา:

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

สร้างแรงบันดาลใจกรณีใช้งาน:

ฉันมีโปรแกรมรักษารหัสผ่านบนโทรศัพท์ของฉัน แต่มันน่ารำคาญที่ต้องอ่านรหัสผ่านออกจากอุปกรณ์และลองพิมพ์ลงในคอมพิวเตอร์เครื่องอื่น

พื้นหลัง:

ฉันมีอุปกรณ์ Android ที่สร้างขึ้นก่อนที่ MTP จะรองรับการถ่ายโอนไฟล์ แต่ด้วยการอัปเกรดล่าสุดตอนนี้รองรับ จากนี้คลาส USB ที่อ้างว่าไม่สามารถกำหนดฮาร์ดแวร์และต้องกำหนดในซอฟต์แวร์

IIRC โครงการนี้มีอุปกรณ์ Android (ด้วยสิ่งที่ฉันคิดว่าเป็นเคอร์เนลสต็อค) ที่พูดถึงคลาส USB บางตัวที่ไม่ได้สร้างไว้อย่างชัดเจนสิ่งนี้บอกฉันว่าคุณอาจควบคุมคลาส USB ที่สนับสนุนโดยไม่ใช้เคอร์เนล แต่ฉัน ไม่รู้แน่

สำหรับฝั่งโฮสต์ (เช่นพีซี) ฉันไม่เคยเห็นกล่อง PC, Mac หรือ Linux ต้องใช้ไดรฟ์พิเศษสำหรับแป้นพิมพ์แม้สำหรับอุปกรณ์ลึกลับบางอย่างที่อ้างว่าเป็นแป้นพิมพ์ (เครื่องสแกนบาร์โค้ดบัตรเครดิตและสมาร์ทโฟน เครื่องอ่านการ์ด ฯลฯ ) ดังนั้นไดรเวอร์ทั่วไปควรดีพอสำหรับสิ่งที่ฉันต้องการ

ทั้งหมดที่ระบุว่าสิ่งที่ฉันกำลังมองหาสามารถทำได้จากมุมมองของฮาร์ดแวร์แต่พูดน้อยมากเกี่ยวกับการสนับสนุนซอฟต์แวร์ที่มีอยู่และไม่มีอะไรเกี่ยวกับถ้ามีแอพสำหรับมัน


2
คุณอาจลองใช้ KeePass (KeePassDroid บน android, keepassx บน linux, ฯลฯ ) ทั้งบนโทรศัพท์และคอมพิวเตอร์ของคุณและเพียงแค่ซิงค์ไฟล์ฐานข้อมูลระหว่างพวกเขาหรือเข้าถึงไฟล์ฐานข้อมูลบนโทรศัพท์ผ่าน USB จากคอมพิวเตอร์ ผู้จัดการรหัสผ่านอื่น ๆ อาจมีคู่แท้ "คอมพิวเตอร์"
TREE

@ ต้นไม้: ที่อาจทำงานได้ในบางกรณี แต่หนึ่งในการใช้งานเป้าหมายที่เฉพาะเจาะจงคือที่ฉันไม่มีความสามารถในการติดตั้งบางสิ่งบางอย่างบนพีซี (ทั้งการเข้าถึงหรือปัญหาไก่ / ไข่เช่นรหัสผ่านเข้าสู่ระบบระบบ) .
BCS

นอกจากนี้ยังมี KeePass เวอร์ชันพกพาที่สามารถเรียกใช้จากแท่ง USB ได้ สิ่งนี้อาจทำงานได้จากอุปกรณ์เก็บข้อมูล USB android ที่ติดตั้งอยู่ แต่ไม่สามารถระบุกรณีการใช้ที่เป็นไปได้ทั้งหมด
TREE

คำตอบ:


15

ใช่. สิ่งนี้เป็นไปได้แน่นอนไม่ต้องมีการดัดแปลงหรือไดรเวอร์บนพีซี ในฐานะที่เป็น OP กล่าวถึงการระบุ USB ที่ปลายโทรศัพท์จะทำในที่สุดซอฟต์แวร์ (ในไฟล์นี้https://github.com/android/kernel_msm/blob/android-msm-2.6.35/drivers/usb/gadget/composite .c ) และสามารถแก้ไขได้เพื่อระบุว่าตัวเองเป็นแป้นพิมพ์ USB มาตรฐาน

การเปลี่ยนแปลงนี้จะต้องมีสองสิ่ง

  1. เคอร์เนลที่ได้รับการดัดแปลงพร้อมไดรเวอร์ USB ที่ได้รับการติดตั้งแล้ว
  2. แอพ Android ที่สามารถพูดคุยกับส่วนต่อประสานที่เปิดเผยโดยไดรเวอร์ USB ที่แก้ไข

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


ข้อมูลเพิ่มเติมที่จะพบได้ที่นี่
sampablokuper

github.com/pelya/android-keyboard-gadget มันได้รับการดำเนินการที่นี่ .. และยังมีแอพพลิเคชั่นสำหรับ Android ที่จำเป็นอีกด้วย
Abhigyan

2

สิ่งนี้ไม่ได้ตอบคำถามของคุณอย่างแน่นอน แต่อาจช่วยในกรณีที่คุณใช้งาน

บางทีคุณอาจต้องการที่จะมีลักษณะที่InputStick มันจะเป็นไดรฟ์หัวแม่มือ USB ที่คุณจับคู่กับ Android ผ่าน Bluetooth เสียบเข้ากับคอมพิวเตอร์มันจำลอง USB HID ทั่วไปเพื่อส่งการกดแป้นพิมพ์ Java API ขั้นสูงจะอนุญาตให้ระบุเช่นตัวบอกอุปกรณ์เพื่อจำลองฟังก์ชันที่ไม่ได้มาตรฐาน มันสามารถเป็นตัวอย่างที่ดีที่กำหนดไว้ในซอฟต์แวร์มากกว่าฮาร์ดแวร์

สำหรับการอ้างอิงนักพัฒนายังทำงานกับโปรแกรมตัวอย่างเช่น Demo Password Manager


0

อย่างน้อยที่สุดสิ่งนี้จะต้องใช้ทั้งซอฟต์แวร์บนโทรศัพท์และบนพีซี ซอฟต์แวร์ทั้งสองชิ้นจะต้องสื่อสารกัน ไม่มีอะไรแบบนี้ที่ฉันรู้ว่ามีอยู่ในปัจจุบัน

และสำหรับพีซีที่จะคิดว่าอุปกรณ์นั้นเป็นคีย์บอร์ดอย่างแท้จริงนั้นจะต้องมีไดรเวอร์ใหม่ที่จะบอกพีซีว่าอุปกรณ์นั้นเป็นคีย์บอร์ดและวิธี "ใช้เป็นคีย์บอร์ด"

ฉันไม่ได้บอกว่ามันเป็นไปไม่ได้เพราะทุกอย่างเป็นไปได้เมื่อมันมาถึงสิ่งต่าง ๆ เช่นนี้ สิ่งที่ฉันกำลังพูดอยู่คือไม่มีอะไรแบบนี้อยู่ในปัจจุบัน

USB เป็นทั้งฮาร์ดแวร์และซอฟต์แวร์หากเป็นซอฟต์แวร์เพียงอย่างเดียวไดรเวอร์ USB เดียวกันจะใช้งานได้กับอุปกรณ์ Android ทั้งหมดใน Windows และนี่ไม่ใช่กรณี USB mass-storage และ MTP ได้รับการจัดการโดยไดรเวอร์บนพีซีไม่ใช่อุปกรณ์ อุปกรณ์ใดบ้างที่รองรับทั้ง MTP และอุปกรณ์เก็บข้อมูลแบบ USB และในเวลาเดียวกัน ฉันได้พบบทความที่ระบุว่าอุปกรณ์สามารถรองรับ UMS และ MTP แต่รองรับ UMS เท่านั้นหากมี sdcard ภายนอก คุณไม่สามารถเมาน sdcard ภายนอกด้วย MTP และ UMS MTP ใช้สำหรับการจัดเก็บข้อมูลภายใน และฉันไม่ได้อ่านอะไรที่สามารถยืนยันหรือปฏิเสธว่าคุณสามารถใช้ได้ทั้งสองอย่างในเวลาเดียวกัน

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

นอกจากนี้ฉันเห็นด้วยกับ @davidbb ว่าเป็นไปได้และฉันได้บอกไปแล้วว่ามันเป็น ปัญหาเกี่ยวกับคำถามที่ถามว่ามีสิ่งใดที่เป็นไปได้ไม่เคยแก้ปัญหาหรือไม่ มันเหมือนกับที่ฉันพูดว่า "เป็นไปได้ไหมที่ฉันจะเรียกใช้แอพพลิเคชั่น iOS บน Windows ได้หรือไม่" สิ่งนี้เป็นไปได้ในทางทฤษฎี แต่ไม่มีอะไรที่ทำได้ในตอนนี้และไม่มีบางสิ่งที่ "ผู้ใช้ปกติ" (หรือแม้แต่ผู้ใช้ขั้นสูง) สามารถทำได้เพื่อให้สิ่งนี้เกิดขึ้น ไซต์นี้เหมาะสำหรับผู้ใช้ดังนั้นการบอกว่าคุณเพียงแค่ต้องเขียนเคอร์เนลที่ถูกดัดแปลงไม่ใช่คำตอบที่เป็นประโยชน์ต่อใคร ดังนั้นคำตอบที่แท้จริงของคำถามคือไม่เพราะไม่มีเคอร์เนลที่แก้ไข


IIRC ปลาย android ของการเชื่อมต่อ USB นั้นทำในซอฟต์แวร์ (ต้องมีขอบเขตเท่ากันสำหรับฮาร์ดแวร์เดียวกันเพื่อทำหน้าที่เป็นทั้งอุปกรณ์เก็บข้อมูลขนาดใหญ่ USB และ MTP) จากนั้นสิ่งที่จะป้องกันไม่ให้อุปกรณ์เพียงด้านคนขับทำให้อุปกรณ์ประกาศว่าตัวเองเป็น HID ทั่วไป? หากสามารถทำได้ไดรเวอร์ของพีซีเครื่องเดียวกันที่จัดการกับแป้นพิมพ์อื่นจะจัดการกับมัน (เช่นเดียวกับที่ทำในสิ่งต่างๆเช่นเครื่องสแกนบาร์โค้ดและเครื่องอ่านบัตรเครดิต)
BCS

ฉันได้เพิ่มคำตอบเพื่อแสดงความคิดเห็นของคุณแล้ว
Ryan Conrad

อุปกรณ์ Android (ฮาร์ดแวร์) ที่สร้างขึ้นก่อนที่จะใช้ MTP นั้นทำงานเป็นคลาส MTP USB ดังนั้นคลาสที่อุปกรณ์อ้างว่าทำงานตามที่กำหนดไว้ในซอฟต์แวร์ ฉันจำไม่ได้ว่าเคยติดตั้งไดร์เวอร์สำหรับแป้นพิมพ์ (หรือสำหรับไดร์เวอร์ทั่วไปสำหรับการเชื่อมต่ออุปกรณ์ Android) ดังนั้นไม่จำเป็นต้องติดตั้งด้าน PC รวมเข้าด้วยกันและฉันเกือบจะแน่ใจว่าฮาร์ดแวร์สามารถทำได้ คำถามเดียวที่เหลือคือ: Android สต็อกให้การเข้าถึงลูกบิดที่จำเป็นหรือไม่นี้จะสร้างเคอร์เนลที่กำหนดเอง?
BCS

Re: แก้ไขครั้งที่ 2 ฉันเดาว่าฉันกำลังมองหาคนที่รู้ว่าจะต้องใช้อะไร (คุณสามารถย้ายย่อหน้าสุดท้ายไปยังด้านบนได้หรือไม่)
BCS

คำตอบนี้ไม่ถูกต้องไม่จำเป็นต้องใช้ซอฟต์แวร์ในฝั่งพีซี โทรศัพท์ที่แตกต่างกันต้องการไดรเวอร์ที่แตกต่างกันเนื่องจากผู้ผลิตไม่ได้ใช้หมายเลขประจำตัวผู้จำหน่ายเดียวกันทั้งหมด อย่างไรก็ตามคีย์บอร์ดจะอยู่ในอุปกรณ์ประเภทอื่นที่โฮสต์จำแนกตามประเภทดังนั้น ID ผู้ขายจึงไม่สำคัญ VID / PID, ประเภทอุปกรณ์, โปรโตคอล, ฯลฯ ล้วนมีการนำมาใช้ในซอฟต์แวร์ในด้าน Android และสามารถเปลี่ยนแปลงได้โดยทุกคนที่มีเคอร์เนลแหล่งและวิธีการติดตั้งผลลัพธ์ที่คอมไพล์แล้ว
Chris Stratton

0

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


ฉันกำลังมองหาวิธีแก้ปัญหาสำหรับกรณีที่มีสิ่งต่าง ๆ เช่นการพิมพ์รหัสผ่านลงในพรอมต์การบูต BIOS ดังนั้นฉันจึงไม่สามารถติดตั้งไคลเอนต์ชนิดใดก็ได้
BCS

0

ฉันกำลังค้นหาสิ่งที่คล้ายกันและพบว่า

https://github.com/pelya/android-keyboard-gadget

ดูเหมือนว่าสิ่งเดียวกันสามารถใช้ในกรณีของคุณ โดยสรุปสิ่งที่ฉันได้รับคือคุณต้องเขียนไดรเวอร์ usb ในเคอร์เนล Android เพื่อตรวจจับความเบี่ยงเบนเป็น HID


0

ก็ตอนนี้> หกปีต่อมาและบางแห่งในระหว่างคนสร้างแป้นพิมพ์ Keepass2 USB ปลั๊กอินสำหรับKeepass2Android

ต้องการเพิ่มข้อมูลนี้ที่นี่เพื่อความสมบูรณ์และเพราะฉันพบคำถามนี้ยังไม่ได้ตอบและปลั๊กอินดังกล่าวในขณะที่ค้นหาสิ่งที่ต้องการ

ฉันยังไม่ได้ทดสอบตัวเอง ...


-1

InputStick เป็นตัวรับสัญญาณ USB แบบไร้สายออกแบบมาสำหรับอุปกรณ์ Android อนุญาตให้แอปพลิเคชัน Android จำลองอุปกรณ์หลายประเภทเช่นแป้นพิมพ์ USB, เมาส์ USB, USB Gamepad และอื่น ๆ อีกมากมาย ด้วย InputStick แอป Android สามารถทำทุกอย่างที่อุปกรณ์ทางกายภาพสามารถ: พิมพ์ย้ายตัวชี้เมาส์ควบคุมมัลติมีเดียและเกม

ข้อมูลสามารถพบได้ที่http://inputstick.com/


1
สิ่งนี้อ่านเหมือนโฆษณา ความสัมพันธ์ของคุณกับผลิตภัณฑ์นี้คืออะไร?
Dan Hulme
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.