Tại sao lệnh xmodmap của tôi không chạy khi khởi động / đăng nhập?


10

Tôi muốn chạy lệnh này mỗi lần tôi đăng nhập (hoặc mỗi lần tôi khởi động, nếu điều đó không hoạt động): xmodmap -e 'keysym Delete = Menu' -e 'keysym Menu = Delete'

Tôi đã thử nhiều thứ. Tôi đặt lệnh vào System > Preferences > Startup Applications. Tôi đặt nó trong một .shtập tin, đánh dấu nó chmod +xvà đặt tập tin đó vào System > Preferences > Startup Applications. Tôi đặt kịch bản vào /etc/init.d. Tôi đặt các lệnh vào ~/.profile. Dường như không có gì để làm việc

Cuối cùng, tôi đặt cái này vào ~/.profile:

touch test1
xmodmap -e 'keysym Delete = Menu' -e 'keysym Menu = Delete'
touch test2

Cả test1 và test2 đều được tạo, nhưng các phím vẫn không được ánh xạ lại. Nếu tôi chỉ sao chép / dán lệnh và chạy thủ công, nó hoạt động tốt. Nhưng nó sẽ không chạy khi đăng nhập. Có ý kiến ​​gì không?

Câu trả lời:


11

~/.profilechạy sớm trong chuỗi đăng nhập. Nếu môi trường máy tính để bàn của bạn cấu hình bố cục bàn phím, nó có thể ghi đè lên các cài đặt bạn vừa tải.

Đặt cài đặt của bạn trong một tệp có tên ~/.Xmodmap:

keysym Delete = Menu
keysym Menu = Delete

Trong môi trường Gnome mặc định trong Ubuntu 10.04, lần đăng nhập tiếp theo, bạn sẽ được nhắc xem có tải hay không ~/.Xmodmap. Tải nó và đánh dấu vào Đừng hỏi tôi nữa. Sau đó, bạn .Xmodmapsẽ được áp dụng sau khi cài đặt mặc định.


Cảm ơn, điều này đã làm việc hoàn hảo. Vì tò mò, làm thế nào tôi quay lại hộp thoại mà tôi đã kiểm tra "đừng hỏi tôi nữa" nếu tôi muốn một thời gian trong tương lai?
Matthew

1
@Matthew: Chưa được kiểm tra: khởi chạy gconf-editor, duyệt đến /desktop/gnome/peripherals/keyboard/generalvà chỉnh sửa known_file_listmục cần xóa .Xmodmap.
Gilles 'SO- ngừng trở nên xấu xa'

Điều này làm việc cho tôi trên Ubuntu 10.10 beta trở lại khi bạn trả lời câu hỏi này lần đầu tiên. Tôi đã cài đặt Ubuntu 10.10 mới vào ngày hôm qua và đặt một tệp .Xmodmap giống hệt nhau trong thư mục nhà của tôi. Khi tôi đăng nhập lại, tôi nhận được hộp thoại, tải .Xmodmap và đánh dấu vào ô giống như trước đây. Nhưng nó dường như không ánh xạ lại các phím. Tôi đã kiểm tra trong gconf và .Xmodmap chắc chắn nằm trong danh sách đã biết_file_list. Có ý kiến ​​gì không?
Matthew

Điều này cũng không hoạt động với tôi trên Gnome 3.10.1 / Archlinux. Tôi tự hỏi nếu một cái gì đó chưa được điều chỉnh theo thứ tự Gnome tải bố cục bàn phím.
Caleb

Đối với Gnome 3.10 không còn tải ~ / .xmodmap, tôi đã tìm thấy một giải pháp hoạt động tại bbs.archlinux.org/viewtopic.php?pid=1194968#p1194968 : tắt plugin bàn phím của Gnome. $ gsettings set org.gnome.settings-daemon.plugins.keyboard active false
plnx

2

Tôi thấy rằng ở vị trí trong Gconf-Editor được đề cập ở trên, tên của bố cục bàn phím đã sửa đổi của bạn sẽ xuất hiện hai lần, một lần trong "know_file_list" và một lần trong "update_handlers". Về lý do tại sao Ubuntu đôi khi đưa vào mục sau và đôi khi không ... tốt, nó giữ bạn ở trên đầu, phải không?

Ngẫu nhiên, sau rất nhiều nghiên cứu, tôi đã sử dụng tinh chỉnh trên để gán lại phím Windows trái. Tôi đặt câu lệnh sau trong bố trí bàn phím của riêng mình để làm cho nó trùng lặp phím Mũi tên trái: -

mã khóa 133 = 0xFF51

(Kiểm tra xem đó có phải là những mã phù hợp với bạn không bằng cách vào xev và nhấn phím đầu tiên sau đó nhấn phím kia.)

Đó chỉ là một điểm nhỏ, nhưng trong khi tôi đang truy cập Internet, nó cung cấp cho tôi phím "Quay lại" tiện lợi - Alt + Win bằng tay trái. Tôi có thể làm điều đó mà không cần nhìn.


1
Alan đã viết: "Tôi thấy rằng ở vị trí trong Gconf-Editor được đề cập ở trên, tên của bố cục bàn phím đã sửa đổi của bạn sẽ xuất hiện hai lần, một lần trong" know_file_list "và một lần dưới" update_handlers "." Tôi có thể xác nhận rằng Alan là chính xác. Trong Ubuntu 10.10, để tệp ~ / .Xmodmap của bạn có hiệu lực, ".Xmodmap" phải xuất hiện trong cả danh sách "know_file_list" và "update_handlers" trong / desktop / gnome / thiết bị ngoại vi / bàn phím / chung trong gconf -Giải viên. Cảm ơn, Alan.

1

Một số hệ thống tìm kiếm một tệp có tên ~/.Xmodmapvà thực hiện các lệnh được tìm thấy ở đó. Hãy thử đặt những dòng này trong tập tin đó:

keysym Delete = Menu
keysym Menu = Delete
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.