ฉันจะตั้ง Xmodmap บนการเข้าสู่ระบบได้อย่างไร


46

เนื่องจากรูปแบบแป้นพิมพ์ของฉันไม่เหมาะกับฉันฉันจึงxmodmapลงชื่อเข้าใช้ สคริปต์มีชื่อ.profileและทำงานได้ดี แต่จะแบ่งส่วนติดต่อ Unity

ฉันต้องการทราบว่าจะวางxmodmapสายเพื่อที่จะดำเนินการในการเข้าสู่ระบบของฉันและจะไม่ทำลายอะไร

ฉันได้ลองใส่ใน.bash_loginและ.bash_profileไฟล์โดยไม่ประสบความสำเร็จ ( xmodmapไม่ได้ตั้งค่าแป้นพิมพ์)

ตัวเลือกของฉันคืออะไร?


4
มันทำลายส่วนที่เป็นอันหนึ่งอันเดียวกันได้อย่างไร
djeikyb

ฉันต้องการเพิ่มว่าถ้าเวลาการดำเนินการ xmodmap ของคุณยาวเกินไปคุณควรลบรายการทั้งหมดที่คุณไม่ได้แก้ไขด้วยตนเอง การเก็บเฉพาะการเปลี่ยนแปลงในไฟล์อินพุตของคุณจะทำให้ xmodmap ทำงานได้เร็วขึ้นมาก
user1071575

คำตอบ:


29

ตำแหน่งที่ถูกต้องที่จะวางxmodmap ~/.Xmodmap(เพื่อให้การเปลี่ยนแปลงของคุณถูกอ่านเมื่อเริ่มต้น) อยู่ใน~/.xinitrc(ดูคำอธิบายด้านล่าง) แม้ว่าคุณสามารถวางxmodmapคำสั่งเป็นรายการเริ่มต้น ( /usr/bin/xmodmap /home/user/.Xmodmap) ผมสามารถพูดได้ว่าสำหรับ 12.04 (และคงจะ 12.10) ว่าทั้งสองทางเลือกที่แน่นอนจะทำงานเป็นวิธีการอย่างใดอย่างหนึ่งพวกเขาจะอ่านหลังจากที่lightdmคุณเข้าสู่ระบบด้วย (ฉันเปลี่ยนReturn to Right Shiftและการเปลี่ยนแปลงจะมีผลหลังจากป้อนรหัสผ่านและการเข้าสู่ระบบเท่านั้น)

หมายเหตุ:ถ้าคุณอยู่ใน Xfce ก็ตั้งข้อสังเกตเกี่ยวกับการอย่างเป็นทางการ Xfce คำถามที่พบบ่อยที่คุณอาจต้องสร้างรายการเริ่มต้นแทนการใช้~/.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 " "รูปแบบตามที่ใช้ใน terminal เพื่อตั้งค่าชั่วคราว มันจะต้องมีรายการในรูปแบบนี้:

keycode 65 = Tab
keycode 23 = Space

มันก็มักจะทำให้เกิดความสับสนซึ่งของต่างๆXไฟล์ (เช่น.xprofile, .xinitrcฯลฯ ) จะอ่านเมื่อเริ่มต้น แต่.xinitrcดูเหมือนจะอ่านยังอยู่ภายใต้ 12.04 ในขณะที่.Xmodmapหรือ.xinputrcยังไม่ได้อ่านด้วยตัวเอง


5
โปรดทราบว่าหากคุณทำการเปลี่ยนแปลงด้วยxmodmap -e '...คุณสามารถดึงรูปแบบที่เหมาะสมสำหรับxmodmap .Xmodmapด้วยxmodmap -pkeซึ่งจะพิมพ์การแมปปัจจุบัน - แม้ว่าคุณจะต้องการกรองสิ่งนี้ลงไปเพียงแค่บรรทัดที่ใช้กับการเปลี่ยนแปลงที่คุณทำ
Barry Kelly

1
สิ่งนี้ไม่ได้ผลสำหรับฉัน ฉันได้สร้าง. Xmodmap และ. xinitrc | จากนั้นฉันก็วาง xmodmap ~ / .Xmodmap ใน. xinodrc และจากนั้นภายใน. Xodod ฉันมี keycode 166 = รหัสก่อนหน้า 167 = ถัดไป
miguelmorales85

มัน. xinitrc ดูเหมือนว่าจะไม่เปิดตัวโดยอัตโนมัติอีกต่อไปใน Ubuntu 17.10 คุณจะต้องเปิดใช้งานอัตโนมัติด้วยคำสั่งนี้: / bin / bash -c "sleep 15 && /home/USERNAME/.xinitrc"
thebunnyrules

9

ฉันใช้ ElementaryOS (พร้อมโปรแกรมจัดการหน้าต่างที่ใช้ GNOME) และพบวิธีแก้ปัญหาด้วยการใช้xdgสคริปต์เริ่มอัตโนมัติ ตัวจัดการหน้าต่างหลายตัวใช้ xdg ดังนั้นฉันคิดว่าวิธีการนี้จะทำงานในสภาพแวดล้อมอื่น อย่างน้อยควรทำงานกับ GNOME

xdg เรียกใช้สคริปต์ใน~/.config/autostartเมื่อเข้าสู่ระบบในเซสชั่น X ในการโหลด 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 ใน terminal เพื่อดูว่าเป็น xmodmap ที่บ่นหรือไม่:

$ xmodmap ~/.Xmodmap

หากคุณไม่ได้รับข้อผิดพลาดใด ๆ ให้เรียกใช้คำสั่งต่อไปนี้เพื่อตรวจแก้จุดบกพร่อง:

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

สำหรับ Linux Mint 17 (อ้างอิงจาก: Ubuntu 14.04.5) วิธีการเริ่มต้นอัตโนมัติทำงานได้อย่างสมบูรณ์แบบสำหรับฉันหลังจากใช้~/.xinitrcไฟล์ล้มเหลว ในฐานะที่เป็น hxpax ชี้ให้เห็นผู้มิ้นท์ (อาจจะมากที่สุด / ทั้งหมด Debian มา Linuxes) สามารถใช้โต้ตอบ GUI Main Menu --> Preferences --> Startup Applicationsเพื่อเพิ่มอัตโนมัติเริ่มต้นรายการโดยวิธีการ
mattst

2
ทำงานกับ Ubuntu 18.04
TooTone

2

ฉันไม่มีอินเทอร์เฟซแบบเอกภาพต่อหน้าฉัน แต่ลองคลิกปุ่มแอปพลิเคชั่นบนตัวเรียกใช้จากนั้นพิมพ์การเริ่มต้น ควรมีแอปที่เรียกว่าแอปพลิเคชันเริ่มต้น (หรือบางแอปพลิเคชัน) คลิกที่มันและเพิ่มคำสั่ง xmodmap ของคุณ (เช่นxmodmap /home/thiago/.Xmodmap)


ฉันลองมาสักพักแล้ว แต่มันก็ไม่ได้ผลสำหรับฉัน ฉันอยู่บน windows ในขณะนี้ แต่ฉันจะลองอีกครั้งในภายหลังและฉันรายงานที่นี่ถ้ามันใช้งานได้ ขอบคุณ
Thiago Moraes

2
@Thiago Moraes คำสั่งพื้นฐานนี้ใช้งานได้หรือไม่ (ถ้าไม่ใช่ให้โพสต์ข้อผิดพลาด)? xmodmap .Xmodmap
djeikyb

+1 สิ่งนี้ใช้งานได้ เพื่อให้ชัดเจนยิ่งขึ้นฉันใช้พา ธ แบบเต็มสำหรับ. Xmodmap
pwned

3
สิ่งนี้ใช้ไม่ได้ ฉันใช้ 16.04
miguelmorales85

@ miguelmorales85 คำสั่งพื้นฐานทำงานในเทอร์มินัลของคุณหรือไม่? คุณลองใช้เส้นทางที่แน่นอนหรือไม่
djeikyb

2

ในมิ้นต์ 17/18 ฉันสามารถทำสิ่งนั้นได้โดยใส่สคริปต์ของฉันลงในแอปพลิเคชันเริ่มต้นด้วยความล่าช้า 1 วินาที

เนื่องจาก Mint 18 มาจาก Ubuntu 1604 ฉันคิดว่าคุณสามารถทำเช่นเดียวกันหรือติดตั้งแผงการจัดการแอปพลิเคชันเริ่มต้นก่อนหากไม่มี

หวังว่ามันจะช่วย


+1 ทำงานได้ดี ฉันไม่ต้องการความล่าช้าใน Linux Mint 17.
mattst

@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

จากนั้นฉันก็เพิ่มไฟล์ปฏิบัติการลงในหน้าต่าง "การตั้งค่าแอปพลิเคชันเริ่มต้น" ของ gnome bish bosh, เลย์เอาต์ภาษาอังกฤษ y Español on altgr:)


-1

การเปลี่ยน xmodmap ใน~/.bashrcหรือ/etc/bash.bashrcไม่ทำลายอะไร

ข้อเสียอย่างเดียวคือต้องเปิดเทอร์มินัลหลังจากบู๊ตแต่ละครั้งเพื่อเปิดใช้งาน


3
ฉันทำไปแล้ว แต่ปัญหาคือว่าทุกสถานีที่ฉันเปิดคำสั่งนี้จะถูกดำเนินการ มันแค่ชั่วครู่ แต่มันก็น่ารำคาญนิดหน่อยและฉันต้องการทางออกที่แท้จริง ขอบคุณ
Thiago Moraes
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.