मैं सप्ताहांत में इससे जूझता रहा, और मुझे अपने माउस बटन को हटाने की जरूरत थी।
मैं सप्ताहांत में इससे जूझता रहा, और मुझे अपने माउस बटन को हटाने की जरूरत थी।
जवाबों:
मेरे पास 9 बटन के साथ एक लॉजिटेक माउस है, और "मध्य बटन" (# 2) को दबाने पर स्क्रॉल व्हील पर क्लिक करना शामिल है। मैं इसे नापसंद करता हूं क्योंकि मैं अनाड़ी हूं और आमतौर पर खिड़की को स्क्रॉल करता हूं जब मैं पहिया पर क्लिक करने की कोशिश करता हूं। इसलिए मैं स्वचालित रूप से शीर्ष बटन (इस मामले में # 9) को मध्य बटन (# 2) को रीमैप करना चाहता था। मैं नीचे के साइड बटन (# 8) को भी मैप करना चाहता था ताकि यह लेफ्ट बटन (# 1) के दोहरे क्लिक पर अमल करे।
हालांकि मेरा उद्देश्य विशिष्ट था, नीचे दिए गए समाधानों को किसी भी स्थिति में सामान्यीकृत किया जा सकता है जिसमें आप स्टार्टअप पर माउस बटन को स्वचालित रूप से रीमैप करना चाहते हैं।
आपको xinput
इस कार्य के लिए इंस्टॉल करना होगा । यह पूरी तरह से आपकी .xsessionrc
फ़ाइल में किया जा सकता है । सबसे पहले, xinput
उस नाम को खोजने के लिए उपयोग करें जो आपके माउस को सौंपा गया है, जो बाद में एक इनपुट डिवाइस आईडी से संबंधित है। नीचे मेरे लैपटॉप से कुछ नमूना आउटपुट है:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech USB Laser Mouse id=11 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
मेरा माउस खुद को कॉल करता है Logitech USB Laser Mouse
और जैसा दिखाया जाता है id=11
। आपके माउस का एक अलग नाम होगा; पता लगाना कि पाठक के लिए एक अभ्यास के रूप में छोड़ दिया जाता है।
जब आप अभी भी इस सत्र में डिवाइस की आईडी जानते हैं, तो पता करें कि इनपुट माउस आपके माउस के कितने बटन का उपयोग करके सोचता है । यह बटन की संख्या से भिन्न हो सकता है जो डिवाइस पर स्पष्ट है।xinput list
deviceID
Logitech USB Laser Mouse id=11 [slave pointer (2)]
Reporting 7 classes:
Class originated from: 11. Type: XIButtonClass
Buttons supported: 16
Button labels: "Button Left" "Button Middle" "Button Right" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right" "Button Side" "Button Extra" "Button Forward" "Button Back" "Button Task" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown"
मेरे माउस के साथ, केवल 9 स्पष्ट भौतिक बटन हैं, लेकिन xinput
रिपोर्ट 16।
USB की प्रकृति को देखते हुए, यह आईडी आपके द्वारा पुनरारंभ किए जाने पर हर बार बदल सकती है, इसलिए यह कुछ ऐसा स्क्रिप्ट करने के लिए पर्याप्त नहीं है जो एक बार खोजे गए आईडी के लिए सांख्यिकीय रूप से कुंजीबद्ध है। आपको स्टार्टअप में इसे गतिशील रूप से पार्स करना होगा और वर्तमान आईडी के आधार पर अपने पुन: मानचित्र को निष्पादित करना होगा।
अब जब आप इसका नाम जानते हैं, तो आप xinput test
यह पता लगाने के लिए उपयोग कर सकते हैं कि किस कुंजी को रीमैप करना है। अपने सूचकांकों को प्राप्त करने के लिए उन माउस बटन को दबाएं, जिनसे आप मैप करना चाहते हैं और। (संदर्भ के लिए, 1, 2, और 3 "हमेशा" (यानी, आमतौर पर) एक 3-बटन माउस के बाएं, मध्य और दाएं बटन को संदर्भित करता है। एक सामान्य री-मैप माउस को बाएं हाथ से बनाने के लिए इन्हें उलट देता है। )
button press 2
button release 2
button press 9
button release 9
इस स्थिति में मैंने पाया कि मैं बटन # 9 (साइड, टॉप) को बटन # 2 (मध्य) में मैप करना चाहता हूं।
अब जब आप जानते हैं कि आपके माउस को क्या कहा जाता है, और आप कौन से बटन बदलना चाहते हैं, तो आप एक ~/.xsessionrc
स्क्रिप्ट लिख सकते हैं जो xinput
स्टार्टअप पर बटन री-मैपिंग को निष्पादित करने के लिए आमंत्रित करता है। नीचे मेरी पूरी स्क्रिप्ट है।
# Map button 9 (top side button) to button 2 (middle button)
my_mouse_id=$(xinput | grep "Logitech USB Laser Mouse" | sed 's/^.*id=\([0-9]*\)[ \t].*$/\1/')
echo $my_mouse_id > ~/temp/my_mouse_id
xinput set-button-map $my_mouse_id 1 2 3 4 5 6 7 8 2 10 11 12 13 14 15 16
यहां पहली पंक्ति माउस के आईडी के समान एक अस्थायी सत्र चर सेट करती है, जैसा कि रिपोर्ट किया गया है xinput
। यह grep
रिपोर्ट में माउस के ज्ञात नाम के लिए आईएनजी द्वारा किया जाता है xinput
, फिर रिपोर्ट में sed
उस id=xxx
टोकन से आईडी नंबर निकालने के लिए उपयोग किया जाता है । यह मान तब एक xinput set-button-map
निर्देश में उपयोग किया जाता है , जो पुन: मानचित्रण को निष्पादित करता है। ऊपर दिए गए उदाहरण में, एकमात्र परिवर्तन यह है कि बटन # 9 को पुन: मैप किया जा रहा है बटन # 2 की नकल की जाए। अन्य सभी अपनी डिफ़ॉल्ट सेटिंग पर बने रहते हैं।
अपडेट: जैसा कि @Lokenenna नीचे इंगित करता है , यदि आपका डिवाइस खुद को माउस और कीबोर्ड दोनों के रूप में रिपोर्ट करता है, तो आपको grep
उपयोग की परिणाम गणना को सीमित करने की आवश्यकता हो सकती है -m 1
।
इस उत्तर को भी देखें ।
आप की आवश्यकता होगी xinput
, xbindkeys
और xautomation
(सहित xte
) इस कार्य के लिए स्थापित किया।
का प्रयोग करें xinput list
और xinput test
अपने माउस की उपकरण आईडी और बटन आप प्रदान करना चाहते हैं की संख्या को खोजने के लिए। मेरे मामले में, मैं नीचे दिए गए बटन (# 8) को बाएं बटन (# 1) के डबल-क्लिक पर मैप करना चाहता था।
बनाएँ या संपादित करें ~/.xbindkeysrc
। इस फ़ाइल का प्रारूप युग्मित लाइनों की एक श्रृंखला है। पहली पंक्ति एक घटना के लिए निष्पादित होने के लिए एक कमांड है; दूसरी पंक्ति घटना का विवरण है। हम घटनाओं को सीधे इनपुट हैंडलर को भेजने xte
के xautomation
लिए घटक का उपयोग करेंगे ।
एक बटन जारी होने पर एक डबल-क्लिक ईवेंट बनाने के लिए, मैंने निम्नलिखित जोड़ा:
"/usr/bin/xte 'mouseclick 1' 'mouseclick 1' &"
b:8 + Release
यह कॉन्फ़िगरेशन बटन # 1 के रिलीज के लिए बटन # 1 पर दो माउस क्लिक के अनुक्रम को मैप करता है। (सिद्धांत रूप में मुझे लगता है कि आप माउस बटन पर किसी भी कमांड को मैप कर सकते हैं , लेकिन यह सबसे सामान्य मामला है। अन्य व्यावहारिक उदाहरणों के लिए इस उत्तर को देखें ।)
आपके सिस्टम से जुड़े कई चूहों वाले उपयोगकर्ताओं के लिए, आपको डिवाइस की आईडी भी पास करनी होगी। यह सभी उपयोगकर्ताओं के लिए लागू नहीं हो सकता है और इसे यूनिटी के साथ Ubuntu 16.04 पर खोजा गया था।
xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Kensington Kensington Expert Mouse id=9 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=13 [slave pointer (2)]
⎜ ↳ TPPS/2 IBM TrackPoint id=14 [slave pointer (2)]
फिर .xbbkeykeysrc फ़ाइल को कमांड आउटपुट से आईडी = मान को संदर्भित करके संशोधित करें (इस उदाहरण में आईडी = 9):
"/usr/bin/xte -i 9 'mouseclick 1' 'mouseclick 1' &"
b:8 + Release
awk
साथ अपने पुराने बयान को अपने sed
उदाहरण में बदल दिया है । सुधार के लिए धन्यवाद!
xinput set-button-map "Logitech Trackball" 1 3 3
xinput
जिसका मुझे अनुमान है: दो बार मेरा माउस दिखाता है, इस तरह: guess USB ऑप्टिक माउस आईडी = 12 [दास सूचक (2)] ↳ यूएसबी ऑप्टिकल माउस आईडी = 13 [दास सूचक (2)] केवल आईपी 13 के साथ कमांड पकड़ेंगे xinput test
। स्क्रिप्ट हमेशा पहली आईडी पकड़ेगी। लेकिन यह वैसे भी दो बार क्यों है? दोनों गायब हो जाते हैं जब मैं इस माउस को डिस्कनेक्ट करता हूं और कनेक्ट होने पर फिर से प्रकट होता हूं।
इसके लिए लघु चरण हैं:
नामक एक उपयोगिता है xinput
। xinput list
या सिर्फ xinput
सभी एक्स इनपुट डिवाइस और उनके आईडी दिखाएगा। यहां आपको उस माउस की आईडी मिलती है जिसे आप रीमैप करना चाहते हैं।
मैं अपनी आईडी का उपयोग अपने सेटअप से, उदाहरण के लिए, जो कि 21 वर्ष का है, xinput --get-button-map 21
का उत्पादन करेगा
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
अब, यदि आप कहना चाहते हैं, तो बाएं और दाएं बटन स्वैप करें जो आप बस चलाते हैं
xinput --set-button-map 21 3 2 1
यहां हम हैं, रीमैपिंग की जाती है।
स्टार्टअप पर इसे चलाने के लिए बस इसे एक फ़ाइल में डालें:
echo "xinput --set-button-map 21 3 2 1" > leftmouseremap.sh
इसे निष्पादन योग्य अनुमति दें
chmod +x leftmouseremap.sh
अंत में, इसे GUI से मैन्युअल रूप से Statrtup Application में जोड़ें या, यदि आप इसे CLI से चाहते हैं, तो नीचे दिया गया पाठ (आपके लिए पथ बदलें) अपने में एक फ़ाइल इंटे करें ~/.config/autostart
, यहाँ मेरा ( less .config/autostart/leftmouseremap.sh.desktop
) है:
[Desktop Entry]
Type=Application
Exec=/home/ruslan/leftmouseremap.sh
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_US]=/home/ruslan/leftmouseremap.sh
Name=/home/ruslan/leftmouseremap.sh
Comment[en_US]=
Comment=
ध्यान रखें, कि KDE के साथ पथ ऐसा होगा ~/.kde/Autosart
, जैसे अन्य डेस्कटॉप प्रबंधकों के लिए यह दृष्टि भिन्न हो सकता है। वैकल्पिक रूप से, स्टार्टअप चलाने का उपयोग करके सामान्य दृष्टिकोण के साथ किया जा सकता है /etc/rc.local
।
Zerobandwidth के महान उत्तर का उपयोग करते समय , कुछ डिवाइस, जैसे कि Logitech के MX Ergo, एक पॉइंटर और एक कीबोर्ड डिवाइस दोनों के रूप में दिखाई देते हैं :
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech MX Ergo id=10 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=14 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
...
↳ Logitech MX Ergo id=15 [slave keyboard (3)]
नतीजतन, grep "Logitech MX Ergo"
दो मूल्यों को वापस करने के लिए समाप्त होता है। बाद वाले छोरों को मैपिंग स्ट्रिंग में पहले आइटम के रूप में शामिल किया जा रहा है और आपके सभी माउस बटन पर शिकंजा है।
फिक्स आसान है - बस grep
अधिकतम-तर्क का उपयोग करें -m 1
:
my_mouse_id=$(xinput | grep -m 1 "Logitech MX Ergo" | sed 's/^.*id=\([0-9]*\)[ \t].*$/\1/')
echo $my_mouse_id > ~/temp/my_mouse_id
xinput --set-button-map $my_mouse_id 1 2 3 4 5 6 7 8 2 10 11 12 13 14 15 16
मैं अपने लॉजिटेक माउस के मध्य बटन की मैपिंग को ईजीएस्ट्रोइक जेस्चर रेकग्निशन का उपयोग करके 'रिटर्न' में बदलने में सक्षम था जिसे मैंने उबंटू सॉफ्टवेयर सेंटर से डाउनलोड किया था। संपादित करें: एप्लिकेशन में, आप Add Action चुनेंगे, इसे नाम दें, कुंजी प्रकार चुनें, विवरण पर क्लिक करें और Enter दबाएं, रिकॉर्ड स्ट्रोक दबाएं, और मध्य बटन पर शीघ्र दबाएं के दौरान।
xinput
बटन का उपयोग करना चाहते हैं जब उपयोग नहीं कर रहे हैं xinput list <devID>
।
12.04 से पहले मानक रिपॉजिटरी में "बीटीएनएक्स" नामक एक आसान ग्राफिकल टूल था, जिसे सिस्टम कॉन्फ़िगरेशन में "बटन गुण" के रूप में जोड़ा गया था। अफसोस की बात है कि यह गिरा दिया गया था। वर्तमान में 14.04, 16.04 और 18.04 तक "अप्रकाशित" पीपीए यहां रखा गया है: https://launchpad.net/~oliverstar/+archive/ubuntu/ppa ( https://launchpad.net/ubuntu/xenetic/source पर पाया गया) / बीटीएनएक्स )
यह सिस्टम सेटिंग्स के साथ एकीकृत नहीं होगा, लेकिन सस्ते 5-बटन-माउस के साथ मेरे लैपटॉप पर काफी ठीक काम कर रहा है। यह कीस्ट्रोक्स और कमांड को भी रिमैप कर सकता है और किसी भी अन्य विधि की तुलना में कॉन्फ़िगरेशन बहुत सरल है!
मेरे पास एचपी एलीटबुक 2570 पी, उबंटू 18.04.2 है। यहां मेरे पास एक ट्रैकपॉइंट है जो मेरे लिए बेकार है और यहां अंतरिक्ष के नीचे 2 बेकार ट्रैकपॉइंट बटन हैं
मैं इन कुंजियों का उपयोग नहीं करता क्योंकि मेरे पास यह टचपैड के नीचे है। मैं इन बटन को बाएं = back_button (Alt_L + Left), दाईं ओर एक = mid_mouse_button पर रीमैप करना चाहता हूं। "Xinput" में trackpoint id = 11 है और बायाँ बटन नंबर 1 है, दाईं ओर 3 है।
क्या कोई मुझे टर्मिनल पर कॉपी करने के लिए सही कोड लिख सकता है? मैंने xbindkeysrc के साथ संयोजन किया है, लेकिन यह दोनों (ट्रैकपॉइंट और टचपैड) बटन पर कोई भी कार्रवाई सेट करता है
sed 's/^.*id=\([0-9]*\)[ \t].*$/\1/'