ทำไมไฟล์ ~ / .Xmmap ของฉันจะไม่โหลดเมื่อเข้าสู่ระบบ


16

ฉันสร้าง~/.Xmodmapไฟล์ต่อไปนี้ตามคำตอบนี้

keysym Delete = Menu
keysym Menu = Delete

clear Lock
keycode 0x42 = Escape

ในคำอื่น ๆ แลกเปลี่ยนDeleteและMenuและให้เพิ่มเติมCaps LockEscape

ครั้งต่อไปที่ฉันเข้าสู่ระบบ Ubuntu ถามฉันว่าฉันต้องการโหลด~/.Xmodmapตามที่คาดไว้หรือไม่ ฉันโหลดแล้ว แต่ไม่มีอะไรเกิดขึ้น (หลังจากนั้นหรือในการเข้าสู่ระบบครั้งต่อไป) ถ้าฉันเรียกใช้ด้วยตนเองxmodmap ~/.Xmodmapมันทำงานได้ตามที่คาดไว้

ฉันรู้ว่ามันใช้งานได้ในช่วง 10.10 เบต้า แต่มันล้มเหลวในการติดตั้งครั้งใหม่ของฉัน 10.10 ฉันไม่ได้ลองทำอะไรเลยก่อนหน้า 10.10 ความคิดใด ๆ

แก้ไข: ฉันใส่คำสั่งการแก้ไขข้อบกพร่องบางอย่าง/etc/gdm/Xsessionเพื่อให้แน่ใจว่า~/.Xmodmapกำลังโหลดและทุกอย่างเริ่มทำงานได้อย่างน่าอัศจรรย์ ฉันไม่ได้เปลี่ยนแปลงอะไรเลยนอกจากการเพิ่ม echos บางส่วนและตอนนี้มันยังใช้งานได้ที่ฉันยกเลิกการเปลี่ยนแปลงของฉันและเริ่มใหม่อีกครั้ง สิ่งที่แปลกประหลาดที่สุดที่ฉันเคยเห็น

สิ่งหนึ่งที่ฉันรู้คือส่วน "remap Caps Lock to Escape" ของ Xmodmap ทำงานได้ตลอดเวลา มันเป็นเพียงการแลกเปลี่ยนลบ / เมนูที่ล้มเหลว ฉันจะเปิดคำถามนี้ไว้ในตอนนี้ในกรณีที่คนอื่นมีปัญหาเดียวกันเนื่องจากฉันไม่รู้ว่าทำไมปัญหาจึงหยุด


ฉันประสบปัญหาเดียวกันนี้ด้วยตัวฉันเอง ถ้าฉันหาสาเหตุฉันจะต้องแน่ใจว่าได้โพสต์คำตอบ
Jorge Israel Peña

คำตอบ:


11

ฉันรู้ว่ามันโง่ แต่เป็นวิธีแก้ปัญหาที่คุณสามารถทำได้เพียงแค่ xmodmap ~/.Xmodmapautostart

นอกจากนี้คุณสามารถตรวจสอบ/etc/gdm/Xsessionบรรทัดusermodmap="$HOME/.Xmodmap"และถ้ามันไม่ได้มีเพียงแค่ผนวกมันในตอนท้ายของไฟล์ /etc/X11/Xmodmapหากคุณเป็นผู้ใช้เท่านั้นของระบบเพียงแค่ใส่การเปลี่ยนแปลงของคุณลงใน


2
คุณสั่ง "autostart" อย่างไร?
miguel.martin

ดูautostarting วิธีที่ง่ายที่สุดน่าจะเป็นเพียงแค่เพิ่มรายการSettings->Session and Startupหรือสิ่งที่ตามสายเหล่านั้น
Mateen Ulhaq

หรือยกตัวอย่างเช่นเพิ่มลงในเชลล์ของคุณดังนั้นหากคุณเปิดเชลล์บ่อยๆมันก็จะรัน สิ่งแรกที่ฉันทำเมื่อฉันเข้าไปใน Gnome เปิดเปลือกหอยเป็นส่วนใหญ่ดังนั้นนั่นเป็นวิธีหนึ่งที่ใช้ได้ผล
trusktr

3

ไปงานปาร์ตี้สาย แต่สิ่งนี้ทำให้ฉันกลัวเช่นกัน และดื้อรั้นเช่นเดียวกับฉันการยอมแพ้ไม่ใช่ตัวเลือก

โดยทั่วไปนี่คือสิ่งที่ฉันพยายาม (ในฐานะผู้ใช้ของฉันหรือรูทหากจำเป็น)

  • ~ / .Xmodmap เท่านั้น
  • ~ / .xsession, ~ / .xsessionrc
  • ~ / .gnomerc
  • ~ / .xprofile
  • ~ / .xinitrc
  • /etc/X11/Xsession.d/myscript
  • /usr/share/X11/xorg.conf.d/ ( ไฟล์ปรับแต่งไม่ได้สัมผัส )

(ที่จริงแล้วการเพิ่มxmodmapคำสั่งให้~/.bashrcทำงาน แต่มันต้องเริ่มต้นเทอร์มินัลทุกครั้งหลังจากเข้าสู่ระบบ)

ไม่กี่ปีที่ผ่านมา (?) xkbได้รับเลือกให้จัดการกับการทำแผนที่และการกำหนดค่าคีย์ (เชื่อมต่อกับ X) แต่xmodmapอาจร้องขอการเปลี่ยนแปลงที่เกี่ยวข้องกับ X หลังจากxkbทำงานในระหว่างการเริ่มต้นเซสชัน X

ปัญหาคือเมื่อการตั้งค่า xmodmap เหล่านี้เกิดขึ้นเมื่อใด
มันดูเหมือนว่าไฟล์ดังกล่าวข้างต้นเหล่านั้นจะถูกประมวลผลเร็วเกินไปในกระบวนการและทั้ง X ก็ยังไม่พร้อมที่จะยอมรับการเปลี่ยนแปลง xmodmap หรือ XKB จะเขียนทับพวกเขา

หมายเหตุ: ฉันได้เพิ่ม "การติดตาม" ลงในไฟล์เหล่านี้เพื่อให้แน่ใจว่าพวกเขากำลังทำงานอยู่ในบางครั้ง!

ทางออกที่ดูเหมือนว่าจะทำงาน

ฉันไม่กระตือรือร้นที่จะเพิ่ม.desktopไฟล์ในตอนแรก (สคริปต์บรรทัดเดียวง่าย ๆ ก็เพียงพอแล้ว) แต่มันใช้งานได้ดังนั้นนี่คือ
การแก้ปัญหามาจากวิธีการแมปหรือแลกเปลี่ยนแป้นคีย์บอร์ดพิเศษใน Linux?"โซลูชัน 1"

โดยทั่วไปสร้าง~/.config/autostart/my-xmodmap.desktopไฟล์และใส่ไว้ใน:

[Desktop Entry]
Name=MyXmodmap
Exec=/usr/bin/xmodmap /home/me/.Xmodmap
Terminal=false
Type=Application
X-GNOME-Autostart-enabled=true

แทนที่meด้วยชื่อผู้ใช้ของคุณ (โปรดทราบว่าฉันไม่ได้พยายาม~/หรือ$HOMEอาจทำงานได้ดีเท่า ๆ กัน/home/meและเส้นทางแบบเต็มของ xmodmap ไม่น่าจะจำเป็น ... ) และเพิ่มบิตบิต

chmod +x ~/.config/autostart/my-xmodmap.desktop

คำสั่ง xmodmap ต้องอยู่ใน~/.Xmodmapไฟล์ในกรณีนี้ (หรือใช้-eตัวเลือกหรือเลือกชื่อไฟล์อื่น!) ออกจากระบบและกลับเข้ามาใหม่

โปรดทราบว่าคุณอาจสร้างโปรแกรมเริ่มต้นจาก "แอปพลิเคชันเริ่มต้น"

อีกวิธีหนึ่งคือลืม xmodmap และเรียนรู้วิธีกำหนดค่า xkb !

แก้ไข (อีกครั้ง)

บางครั้งอาจมี 25% ของการเข้าสู่ระบบxmodmapดูเหมือนว่าจะยังไม่ทำงาน - ในขณะที่คำสั่งทำงานจริง (ตัวติดตามพิสูจน์ว่า) ข้อสรุปเดียวที่ฉันอาจเข้ามาในเวลานี้คือxkbกระบวนการทำงานช้าในกระบวนการเข้าสู่ระบบและอาจสิ้นสุดหลังจากxmodmapรันได้ ดูเหมือนสภาพการแข่งขัน ... ดังนั้นในที่สุดฉันเปลี่ยนexecบรรทัดไฟล์เดสก์ท็อปอัตโนมัติไปเป็น

Exec=$HOME/bin/mystart &

(หมายเหตุ&) mystartเป็นสคริปต์ในไดเรกทอรีใหม่ที่binฉันสร้างขึ้นซึ่งมี

#!/bin/bash    
sleep 5
/usr/bin/xmodmap /home/me/.Xmodmap &
date >> /tmp/xmodmap-has-run

และ

chmod u+x ~/bin/mystart

สคริปต์พัก 5 วินาทีก่อนที่จะเรียกใช้ xmodmap และติดตามเมื่อมันทำงาน (ในไฟล์/tmp/xmodmap-has-run)

หวังว่าจะเป็นเช่นนั้น!


การแก้ไข confituration xkb ทำงานได้สำหรับฉัน: askubuntu.com/a/1090892/1021380
postrational

2

นี่อาจเป็นคำตอบที่ดีกว่า: http://cweiske.de/howto/xmodmap/ar01s06.html

คุณอาจต้องปรับแต่งเล็กน้อยเพื่อให้เหมาะกับคุณ แต่คำแนะนำทั้งหมดอยู่ที่นั่น


1
คำแนะนำนี้มีไว้สำหรับ KDE แต่ถ้าฉันดู Gnome ที่เทียบเท่า ( /etc/gdm/Xsession) บรรทัดที่ลิงค์ว่าจะเพิ่มมีอยู่แล้ว
Matthew

2

บางทีคุณมีข้อผิดพลาดทางไวยากรณ์ใน~/.Xmodmapไฟล์ของคุณ?

ลองใช้:

$ xmodmap ~/.Xmodmap

ที่ควรจะเกิดข้อผิดพลาดหากมี


0

ฉันมีปัญหาแปลก ๆ เหมือนกันพยายามที่จะเริ่มต้น Xmodmap ของฉันในขณะที่เข้าสู่ระบบในเซสชั่นของฉัน (ubuntu 13.04) ในที่สุดฉันก็ทำให้มันใช้งานได้กับไฟล์. xinitrc ในโฟลเดอร์ Home ของฉันซึ่งฉันใช้คำสั่งของฉัน แต่มีพา ธ สัมบูรณ์ไปที่นั่น:

/ usr / bin / xmodmap /home/MYNAME/.Xmodmap

จากนั้นฉันก็ต้องรีบูท (ไม่ใช่แค่ relog) เพื่อที่มันจะถูกประหารชีวิต


2
มันใช้ไม่ได้กับ Ubuntu 14.04 สำหรับฉัน
miguel.martin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.