माउस को बाएं हाथ और टचपैड को दाएं हाथ से बनाएं


10

मैं देखता हूं कि मैं माउस और टचपैड को एक पैनल (उबंटू 13.10, डिफॉल्ट्स, गनोम) में कॉन्फ़िगर कर सकता हूं। जो कुछ विस्तार के लिए है। अर्थात्, मैं टचपैड को अलग-अलग कॉन्फ़िगर करना चाहता हूं फिर माउस और ...

जब मेरे पास एक (USB) माउस जुड़ा होता है तो मैं इसे सामान्य रूप से बाएं हाथ का उपयोग करता हूं। इसलिए मैं बटन को बाईं ओर स्विच करता हूं। लेकिन जब मैं टचपैड का उपयोग करता हूं तो मुझे लगता है कि इस तरह के कॉन्फ़िगरेशन के साथ बहुत कम खो गया है। इसलिए मैं इसे सही-सलामत रखना चाहता हूं।

क्या निम्नलिखित को प्राप्त करने का एक तरीका है: जब मैं एक माउस प्लग करता हूं (क्रमशः जब यह पता चला है) स्वचालित रूप से बाएं हाथ पर स्विच करता है और जब मैं इसे अनप्लग करता हूं, तो स्वचालित रूप से दाएं हाथ पर स्विच करता है?

जवाबों:


10

मैं आपकी हताशा को समझता हूं, लेकिन xinputटूल की मदद से इस समस्या को बहुत सरल रूप से हल किया जा सकता है ।

अपने USB माउस में पहले प्लग करें, फिर निम्न कमांड चलाएँ:

xinput list

idअपने माउस को देखने के लिए । उपरोक्त कमांड का आउटपुट इसके समान हो सकता है:

xinput | बिल्ली
⎡ वर्चुअल कोर पॉइंटर आईडी = 2 [मास्टर पॉइंटर (3)]
⎜ 4 वर्चुअल कोर एक्सटेस्ट पॉइंटर आईडी = ४ [दास पॉइंटर (२)]
Id id SynPS / 2 सिनैप्टिक्स टचपैड आईडी = 14 [दास सूचक (2)]
⎜ ter USB माउस आईडी = 11 [दास सूचक (2)]
2 वर्चुअल कोर कीबोर्ड आईडी = ३ [मास्टर कीबोर्ड (२)]
    ...

उपरोक्त उदाहरण में USB माउस है id=11। हम इसका उपयोग idनिम्नलिखित कमांड में करेंगे जो कि केवल USB माउस के लिए छोड़ दिए जाने वाले बटन को स्वैप करेंगे (और टैचपैड के लिए नहीं):

xinput set-button-map 11 3 2 1

सामान्य रूप में:

xinput सेट-बटन-मैप आईडी 3 2 1

परिवर्तन को वापस लाने के लिए, उपयोग करें:

xinput सेट-बटन-मैप आईडी 1 2 3

परिवर्तन को स्थायी रूप से करने के लिए, स्टार्टअप एप्लिकेशन में निम्न कमांड जोड़ें ( स्टार्टअप एप्लिकेशन के लिए डैश में खोजें ):

sh -c "xinput सेट-बटन-मैप आईडी 3 2 1"

अपडेट करें:

चूंकि रिबूट के बाद आईडी बदल सकती है लेकिन USBmouse का नाम नहीं है, आप माउस के नाम के लिए grep भी कर सकते हैं और इसे लागू कर सकते हैं। विवरण reg को छोड़ने के लिए। अंतिम समाधान के नाम की तरह लग रहा है:

आईडी में `/ usr / बिन / xinput सूची के लिए | / बिन / grep ' USB माउस ' | / बिन / grep -o [0-9] [0-9] `; xinput सेट-बटन-मैप $ आईडी ३ २ १; किया हुआ;

इसे उपरोक्त उल्लिखित स्टार्टअप एप्लिकेशन में पैक करें, जो आपको अंत में मिलेगा:

sh -c "in id के लिए '/ usr / bin / xinput सूची | / bin / grep' USB माउस '| / bin / grep -o [0-9] [0-9]`; xinput सेट-बटन-मैप करें $ आईडी 3 2 1; किया गया; "

2
मुझे नहीं पता, अगर मुझे आपकी पोस्ट को संपादित करना चाहिए या नहीं। आपके दृष्टिकोण ने मुझे सही दिशा दी, लेकिन समस्या यह थी कि एक पुनः आरंभ करने से माउस की आईडी बदल सकती है। इसलिए मैंने इसे बदल दिया sh -c "for id in '/usr/bin/xinput list | /bin/grep 'Razer' | /bin/grep -o [0-9][0-9]'; do xinput set-button-map $id 3 2 1; done;"और यह काम करता है (शायद किसी को उचित हाइफ़न की देखभाल करनी है)। संकेत के लिए Thx।
LeO

@ लियो मेरे मामले में एक रिबूट, माउस की आईडी को नहीं बदलता है। मैंने अधिक चूहों के साथ या यूएसबी पोर्ट की स्थिति को बदलने के लिए परीक्षण नहीं किया।
रादु राईडेनु

@ लियो वैसे भी, आपका विचार बहुत अच्छा है, इसलिए, आगे बढ़ें, कृपया उत्तर संपादित करें। यदि नहीं, तो मैं इसे बाद में करूंगा।
रादु राईडेनु

8

Radu Rădeanu के उत्तर की तुलना में और भी सरल तरीका है । xinputअपनी संख्यात्मक ID के विकल्प के रूप में इनपुट डिवाइस के नाम को स्वीकार करता है। चूँकि आपके USB माउस को संभवतः उदारतापूर्वक व्यवहार किया जाता है, इसलिए यह नाम सबसे अधिक संभावना है USB Mouse। इसलिए आपको संभवतः दौड़ने की आवश्यकता नहीं है xinput list

इस प्रकार xinput set-button-map, संख्यात्मक आईडी के स्थान पर आपका नाम इस प्रकार है :

xinput set-button-map "USB Mouse" 3 2 1

यह उसी स्थान को लेता है और इसे उसी तरह से प्राप्त करना चाहिए , जैसे बाएं हाथ का माउस, जब संख्यात्मक आईडी का उपयोग किया जाता है। (और इसके साथ प्रतिस्थापित करना अभी भी इसे दाएं हाथ के माउस होने के लिए स्विच करने के लिए काम करेगा।)xinput set-button-map id 3 2 13 2 13 2 11 2 3

इसका लाभ यह है कि, बशर्ते यह शुरू में काम करता है, यह लंबे, जटिल आदेशों का उपयोग करके डिवाइस की आईडी नंबर प्राप्त किए बिना, रिबूट में काम करना जारी रखेगा।


1
यह उत्तर अधिक उत्थान के योग्य है।
मेफिस्तो

मेरे मामले में, मेरे पास एक वायरलेस माउस + कीबोर्ड है, इसलिए xinput listएक ही नाम के साथ 2 प्रविष्टियाँ दिखाता है ("2.4G वायरलेस कीबोर्ड और माउस") , जिसमें से एक कहता है "[दास सूचक (2)]" और दूसरा कहता है "[दास कीबोर्ड" (3) )] "। तो आपके समाधान के साथ मेरे पास यह त्रुटि है "2.4G वायरलेस कीबोर्ड और माउस 'नामक कई डिवाइस हैं।" फिलहाल, मैं राडू के घोल को जोड़ रहा हूं grep 'slave pointer'। मुझे आश्चर्य है कि अगर xinput किसी तरह यह निर्दिष्ट करने की अनुमति देता है कि हम यह सब किए बिना एक पॉइंटर का उल्लेख कर रहे हैं।
मतिस्केल्स्को

1

मैंने पाया कि दूसरे उत्तर में स्टार्टअप कमांड केवल तभी काम करता है जब आईडी दो अंकों की संख्या हो। यहाँ मेरे संशोधन हैं जो एक और दो अंकों की संख्या के लिए काम करने चाहिए:

में स्टार्टअप अनुप्रयोगों

bash -c "for id in `/usr/bin/xinput list | /bin/grep 'USB Mouse' | /bin/grep -o id=[0-9][0-9]*`; do xinput set-button-map ${id:3} 3 2 1; done;"

0
device_id=$(/usr/bin/xinput list \
            | /bin/grep 'slave  pointer' \
            | /bin/grep 'Wireless Keyboard&Mouse' \
            | tr " " "\n" \
            | /bin/grep "id=" \
            | /bin/grep -o [0-9][0-9]* \
        )
/usr/bin/xinput set-button-map $device_id 3 2 1 

यहाँ एक और अधिक क्रिया समाधान है जो दो समस्याओं को हल करता है:

  • यह किसी भी संख्या के अंकों के साथ डिवाइस आईडी के लिए काम करता है (@robbie समाधान के रूप में, लेकिन थोड़ा अलग लिखा गया है)
  • डिवाइस नाम डुप्लिकेट किया जा सकता है कि कंसीडर। मेरे मामले में, मेरे पास एक वायरलेस माउस + कीबोर्ड है, इसलिए xinput listएक ही नाम के साथ 2 प्रविष्टियाँ दिखाता है ("2.4G वायरलेस कीबोर्ड और माउस") , जिसमें से एक कहता है "[दास सूचक (2)]" और दूसरा कहता है "[दास कीबोर्ड" (3) )] "। तो @reedstrm समाधान के साथ मुझे यह त्रुटि मिली "2.4G वायरलेस कीबोर्ड और माउस 'नाम के कई उपकरण हैं।", जबकि @Radu Rădeanu समाधान के साथ, for2 आईडी से अधिक, माउस के लिए एक और कीबोर्ड के लिए एक से पुनरावृत्ति हो रही थी, एक होने "डिवाइस में कोई बटन नहीं है" दूसरे के साथ त्रुटि संदेश।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.