क्या कोई डिवाइस USB कीबोर्ड होने का दिखावा कर सकता है?


16

मैं जिस चीज़ की तलाश कर रहा हूँ:

क्या डिवाइस को कीबोर्ड / HID होने का दावा करने का कोई तरीका है जब USB पोर्ट में प्लग किया जाता है और क्लिपबोर्ड की सामग्री में "प्रकार" होता है? अधिक सटीकता से; इसे होने में क्या लगेगा?

प्रेरक उपयोग मामला:

मेरे पास अपने फोन पर एक पासवर्ड कीपर प्रोग्राम है, लेकिन डिवाइस से पासवर्ड पढ़ने और इसे दूसरे कंप्यूटर में टाइप करने की कोशिश करना कष्टप्रद है।

पृष्ठभूमि:

मेरे पास एक एंड्रॉइड डिवाइस है जिसे एमटीपी से पहले फाइल ट्रांसफर करने के लिए सपोर्ट किया गया था, लेकिन हाल ही में अपग्रेड होने के बाद अब यह सपोर्ट करता है। इसके आधार पर, USB वर्ग जो यह दावा करता है कि हार्डवेयर परिभाषित नहीं किया जा सकता है और इसे सॉफ़्टवेयर में परिभाषित किया जाना चाहिए।

IIRC, इस परियोजना में एंड्रॉइड डिवाइस हैं (जो मुझे लगता है कि स्टॉक कर्नेल है) कुछ यूएसबी क्लास के रूप में बात कर रहे हैं जो निश्चित रूप से निर्मित नहीं थे। यह मुझे इंगित करता है कि आप यह नियंत्रित करने में सक्षम हो सकते हैं कि कर्नेल के काम के बिना यह यूएसबी कक्षाओं का क्या समर्थन करता है। पता नहीं है।

होस्ट पक्ष (यानी पीसी) के लिए, मैंने कभी भी पीसी, मैक या लिनक्स बॉक्स को कीबोर्ड के लिए विशेष ड्राइव की आवश्यकता नहीं देखी है, यहां तक ​​कि कुछ के बजाय गूढ़ उपकरणों के लिए जो कीबोर्ड होने का दावा करते हैं (बार-कोड स्कैनर, क्रेडिट कार्ड और स्मार्ट कार्ड रीडर इत्यादि) इसलिए जेनेरिक ड्राइवर जो मैं चाह रहा हूं उसके लिए पर्याप्त होना चाहिए।

सभी का तर्क है कि जो मैं देख रहा हूं वह हार्डवेयर के दृष्टिकोण से किया जा सकता है , लेकिन बहुत कम सॉफ्टवेयर समर्थन मौजूद है और इसके बारे में कोई ऐप है या नहीं इसके बारे में कुछ नहीं कहता है।


2
आप अपने फोन और अपने कंप्यूटर दोनों पर KeePass (Android पर KeePassDroid, linass, Keepassx इत्यादि) का उपयोग करने का प्रयास कर सकते हैं, और बस डेटाबेस फ़ाइल को उनके बीच सिंक कर सकते हैं, या कंप्यूटर से USB के माध्यम से फोन पर डेटाबेस फ़ाइल तक पहुँच सकते हैं। अन्य पासवर्ड प्रबंधकों के पास "वास्तविक कंप्यूटर" समकक्ष भी हो सकते हैं।
TREE

@TREE: यह कुछ मामलों के लिए काम कर सकता है, लेकिन विशिष्ट लक्ष्य उपयोगों में से एक वह जगह है जहां मुझे पीसी पर कुछ स्थापित करने की क्षमता नहीं है (या तो कोई पहुंच या चिकन / अंडा समस्या जैसे सिस्टम लॉग-इन पासवर्ड नहीं) ।
बीसीएस

KeePass का एक पोर्टेबल संस्करण भी है जो USB स्टिक से चल सकता है। यह एक माउंटेड एंड्रॉइड USB स्टोरेज डिवाइस से काम कर सकता है, लेकिन निश्चित रूप से सभी संभावित उपयोग के मामलों को संबोधित नहीं करता है।
TREE

जवाबों:


15

हाँ। यह निश्चित रूप से संभव है, पीसी पर कोई संशोधन या ड्राइवरों की आवश्यकता नहीं है। जैसा कि ओपी का उल्लेख है, फोन के अंत में यूएसबी की पहचान अंततः सॉफ्टवेयर में की जाती है (इस फाइल में https://github.com/android/kernel_msm/blob/android-msm-2.6.35/drivers/usb.gadget/composite .c ), और इसे एक मानक USB कीबोर्ड के रूप में पहचानने के लिए संशोधित किया जा सकता है।

इस परिवर्तन के लिए कुछ चीजों की आवश्यकता होगी।

  1. पैच किए गए USB ड्राइवर के साथ एक संशोधित कर्नेल
  2. एक एंड्रॉइड ऐप जो संशोधित यूएसबी चालक द्वारा उजागर किए गए कुछ इंटरफ़ेस से बात कर सकता है।

था एक कागज कुछ साल पहले प्रकाशित (शीर्षक से मज़ा और लाभ के लिए स्मार्ट फोन यूएसबी कनेक्टिविटी का शोषण है कि जानवर बल डेस्कटॉप लॉगिन स्क्रीन करने के लिए एक फोन का उपयोग कर बताया गया है)। उन्होंने जिस तरीके का इस्तेमाल किया उसमें फोन को USB कीबोर्ड के रूप में दिखाया गया।


अधिक जानकारी के लिए यहां पाया जा सकता है
सम्पाबल्कोपर

github.com/pelya/android-keyboard-gadget इसे यहां लागू किया गया है .. और आवश्यक एंड्रॉइड ऐप भी उपलब्ध है
अभिज्ञान

2

यह आपके प्रश्न का सटीक उत्तर नहीं देता है, लेकिन यह आपके उपयोग के मामले में मदद कर सकता है।

शायद आप InputStick पर एक नज़र डालना चाहते हैं । यह एक USB थंब ड्राइव होगा जिसे आप ब्लूटूथ के माध्यम से एंड्रॉइड में जोड़ते हैं। कंप्यूटर में प्लग किया गया यह कीबोर्ड स्ट्रोक भेजने के लिए एक सामान्य USB HID का अनुकरण करता है। एक उन्नत जावा एपीआई गैर-मानक कार्यों का अनुकरण करने के लिए डिवाइस डिस्क्रिप्टर को निर्दिष्ट करने की अनुमति देगा। यह एक अच्छा उदाहरण प्रदान कर सकता है कि यह हार्डवेयर के बजाय सॉफ्टवेयर में परिभाषित किया गया है।

संदर्भ के लिए, डेवलपर उदाहरण के कार्यक्रमों पर भी काम कर रहा है, जैसे कि डेमो पासवर्ड मैनेजर।


0

कम से कम, इसके लिए फोन और पीसी पर दोनों सॉफ्टवेयर की आवश्यकता होगी। सॉफ्टवेयर के 2 टुकड़ों को एक दूसरे के साथ संवाद करना होगा। ऐसा कुछ भी नहीं है, जिसे मैं वर्तमान में जानता हूं, मौजूद है।

और पीसी के लिए यह सोचने के लिए कि डिवाइस वास्तव में एक कीबोर्ड है, इसके लिए एक नए ड्राइवर की आवश्यकता होगी जो पीसी को बताएगा कि डिवाइस एक कीबोर्ड है, और "कीबोर्ड के रूप में इसका उपयोग कैसे करें"।

मैं यह नहीं कह रहा हूं कि यह संभव नहीं है, क्योंकि इस तरह की चीजों के बारे में बस कुछ भी संभव है। हालांकि मैं जो कह रहा हूं, वह यह है कि वर्तमान में ऐसा कुछ भी मौजूद नहीं है।

USB हार्डवेयर और सॉफ्टवेयर दोनों है, अगर यह अकेले सॉफ्टवेयर था, तो वही USB ड्राइवर विंडोज पर सभी एंड्रॉइड डिवाइस के लिए काम करेगा, और यह मामला नहीं है। USB मास-स्टोरेज और MTP को डिवाइस पर नहीं, बल्कि पीसी पर ड्राइवरों द्वारा नियंत्रित किया जाता है। MTP और USB मास-स्टोरेज और एक ही समय में कौन से डिवाइस सपोर्ट करते हैं? मुझे यह बताते हुए लेख मिले हैं कि डिवाइस यूएमएस और एमटीपी का समर्थन कर सकते हैं, लेकिन केवल बाहरी यूडकार्ड होने पर यूएमएस का समर्थन करते हैं। आप MTP के साथ और UMS के साथ बाहरी sdcard माउंट नहीं कर सकते। MTP आंतरिक संग्रहण के लिए है। और मैंने ऐसा कुछ नहीं पढ़ा है जो इस बात की पुष्टि या खंडन कर सके कि आप एक ही समय में दोनों का उपयोग कर सकते हैं।

यदि आपको "डिफ़ॉल्ट" युक्ति का पालन करना है, तो आपको कीबोर्ड पर ड्राइवरों को स्थापित करने की आवश्यकता नहीं है, क्योंकि विंडोज़ में पहले से ही चालक हैं। कीबोर्ड हैं जो अपने स्वयं के ड्राइवरों के साथ आते हैं। जैसा कि मैंने कहा, यह संभव होगा। मुझे यकीन नहीं है कि यह कैसे किया जाएगा। यह, लगभग निश्चित रूप से, एक कीबोर्ड की तरह कार्य करने के लिए बहुत कम से कम एक कस्टम कर्नेल की आवश्यकता होती है और पीसी की तरफ कोई अतिरिक्त ड्राइवर की आवश्यकता नहीं होती है।

इसके अतिरिक्त, मैं @davidbb से सहमत हूं कि यह संभव है और मैंने पहले ही कहा है कि यह है। प्रश्न के साथ समस्या यह पूछती है कि क्या कुछ संभव है, कभी भी समस्या का समाधान नहीं करता है। यह मेरे जैसा होगा "यह मेरे लिए विंडोज़ पर आईओएस अनुप्रयोगों को चलाने के लिए संभव है?"। यह सैद्धांतिक रूप से संभव है, लेकिन ऐसा कुछ भी नहीं है जो अब ऐसा करता है और ऐसा कुछ नहीं है जो एक "सामान्य उपयोगकर्ता" (या एक उन्नत उपयोगकर्ता) भी ऐसा करने के लिए कर सकता है। यह साइट उपयोगकर्ताओं के लिए सक्षम है, इसलिए आपको केवल एक संशोधित कर्नेल लिखने की आवश्यकता है, यह एक उत्तर नहीं है जो किसी को भी लाभ देने वाला है। तो सवाल का असली जवाब नहीं है, क्योंकि वहाँ एक संशोधित कर्नेल नहीं है।


IIRC, USB कनेक्शन का एंड्रॉइड अंत सॉफ्टवेयर में किया जाता है (यह एक ही हार्डवेयर के लिए कुछ हद तक यूएसबी-स्टोरेज डिवाइस और साथ ही एमटीपी दोनों के रूप में कार्य करता है)। इसके आधार पर, केवल डिवाइस ड्राइवर को डिवाइस की घोषणा करने से रोकने के लिए क्या है यह एक सामान्य एचआईडी के रूप में स्व है? यदि ऐसा किया जा सकता है, तो वही पीसी साइड ड्राइवर जो किसी अन्य कीबोर्ड को संभालते हैं, उसे संभाल लेंगे (जैसे बार-कोड स्कैनर और क्रेडिट कार्ड रीडर जैसी चीजों के लिए किया जाता है)।
BCS

मैंने आपकी टिप्पणी को संबोधित करने के लिए अपने जवाब में जोड़ा है।
रयान कॉनरेड

Android डिवाइस (हार्डवेयर) जो MTP से पहले बनाए जा रहे थे, अब MTP USB क्लास के रूप में काम कर रहे हैं, इस प्रकार वे क्लासेस जिन्हें डिवाइस संचालित करने का दावा करता है, उन्हें सॉफ्टवेयर में परिभाषित किया जाना चाहिए। मुझे याद नहीं है कि क्या मैंने कभी कीबोर्ड के लिए ड्राइवर स्थापित किया है (या उस मामले के लिए एक गैर-जेनेरिक ड्राइवर को एंड्रॉइड डिवाइस कनेक्ट करने के लिए) इस प्रकार कुछ भी पीसी साइड स्थापित करने की आवश्यकता नहीं है। उन को मिलाएं और मुझे लगभग यकीन है कि हार्डवेयर यह कर सकता है। एकमात्र सवाल यह है: क्या स्टॉक एंड्रॉइड आवश्यक knobs तक पहुंच प्रदान करता है, या क्या यह एक कस्टम कर्नेल का निर्माण करेगा?
BCS

पुन: 2 संपादित करें। मुझे लगता है कि मैं किसी ऐसे व्यक्ति की तलाश में हूं जो निश्चित रूप से जानता है कि यह क्या ले जाएगा। (क्या आप उस अंतिम पैराग्राफ को शीर्ष पर ले जा सकते हैं?)
BCS

यह उत्तर गलत है, पीसी की तरफ किसी सॉफ्टवेयर की आवश्यकता नहीं है। विभिन्न फोनों के लिए अलग-अलग ड्राइवरों की आवश्यकता होती है क्योंकि निर्माता सभी एक ही विक्रेता आईडी नंबर का उपयोग नहीं करते हैं। कीबोर्ड हालांकि डिवाइस की एक अलग श्रेणी में आते हैं जहां वे प्रकार से मेजबान द्वारा पहचाने जाते हैं, इसलिए विक्रेता आईडी वास्तव में मायने नहीं रखता है। VID / PID, डिवाइस प्रकार, प्रोटोकॉल, आदि सभी एंड्रॉइड साइड पर सॉफ़्टवेयर में कार्यान्वित किए जाते हैं, और कर्नेल स्रोत वाले किसी भी व्यक्ति द्वारा संकलित किए जाते हैं और संकलित परिणाम को स्थापित करने का एक तरीका है।
क्रिस स्ट्रैटन

0

क्या आपने यूनिफाइड रिमोट की कोशिश की है । यह कीबोर्ड और माउस के रूप में फोन का उपयोग करने के लिए एक महान उपकरण है। यह USB का उपयोग नहीं करता है, लेकिन इसके बजाय वाईफाई। फोन और कंप्यूटर पर एक ऐप है जो एक साथ काम करता है। मेरे लिए बहुत अच्छा काम करता है। यदि आपको पूर्ण संस्करण मिलता है, तो आपको कई सामान्य अनुप्रयोगों के साथ एकीकरण मिलता है।


मैं उन मामलों के लिए एक समाधान की तलाश कर रहा हूं जिनमें BIOS बूट संकेतों में पासवर्ड टाइप करने जैसी चीजें शामिल हैं ताकि मैं वास्तव में किसी भी प्रकार के क्लाइंट को स्थापित न कर सकूं।
बीसीएस

0

मैं कुछ ऐसा ही खोज रहा था और पाया

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

आपके मामले में एक ही चीज का उपयोग किया जा सकता है। संक्षेप में, जो मुझे मिला वह यह है कि आपको Android कर्नेल में USB ड्राइवर को HID के रूप में विलेख का पता लगाने के लिए लिखना होगा।


0

यह अब> छह साल बाद है और कहीं न कहीं किसी ने Keepass2 USB कीबोर्ड प्लगइन के लिए Keepass2Android बनाया है

इस जानकारी को पूर्णता के लिए यहाँ जोड़ना चाहते थे और क्योंकि मुझे यह प्रश्न अनुत्तरित लगा और पूर्वोक्त प्लगइन मिला, जबकि वास्तव में ऐसा ही कुछ खोज रहा था।

मैंने अभी तक खुद इसका परीक्षण नहीं किया है ...


-1

InputStick एक वायरलेस USB रिसीवर है, जिसे Android उपकरणों के लिए डिज़ाइन किया गया है। यह एंड्रॉइड एप्लिकेशन को कई अलग-अलग प्रकार के उपकरणों का अनुकरण करने की अनुमति देता है, उदाहरण के लिए: यूएसबी कीबोर्ड, यूएसबी माउस, यूएसबी गेमपैड और कई अन्य। InputStick के साथ, एंड्रॉइड ऐप्स कुछ भी कर सकते हैं जो एक भौतिक डिवाइस कर सकते हैं: टाइप करें, माउस पॉइंटर को स्थानांतरित करें, मल्टीमीडिया और गेम को नियंत्रित करें।

जानकारी http://inputstick.com/ पर देखी जा सकती है


1
यह एक विज्ञापन की तरह पढ़ता है। इस उत्पाद के साथ आपका क्या संबंध है?
दान हुलमे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.