मुझे "xinput" कमांड को कहाँ से चिपकाना है ताकि GNOME शुरू होने पर वह इसे निष्पादित करे?


10

मेरे थिंकपैड पर मुझे टर्मिनल में कुछ इस तरह निष्पादित करना होगा:

xinput set-int-prop "TPPS/2 IBM TrackPoint" "Evdev Middle Button Emulation" 8 1

ताकि मेरे टचपैड पर मेरे 2 बटन मध्य माउस क्लिक का अनुकरण करें। अब मुझे इस लाइन को हर बार निष्पादित करने की आवश्यकता है जब मैं GNOMe या X या जो भी शुरू करता हूं, ताकि यह "बस काम करता है"।

मैंने कोशिश की ~ / .xsession या ~ / .bashrc लेकिन कोई फायदा नहीं हुआ। क्या मुझे इसे GNOME प्रारंभ स्क्रिप्ट में या कहीं और / etc / X में रखना चाहिए?

मैं Ubuntu 11.10 का उपयोग कर रहा हूं।


sleep 5अपनी .xsessionफ़ाइल की शुरुआत में जोड़ने का प्रयास करें ?
थॉमस अहले

1
@ThomasAhle जो विंडो प्रबंधक लोड होने पर समस्या को हल नहीं करेगा और .xsession के निष्पादित होने के बाद evdev गुण बदल देता है।
मार्सिन कमिन्स्की

जवाबों:


7

मैं ज्ञानवर्धक डीएम का उपयोग कर रहा हूं, लेकिन यह अन्य डीएम / डेस्कटॉप के लिए प्रासंगिक है। मैं अपना सत्र xsession का उपयोग करके शुरू करता हूं, इसलिए मैंने शुरू में xinput कमांड ~ / .xsession में डाल दिया, जो सभी सेटिंग्स को बदलना नहीं चाहता था जिन्हें मैं बदलना चाहता था। केवल उनमें से कुछ । मैं सभी या किसी भी बदलाव की उम्मीद कर रहा था, इसलिए मैंने अपने .xsession में 1 सेकंड के अंतराल के साथ 10-इंटरेक्शन लूप जोड़ा, हर बार xinput कमांड चला रहा था और जाँचता था कि सेटिंग्स लागू की गई हैं या नहीं। मेरे आश्चर्य के लिए, सभी सेटिंग्स पहले पुनरावृत्ति के बाद लागू किए गए थे।

इसका मतलब यह है कि यह आपका डीएम है जो आपकी xinput सेटिंग्स को ओवरराइड करने के लिए कुछ करता है और चूंकि कमांड जो आपके DM (E17 को मेरे मामले में लॉन्च करता है) आपकी .xsession फाइल में अंतिम है, यह फाइल इसके लिए कोई जगह नहीं है।

मैंने अपने ~ / .profile में निम्न पंक्तियाँ जोड़ी हैं और इससे समस्या हल हो गई है:

# don't run unless we're being invoked from an xwindows session
if [[ -n ${DISPLAY} ]]; then

  # set your devices names here
  pointer1="IBM TrackPoint"
  pointer2="Lite-On Technology Corp. ThinkPad USB Keyboard with TrackPoint"
  pointer3="Logitech USB Trackball"

  id1=$(xinput | awk -F= "/$pointer1.*pointer/ {print \$2}" | cut -f1)
  id2=$(xinput | awk -F= "/$pointer2.*pointer/ {print \$2}" | cut -f1)
  id3=$(xinput | awk -F= "/$pointer3.*pointer/ {print \$2}" | cut -f1)

  if [[ -n "${id1}" ]]; then
    xinput --set-button-map "${id1}" 1 2 3 4 5 6 7
    xinput set-prop "${id1}"  "Evdev Wheel Emulation Axes" 6 7 4 5
    xinput set-prop "${id1}"  "Evdev Wheel Emulation" 1
    xinput set-prop "${id1}"  "Evdev Wheel Emulation Button" 2
    xinput set-prop "${id1}"  "Evdev Middle Button Emulation" 0
  fi

  if [[ -n "${id2}" ]]; then
    xinput --set-button-map "${id2}" 1 2 3 4 5 6 7
    xinput set-prop "${id2}"  "Evdev Wheel Emulation Axes" 6 7 4 5
    xinput set-prop "${id2}"  "Evdev Wheel Emulation" 1
    xinput set-prop "${id2}"  "Evdev Wheel Emulation Button" 2
    xinput set-prop "${id2}"  "Evdev Middle Button Emulation" 0
  fi

  if [[ -n "${id3}" ]]; then
    xinput --set-button-map "${id3}" 1 2 3 4 5 6 7 8 9
    xinput set-prop "${id3}"  "Evdev Wheel Emulation Axes" 6 7 4 5
    xinput set-prop "${id3}"  "Evdev Wheel Emulation" 1
    xinput set-prop "${id3}"  "Evdev Wheel Emulation Button" 8
    xinput set-prop "${id3}"  "Evdev Middle Button Emulation" 1
  fi
fi

पुनश्च। सेट-इंट-प्रोप को सेट-प्रोप (मैन xinput) के पक्ष में चित्रित किया गया है।

उम्मीद है कि यह किसी की मदद करता है।


स्क्रिप्ट अच्छी है, लेकिन दुर्भाग्य से यह मुझे कोई समाधान नहीं देता है। अभी के लिए एकमात्र विधि काम करती है, अगर मैं टर्मिनल चलाता हूं और फिर आवश्यक विकल्पों के साथ 'xinput सेट-प्रोप' चलाता हूं। मैंने मार्सिन की स्क्रिप्ट, स्टार्टअप एप्लिकेशन की कोशिश की, लेकिन वे दुर्भाग्य से काम नहीं कर पाए।
गीकोडे

"सेट-इंट-प्रोप को सेट-प्रोप के पक्ष में चित्रित किया गया है" टी • एच • ए • एन • के • के • वाई • ओ • यू • यू •
क्लेमेंट

4

स्टार्टअप एप्लिकेशन पर सीधे कमांड जोड़ें। कमांड फील्ड में।

या

एक साधारण स्क्रिप्ट बनाएं और स्क्रिप्ट को स्टार्टअप एप्लिकेशन में जोड़ें।


3

इसके लिए एक फाइल बनाएं /etc/X11/Xsession.d/


मेरे लिए वह/etc/X11/xinit/Xsession
थॉमस अहले

3
मैं आमतौर पर सिस्टम-वाइड कॉन्फ़िगरेशन फ़ाइल में उपयोगकर्ता-विशिष्ट कॉन्फ़िगरेशन परिवर्तन करने के लिए प्रोत्साहित नहीं करता हूं। सबसे पहले क्योंकि यह आपको एक अलग मशीन में माइग्रेट करने की आवश्यकता के बारे में याद रखने के लिए एक अतिरिक्त बात बनाता है और दूसरी बात, क्योंकि ये फाइलें ज्यादातर वहाँ हैं जो कि डिफ़ॉल्ट चूक प्रदान करते हैं। जब आपको पुनर्स्थापना / माइग्रेट करने की आवश्यकता हो, तो अपने $ HOME के ​​स्नैपशॉट और आपके साथ स्थापित पैकेजों की सूची लेने में सक्षम होना अच्छा है।
मार्सिन कमिन्स्की

1

इस तरह मैंने इसे टर्मिनल से Ubuntu 14.04 में किया :

1) अपने डिवाइस का नाम जांचें:

xinput list

2) अपने डिवाइस के लिए उपलब्ध विकल्प देखें:

xinput list-props "Your Device Name"

3) सेटिंग्स संपादित करें (रिबूट / शटडाउन के बाद सेटिंग्स को सुसंगत बनाने के लिए बस इस एप्लिकेशन को स्टार्टअप एप्लिकेशन में जोड़ें )

xinput set-prop "Your Device Name" "Option Name" "Value"

यहाँ एक उदाहरण कमांड है जिसका उपयोग मैंने अपने टचपैड में लॉक ड्रग्स को सक्रिय करने के लिए किया था:

xinput set-prop "SynPS/2 Synaptics TouchPad" "Synaptics Locked Drags" 1

किसी अन्य विकल्प को सक्रिय / परिवर्तित करने के लिए बस अपने डिवाइस उपलब्ध विकल्पों में इसे देखें और जब तक आप वांछित परिणाम प्राप्त नहीं कर लेते, तब तक स्टार्टअप एप्लिकेशन को कमांड जोड़ें और आपका काम हो गया! आशा है ये मदद करेगा! :)

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