मैं लॉगिन पर Xmodmap कैसे सेट करूं?


46

जैसा कि मेरा कीबोर्ड लेआउट मुझे सूट नहीं करता है, मैं xmodmapलॉगिन पर चलता हूं । स्क्रिप्ट का नाम है .profileऔर यह ठीक है, लेकिन यह एकता इंटरफ़ेस को तोड़ती है।

मैं जानना चाहता हूं कि xmodmapलाइन कहां लगाई जाए ताकि यह मेरे लॉगिन पर क्रियान्वित हो और कुछ भी टूट न जाए।

मैंने पहले ही इसे .bash_loginऔर .bash_profileफाइलों में डालने की कोशिश की है , सफलता के बिना ( xmodmapअपना कीबोर्ड सेट नहीं करता है)।

मेरे विकल्प क्या हैं?


4
यह एकता इंटरफ़ेस को कैसे तोड़ता है?
djeikyb

1
मैं जोड़ना चाहूंगा कि यदि आपका xmodmap निष्पादन समय बहुत लंबा है, तो आपको उन सभी प्रविष्टियों को निकाल देना चाहिए जिन्हें आपने हाथ से संशोधित नहीं किया था। केवल आपके इनपुट फ़ाइल में परिवर्तन रखने से xmodmap बहुत तेज़ी से चलेगा।
user1071575

जवाबों:


29

डाल करने के लिए सही जगह xmodmap ~/.Xmodmap(ताकि स्टार्टअप पर आपके परिवर्तन पढ़े जाएं) ~/.xinitrcनीचे है (स्पष्टीकरण देखें), हालांकि आप वैकल्पिक रूप से xmodmapकमांड को स्टार्टअप आइटम ( /usr/bin/xmodmap /home/user/.Xmodmap) के रूप में रख सकते हैं । मैं 12.04 (और संभवतः 12.10) के लिए कह सकता हूं कि ये दो विकल्प निश्चित रूप से काम करते हैं, जिस तरह से वे आपके साथ लॉग इन करने के बाद पढ़े जाते हैं lightdm। (मैंने वापसी को राइट शिफ्ट में बदल दिया , और परिवर्तन केवल मेरे पासवर्ड दर्ज करने और लॉग इन करने के बाद प्रभावी हुआ)।

कृपया ध्यान दें: यदि आप Xfce पर हैं, तो यह आधिकारिक Xfce FAQ पर ध्यान दिया जाता है कि आपको उपयोग करने के बजाय एक स्टार्टअप आइटम बनाना पड़ सकता है ~/.xinitrc, और आपको निष्पादन में देरी करनी पड़ सकती है, ताकि xmodmapबदलावों को ओवरराइट न किया जाए setxkbmap। आप अपने स्टार्टअप प्रविष्टि में इसे प्राप्त करने के लिए देरी का उपयोग कर सकते हैं:

/bin/bash -c "sleep 20; /usr/bin/xmodmap /home/$USER/.Xmodmap"

(स्टार्टअप प्रविष्टि के लिए पूर्ण पथ निर्दिष्ट करना आवश्यक है)

प्रत्येक बार setxkbmapकीबोर्ड लेआउट बदलने के लिए चलाया जाता है, आपको xmodmap ~/.Xmodmapटर्मिनल में फिर से चलना होगा ।

बनाना ~/.xinitrc

अपने घर के फोल्डर में एक फ़ाइल बनाएं जिसे .xinitrcसाथ बुलाया गया है

touch .xinitrc

और इसमें जगह:

xmodmap ~/.Xmodmap

आपकी Xmodmapफ़ाइल में शैली में प्रविष्टियाँ नहीं होनी चाहिए xmodmap -e " "क्योंकि टर्मिनल में अस्थायी रूप से मान सेट करने के लिए उपयोग किया जाता है। इस प्रारूप में प्रविष्टियाँ होनी चाहिए:

keycode 65 = Tab
keycode 23 = Space

यह अक्सर भ्रामक है जो विभिन्न की Xफ़ाइलें (जैसे .xprofile, .xinitrc, आदि) स्टार्टअप पर पढ़ रहे हैं, लेकिन .xinitrcअभी भी 12.04 के नीचे पढ़ने के लिए जबकि प्रतीत होता है .Xmodmapया .xinputrcखुद से नहीं पढ़ रहे हैं।


5
ध्यान दें कि अगर आप के साथ अपने परिवर्तन करें xmodmap -e '..., तो आप सही प्रारूप के लिए प्राप्त कर सकते हैं xmodmap .Xmodmapके साथ xmodmap -pkeहै, जो बाहर वर्तमान मानचित्रण प्रिंट - हालांकि आप बस लाइनों है कि परिवर्तन आपके द्वारा किए गए करने के लिए लागू करने के लिए इस नीचे फ़िल्टर करना चाहते हैं जाएगा।
बैरी केली

1
यह मेरे लिए काम नहीं किया। मैंने बनाया है .Xmodmap और .xinitrc | तब मैंने xmodmap ~ / .Xmodmap को .xinitrc में रखा और फिर .Xmodmad में मेरे पास कीकोड 166 = पूर्व
कीकोड

यह .xinitrc उबंटू 17.10 में अब स्वचालित रूप से लॉन्च नहीं हो रहा है। आपको इस कमांड के साथ ऑटो करना होगा: / bin / bash -c "sleep 15 && /home/USERNAME/.xinitrc"
thebunnyrules

9

मैं ElementaryOS (इसके गनोम आधारित विंडो मैनेजर के साथ) का उपयोग कर रहा हूं और xdgऑटोस्टार्ट स्क्रिप्ट का उपयोग करके एक समाधान प्राप्त कर रहा हूं । कई विंडो प्रबंधक xdg का उपयोग कर रहे हैं, इसलिए मुझे लगता है कि यह दृष्टिकोण अन्य वातावरणों में भी काम करेगा। कम से कम यह गनोम के साथ काम करना चाहिए।

Xdg ~/.config/autostartx सत्र में लॉगिन करने पर स्क्रिप्ट चलाता है । लॉगिन पर xmodmap config लोड करने के लिए, निम्न स्क्रिप्ट जोड़ें ~/.config/autostart/xmodmap.desktop:

[Desktop Entry]
Name[en_US]=Xmodmap
Comment[en_US]=xmodmap ~/.Xmodmap
Exec=/usr/bin/xmodmap .Xmodmap
Icon=application-default-icon
X-GNOME-Autostart-enabled=true
Type=Application

फिर लॉगआउट करें और फिर से लॉगिन करें, और आपका Xmodmap कॉन्फ़िगरेशन लोड होना चाहिए।

यदि यह काम नहीं कर रहा है, तो यह देखने के लिए टर्मिनल में xmodmap चलाने का प्रयास करें कि क्या यह xmodmap है जो शिकायत करता है:

$ xmodmap ~/.Xmodmap

यदि आपको कोई त्रुटि नहीं मिलती है, तो डीबग करने के लिए निम्न कमांड चलाएँ:

$ sudo cat /var/log/syslog | grep -B 5 -A 5 xmodmap

लिनक्स टकसाल 17 पर (उबंटू 14.04.5 पर आधारित) ऑटो-स्टार्ट दृष्टिकोण एक ~/.xinitrcफ़ाइल का उपयोग करने के बाद मेरे लिए पूरी तरह से काम करता है । जैसा कि hxpax ने कहा है, मिंट उपयोगकर्ता (शायद सबसे / सभी डेबियन व्युत्पन्न लिनक्स) एक ऑटो-स्टार्ट प्रविष्टियों को जोड़ने के लिए एक GUI संवाद का उपयोग कर सकते हैं Main Menu --> Preferences --> Startup Applications
मटका

2
काम किया ubuntu 18.04
TooTone

2

अभी मेरे सामने एकता इंटरफ़ेस नहीं है, लेकिन लॉन्चर पर एप्लिकेशन बटन पर क्लिक करने का प्रयास करें, फिर स्टार्टअप टाइप करें। स्टार्टअप एप्लिकेशन (या कुछ ऐसे) नामक एक ऐप होना चाहिए। इसे क्लिक करें और अपने xmodmap कमांड (जैसे xmodmap /home/thiago/.Xmodmap) जोड़ें।


मैंने कुछ समय पहले कोशिश की थी लेकिन यह मेरे लिए कारगर नहीं था। मैं अभी खिड़कियों पर हूं, लेकिन बाद में फिर से कोशिश करूंगा और अगर यह काम करता है तो मैं यहां रिपोर्ट करता हूं। thx
थियागो मोरेस

2
@ तेहीगो मोरेस क्या यह मूल कमांड काम करता है (यदि नहीं, तो त्रुटि के बाद)? xmodmap .Xmodmap
djeikyb

+1 यह काम करता है। अधिक स्पष्ट मैं .Xmodmap के लिए पूरा पथ प्रयोग की जाने वाली
pwned

3
यह काम नहीं करता। मैं १
०४

@ miguelmorales85 आपके टर्मिनल में मूल कमांड काम करता है? क्या तुमने एक निरपेक्ष मार्ग का उपयोग करने की कोशिश की?
djikybb

2

टकसाल 17/18 पर, मैं 1 सेकंड की देरी के साथ उस स्क्रिप्ट को स्टार्टअप एप्लिकेशन में प्राप्त कर सकता हूं।

जैसा कि मिंट 18 उबंटू 1604 से लिया गया है, मुझे लगता है कि आप ऐसा ही कर सकते हैं, या स्टार्टअप एप्लिकेशन प्रबंधन पैनल पहले स्थापित कर सकते हैं यदि यह वहां नहीं है।

आशा है ये मदद करेगा।


+1 अच्छी तरह से काम करता है। मुझे लिनक्स मिंट 17 पर किसी देरी की आवश्यकता नहीं थी।
मैट

@mattst हाँ, देरी वैकल्पिक है।
hxpax

मुझे काम करने के लिए 5 सेकंड की देरी की आवश्यकता थी। मैंने निम्न स्टार्टअप शेल स्क्रिप्ट का उपयोग किया है इसलिए: gist.github.com/ghagerer/58212241e37229f9d6fe3a133b34be97
Gerhard Hagerer

0

मुझे ऊपर दिए गए किसी भी सुझाव से बहुत खुशी नहीं हुई (.bashrc विकल्प वास्तव में व्यवहार्य नहीं था क्योंकि यह हर नए टर्मिनल पर xmodmap चलाता है)

मैंने xmodstartup.shअपने होम फोल्डर में एक स्क्रिप्ट को टच किया

  #!/bin/bash           
  sleep 1;               
  echo "running xmodmap" 
  xmodmap ~/.Xmodmap     

इसके साथ बचाया, मैंने तब किया था sudo chmod +x xmodstartup.sh

फिर मैंने बस निष्पादन योग्य फ़ाइल को गनोम की "स्टार्टअप एप्लिकेशन वरीयताओं" विंडो में जोड़ा। बिश बोश, अंग्रेजी लेआउट y Español altgr:)


-1

Xmodmap बदलाव लाना ~/.bashrcया /etc/bash.bashrcकुछ भी तोड़ना नहीं है।

केवल नकारात्मक पक्ष यह है कि प्रत्येक बूट को सक्रिय करने के लिए एक टर्मिनल खोलना पड़ता है।


3
मैं पहले से ही ऐसा कर रहा हूं, लेकिन समस्या यह है कि मेरे द्वारा खोले गए प्रत्येक टर्मिनल पर इस कमांड को निष्पादित किया जाता है। यह केवल एक क्षण है लेकिन यह थोड़ा कष्टप्रद है और मैं एक वास्तविक समाधान पसंद करूंगा। वैसे भी
थियागो मोरास
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.