Openbox ghi đè cấu hình xmodmap


9

Tôi đang thiết lập hộp mở trên máy tính xách tay chạy Linux Mint 13. Tôi muốn khóa Caps Lock hoạt động như một phím điều khiển bổ sung. Tôi đặt các cài đặt cần thiết trong ~/.Xmodmaptệp của mình và kiểm tra nó bằng cách chạy

xmodmap ~/.Xmodmap

Nó hoạt động chính xác.

Tuy nhiên, khi tôi đăng nhập lại phiên openbox của mình, những thay đổi chính này không xuất hiện. Chạy xmodmaplệnh trên giúp nó hoạt động trở lại, nhưng tôi muốn nó tự động xảy ra khi khởi động.

Điều thú vị là tôi đã thêm một zenitylệnh kiểm tra như sau vào ~/.config/openbox/autostarttệp của mình

zenity --info --text=Hello

Điều này tạo ra một cửa sổ hộp thoại nhỏ và chỉ thoát ra sau khi đóng hộp thoại.

Bây giờ, khi tôi đăng nhập lại vào phiên mở hộp của mình, Caps Lock hoạt động như một phím Ctrl, cho đến khi hộp thoại tiện ích được đóng lại. Khi hộp thoại đó được đóng, Caps Lock trở lại hành vi mặc định của nó.

Tôi chưa tìm thấy bất cứ điều gì về điều này với google vì vậy tôi đang yêu cầu trợ giúp ở đây. Các bạn có ý tưởng gì về những gì có thể xảy ra không?

Cập nhật:

Tôi đã cố gắng tìm ra điều này và trong các thử nghiệm của mình, tôi đã sao chép /usr/bin/xmodmaptệp của mình sang /usr/bin/xmodmap_và thay thế /usr/bin/xmodmaptệp bằng tập lệnh bash sau

#!/bin/bash

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

exec /usr/bin/xmodmap_ "$@"

Vì vậy, mỗi khi bất kỳ tập lệnh chết tiệt nào trên hệ thống chạy xmodmap, tôi đều biết.

Với điều này, tôi đăng nhập lại và tôi chỉ tìm thấy một mục trong ~/xmodmap-callstệp của mình , đó là mục đang chạy của tôi ~/.Xmodmap, dự kiến. Vì vậy, tôi nghĩ rằng nó không phải xmodmaplà ghi đè những thay đổi của tôi.

Tiếp theo, một chút googling đã giới thiệu cho tôi setxkbmaplệnh, dường như cũng có thể làm điều tương tự. Tôi cũng thay thế tệp thực thi đó, tương tự như xmodmap ở trên. Và tôi đã nhận được lệnh thủ phạm!

setxkbmap -option terminate:ctrl_alt_bksp

Tôi hoàn toàn không biết điều đó làm gì, nhưng sau khi chạy xmodmap ~/.Xmodmap(áp dụng chính xác các cài đặt của tôi), nếu tôi chạy lệnh trên, các thay đổi của tôi sẽ được đặt lại! Chỉnh sửa : Điều này hóa ra thật buồn cười. Chỉ cần một setxkbmaplệnh mà không có bất kỳ đối số, vui vẻ ghi đè các thay đổi của tôi bằng xmodmap ~/.Xmodmaplệnh.

Bây giờ tôi có hai điều cần tìm hiểu, điều này setxkbmapđược chạy từ đâu & tại sao và cách khắc phục điều này. Tôi vẫn đang điều tra nhưng có thể nghiêm túc sử dụng một số trợ giúp :)

Cập nhật 2

Đến địa ngục với xmodmap. Tôi không thể tìm ra nơi setxkbmapđược gọi từ đâu, nhưng tôi đã tìm ra cách sử dụng setxkbmaplệnh để làm cho Caps Lock của tôi hoạt động như Ctrl.

setxkbmap -option ctrl:nocaps

Ngay trước khi bắt đầu openbox. Công trình rực rỡ. Phím khóa mũ vẫn hoạt động như một phím ctrl. xmodmapkhông bao giờ chạy

Tôi sẽ giữ câu hỏi này ở đây để mọi người biết những điều này có thể cung cấp một số cái nhìn sâu sắc. Ngoài ra, đối với những người phải đối mặt với điều này sau tôi :)

Cập nhật 3

Đây là nội dung của tôi .config/openbox/autostart, theo yêu cầu của 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 &

Điều này không liên quan gì đến bàn phím, theo như tôi có thể nói. Ngoài ra, đây là tập lệnh bắt đầu phiên của tôi: (Chạy bằng lightdm)

#!/bin/bash

setxkbmap -option ctrl:nocaps

exec openbox-session

bạn có thể đang sử dụng một số loại cấu hình bàn phím, ví dụ: chọn cách bố trí bàn phím hoặc thứ gì đó tương tự hoàn nguyên các thay đổi được áp dụng của bạn
Ulrich Dangel

Nơi khác duy nhất tôi thay đổi cấu hình bàn phím là cửa sổ tùy chọn bố trí bàn phím GUI, nơi tôi đã thay đổi phím khóa mũ để hoạt động như một ctrl bổ sung. Điều đó hoạt động tốt, trong DE quế, khóa mũ của tôi hoạt động như một ctrl ngay cả sau khi đăng nhập lại. Tôi nghĩ rằng cấu hình đó chỉ dành cho quế, nhưng tôi không chắc.
Shrikant Sharat

Làm thế nào để bạn thêm lệnh trong kịch bản tự khởi động?
pedrosaurio

Bạn có thể gửi autostarttập tin của bạn ?
pedrosaurio

Câu trả lời:


1

Tôi đã trải qua một vấn đề tương tự. Hóa ra là do ibus gây ra. Tôi chỉ cần gỡ cài đặt nó vì tôi không cần dịch vụ của nó.

Tôi đã tìm ra thủ phạm bằng cách sử dụng thủ thuật thay thế setxkbmap của bạn bằng một tập lệnh, tuy nhiên tôi cũng đã thêm vào ps -AF --forestđể xác định người gọi của setxkbmap.


0

Không biết kịch bản tự khởi động của bạn, tôi cá là bạn không sử dụng cú pháp thích hợp bằng cách để các lệnh của bạn chạy trong nền bằng cách sử dụng ký hiệu ( &).

Hãy thử chỉnh sửa .config/openbox/autostarttệp của bạn để nó trông như thế này:

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

Nếu nghi ngờ, hãy xem wiki openbox và xem tất cả các ví dụ có &sau mỗi mục.

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


Tập tin tự động khởi động của tôi là trống rỗng. Tại một thời điểm tôi đã có xmodmap ~/.Xmodmaptrong tập tin đó (không có &, dường như không cần thiết). Tôi đã gọi xmodmap(và bây giờ setxkbmap) trong tập lệnh bắt đầu phiên openbox của tôi. Ngay trước khi chạy exec openbox-session, tôi chạy setxkbmaplệnh.
Shrikant Sharat

Ngoài ra, việc thêm một sleep 1độ trễ để xmodmapáp dụng các thay đổi của nó sau khi mọi thứ khác tải, trong khi hoạt động hầu hết thời gian, không làm tôi cảm thấy quá tự tin về giải pháp. Tôi không muốn làm điều đó, nếu tôi có lựa chọn thay thế.
Shrikant Sharat

Rõ ràng bạn có thể tránh tất cả các bình luận và sleeplệnh, tuy nhiên &là cần thiết sau mỗi mục, nếu không tất cả các chương trình sau mục đầu tiên sẽ không chạy được.
pedrosaurio

Có, nếu đó là một ứng dụng / quy trình chạy dài, không thêm một ứng dụng &sẽ khiến nó bị chặn. Tôi đã sử dụng hành vi này với zenitylệnh để thấy rằng những xmodmapthay đổi của tôi đang bị ghi đè sau khi autostart kết thúc. Autostart của tôi hiện đang tăng kích thước và sẽ dán nó vào câu hỏi trong giây lát. Nó không có gì để làm với bàn phím, mặc dù.
Shrikant Sharat

Và, không có lệnh ngủ, các thay đổi được thực hiện xmodmapsẽ được ghi đè ngay sau khi tệp tự khởi động kết thúc.
Shrikant Sharat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.