Openbox เขียนทับการกำหนดค่า xmodmap


9

ฉันกำลังตั้งค่า openbox บนแล็ปท็อปที่ใช้ Linux Mint 13 ฉันต้องการให้ปุ่ม Caps Lock ของฉันทำหน้าที่เป็นปุ่มควบคุมเพิ่มเติม ฉันใส่การตั้งค่าที่จำเป็นใน~/.Xmodmapไฟล์ของฉันและตรวจสอบด้วยการเปิด

xmodmap ~/.Xmodmap

มันทำงานได้อย่างถูกต้อง

อย่างไรก็ตามเมื่อฉันเข้าสู่เซสชัน openbox ของฉันการเปลี่ยนแปลงที่สำคัญเหล่านี้จะไม่ปรากฏ การรันxmodmapคำสั่งด้านบนทำให้มันทำงานอีกครั้ง แต่ฉันต้องการให้มันเกิดขึ้นโดยอัตโนมัติเมื่อเริ่มต้น

สิ่งที่น่าสนใจคือฉันเพิ่มzenityคำสั่งทดสอบดังต่อไปนี้ใน~/.config/openbox/autostartไฟล์ของฉัน

zenity --info --text=Hello

สิ่งนี้จะสร้างหน้าต่างข้อความขนาดเล็กและออกหลังจากปิดกล่องโต้ตอบเท่านั้น

ตอนนี้เมื่อฉันเข้าสู่เซสชัน openbox ของฉัน Caps Lock จะทำหน้าที่เป็นปุ่ม Ctrl จนกระทั่งไดอะล็อก zenity ถูกปิด เมื่อปิดกล่องโต้ตอบนั้น Caps Lock จะกลับไปสู่การทำงานเริ่มต้น

ฉันไม่ได้พบสิ่งนี้กับ google ดังนั้นฉันจึงขอความช่วยเหลือที่นี่ พวกคุณมีความคิดเกี่ยวกับสิ่งที่อาจจะผิดหรือเปล่า?

ปรับปรุง:

ฉันพยายามคิดออกและในการทดลองของฉันฉันคัดลอก/usr/bin/xmodmapไฟล์ของฉันไป/usr/bin/xmodmap_และแทนที่/usr/bin/xmodmapไฟล์ด้วยสคริปต์ทุบตีต่อไปนี้

#!/bin/bash

{
    echo '-------'
    date
    echo xmodmap "$@"
} >> ~/xmodmap-calls

exec /usr/bin/xmodmap_ "$@"

ดังนั้นทุกครั้งที่สคริปต์ใด ๆ ในระบบทำงานxmodmapฉันก็จะรู้

ด้วยสิ่งนี้ฉัน relogin และฉันพบเพียงหนึ่งรายการใน~/xmodmap-callsไฟล์ของฉันซึ่งเป็นรายการที่ทำงานของฉัน~/.Xmodmapซึ่งคาดว่า ดังนั้นฉันคิดว่าไม่ใช่สิ่งxmodmapที่เขียนทับการเปลี่ยนแปลงของฉัน

ถัดไป googling เล็กน้อยแนะนำให้ฉันรู้จักกับsetxkbmapคำสั่งซึ่งเห็นได้ชัดว่าสามารถทำสิ่งเดียวกันได้ ฉันแทนที่ไฟล์ปฏิบัติการนั้นคล้ายกับ xmodmap ด้านบน และฉันได้รับคำสั่งผู้ร้าย!

setxkbmap -option terminate:ctrl_alt_bksp

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

ตอนนี้ฉันมีสองสิ่งที่ต้องรู้ว่าสิ่งนี้setxkbmapถูกเรียกใช้จากสาเหตุใดและจะแก้ไขได้อย่างไร ฉันยังอยู่ระหว่างตรวจสอบ แต่สามารถใช้ความช่วยเหลืออย่างจริงจัง :)

อัปเดต 2

xmodmapไปลงนรกด้วย ฉันไม่สามารถทราบได้ว่าsetxkbmapมีการโทรจากที่ไหนแต่ฉันคิดวิธีใช้setxkbmapคำสั่งเพื่อให้ Caps Lock ของฉันทำงานเป็น Ctrl

setxkbmap -option ctrl:nocaps

ก่อนที่จะเริ่ม openbox ใช้งานได้ยอดเยี่ยม ปุ่ม caps lock ยังคงทำหน้าที่เป็นปุ่ม ctrl xmodmapไม่เคยวิ่ง

ฉันจะเก็บคำถามนี้ไว้ที่นี่เพื่อคนที่รู้ว่าสิ่งเหล่านี้สามารถให้ข้อมูลเชิงลึกได้ นอกจากนี้สำหรับผู้ที่เผชิญปัญหานี้หลังจากฉัน :)

อัปเดต 3

นี่คือเนื้อหาของฉัน.config/openbox/autostartตามที่ pedrosaurio ร้องขอ

#!/bin/bash

# Set the wallpaper.
feh --bg-scale /wall.png

# Set default brightness.
xbacklight -time 1 '=40'

# Compositing.
xcompmgr &

# The panel.
tint2 &

# Start a terminal too.
roxterm &

นี่ไม่เกี่ยวอะไรกับแป้นพิมพ์เท่าที่ฉันจะบอกได้ และนี่คือสคริปต์ที่เริ่มเซสชันของฉัน: (ดำเนินการโดย lightdm)

#!/bin/bash

setxkbmap -option ctrl:nocaps

exec openbox-session

คุณอาจจะใช้ชนิดของการกำหนดค่าแป้นพิมพ์เช่นบางคนเลือกรูปแบบแป้นพิมพ์หรือสิ่งที่คล้ายกันซึ่งย้อนกลับการเปลี่ยนแปลงประยุกต์ของคุณ
Ulrich Dangel

ที่อื่นที่ฉันเล่นด้วยการกำหนดค่าแป้นพิมพ์คือหน้าต่างการตั้งค่ารูปแบบแป้นพิมพ์ GUI ที่ฉันเปลี่ยนปุ่ม caps lock เพื่อทำงานเป็น ctrl เพิ่มเติม ใช้งานได้ดีใน cinnamon DE ตัวล็อคของฉันทำหน้าที่เป็น ctrl แม้หลังจาก relogin ฉันคิดว่าการกำหนดค่าเป็นแบบอบเชยเท่านั้น แต่ฉันไม่แน่ใจ
Shrikant Sharat

คุณเพิ่มคำสั่งในสคริปต์เริ่มอัตโนมัติอย่างไร
pedrosaurio

คุณสามารถโพสต์autostartไฟล์ของคุณ?
pedrosaurio

คำตอบ:


1

ฉันกำลังประสบปัญหาที่คล้ายกัน ปรากฎว่ามันเกิดจาก ibus ฉันเพิ่งถอนการติดตั้งเพราะฉันไม่ต้องการบริการ

ฉันพบผู้ร้ายโดยใช้เคล็ดลับของคุณในการแทนที่ setxkbmap ด้วยสคริปต์อย่างไรก็ตามฉันยังเพิ่มps -AF --forestเพื่อระบุตัวเรียกของ setxkbmap


0

เดิมพันของฉันโดยไม่ทราบว่าสคริปต์ autostart ของคุณคือคุณไม่ได้ใช้ไวยากรณ์ที่เหมาะสมโดยให้คำสั่งของคุณทำงานในพื้นหลังโดยใช้เครื่องหมายและ ( &)

ลองแก้ไข.config/openbox/autostartไฟล์ของคุณเพื่อให้เป็นดังนี้:

# Run the system-wide support stuff
#. $GLOBALAUTOSTART
# Programs to launch at startup
# Programs that will run after Openbox has started
(sleep 1 && xmodmap ~/.Xmodmap ) &

หากมีข้อสงสัยให้ดูใน wiki openbox และดูว่าตัวอย่างทั้งหมดมี&หลังจากแต่ละรายการ

http://openbox.org/wiki/Help:Autostart


ไฟล์ autostart ของฉันว่างเปล่า ณ จุดที่ฉันมีxmodmap ~/.Xmodmapอยู่ในไฟล์นั้น (โดย&ไม่ต้องดูเหมือนไม่จำเป็น) ฉันได้รับการโทรxmodmap(และตอนนี้setxkbmap) ในสคริปต์ที่เริ่มเซสชัน openbox ของฉัน ก่อนจะรันexec openbox-sessionฉันรันsetxkbmapคำสั่ง
Shrikant Sharat

นอกจากนี้การเพิ่มsleep 1ความล่าช้าเพื่อให้xmodmapการเปลี่ยนแปลงมีผลหลังจากที่ทุกอย่างโหลดอยู่ในขณะที่ใช้เวลาส่วนใหญ่ไม่ทำให้ฉันรู้สึกมั่นใจเกินไปเกี่ยวกับวิธีแก้ปัญหา ฉันไม่ต้องการทำถ้าฉันมีทางเลือก
Shrikant Sharat

คุณสามารถหลีกเลี่ยงความคิดเห็นและsleepคำสั่งทั้งหมดได้อย่างชัดเจนอย่างไรก็ตาม&เป็นสิ่งจำเป็นหลังจากแต่ละรายการไม่เช่นนั้นโปรแกรมทั้งหมดหลังจากรายการแรกจะไม่ทำงานเลย
pedrosaurio

ใช่ถ้าแอพ / กระบวนการที่ใช้เวลานานการไม่เพิ่ม&จะทำให้บล็อก ฉันใช้ลักษณะการทำงานนี้กับzenityคำสั่งเพื่อค้นหาว่าxmodmapการเปลี่ยนแปลงของฉันถูกเขียนทับหลังจาก autostartเสร็จสิ้น เริ่มอัตโนมัติของฉันในขณะนี้เติบโตในขนาดและจะวางไว้ในคำถามในไม่ช้า แม้ว่ามันจะไม่เกี่ยวอะไรกับแป้นพิมพ์เลย
Shrikant Sharat

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