Đến bữa tiệc muộn, nhưng điều này cũng khiến tôi phát điên; và, cứng đầu như tôi, từ bỏ không phải là một lựa chọn.
Về cơ bản đây là những gì tôi đã thử, (với tư cách là người dùng của tôi hoặc root nếu cần thiết)
- ~ / .Xmodmap
- ~ / .xsession, ~ / .xsessionrc
- ~ / .gnomerc
- ~ / .xprofile
- ~ / .xinitrc
- /etc/X11/Xsession.d/myscript
- /usr/share/X11/xorg.conf.d/ ( tệp cấu hình, không chạm vào nó )
(Trên thực tế, việc thêm xmodmap
lệnh để ~/.bashrc
làm việc, nhưng nó yêu cầu bắt đầu một thiết bị đầu cuối mỗi lần sau khi đăng nhập)
Một vài năm trước (?), xkb
Đã được chọn để xử lý ánh xạ và cấu hình khóa (giao tiếp với X), nhưng xmodmap
cũng có thể yêu cầu các thay đổi liên quan đến khóa đối với X, sau khi xkb
thực hiện công việc trong quá trình khởi tạo phiên X.
Vấn đề là khi nào các cài đặt xmodmap này xảy ra?
Có vẻ như các tệp trên được xử lý quá sớm trong quá trình và X chưa sẵn sàng chấp nhận thay đổi xmodmap hoặc xkb sẽ ghi đè lên chúng.
Lưu ý: Tôi đã thêm một số "theo dõi" vào các tệp này để đảm bảo chúng thực sự đang chạy vào một lúc nào đó!
Một giải pháp có vẻ hiệu quả
Tôi đã không muốn thêm một .desktop
tập tin ban đầu (một kịch bản một dòng đơn giản là đủ), nhưng nó hoạt động, vì vậy nó ở đây.
Giải pháp đến từ Làm thế nào để ánh xạ lại hoặc trao đổi các phím bàn phím đặc biệt trong Linux? "giải pháp 1"
Về cơ bản tạo ~/.config/autostart/my-xmodmap.desktop
tập tin, và đặt nó vào:
[Desktop Entry]
Name=MyXmodmap
Exec=/usr/bin/xmodmap /home/me/.Xmodmap
Terminal=false
Type=Application
X-GNOME-Autostart-enabled=true
thay thế me
bằng tên người dùng của bạn (lưu ý rằng tôi không cố gắng thử ~/
hoặc $HOME
có thể hoạt động tốt như nhau /home/me
và đường dẫn đầy đủ của xmodmap có thể không cần thiết ...) và thêm bit exec
chmod +x ~/.config/autostart/my-xmodmap.desktop
Các lệnh xmodmap phải có trong một ~/.Xmodmap
tệp trong trường hợp này (hoặc sử dụng -e
tùy chọn hoặc chọn tên tệp khác!). Đăng xuất và đăng nhập lại.
Lưu ý rằng bạn có thể tạo chương trình bắt đầu từ "Ứng dụng khởi động".
Một giải pháp khác là quên xmodmap và tìm hiểu cách định cấu hình xkb
!
Chỉnh sửa (một lần nữa)
Đôi khi, có thể 25% số đăng nhập, xmodmap
dường như vẫn không hoạt động - trong khi lệnh thực sự đang chạy (một trình theo dõi chứng minh điều đó). Kết luận duy nhất tôi có thể đi đến vào lúc này là xkb
quá trình này bị trễ trong quá trình đăng nhập và có thể kết thúc sau khi xmodmap
chạy xong. Trông giống như một điều kiện cuộc đua ... Vì vậy, cuối cùng, tôi đã thay đổi exec
dòng tệp máy tính để bàn tự động khởi động thành
Exec=$HOME/bin/mystart &
(lưu ý &
)
mystart
là một tập lệnh trong thư mục mới bin
mà tôi đã tạo có chứa
#!/bin/bash
sleep 5
/usr/bin/xmodmap /home/me/.Xmodmap &
date >> /tmp/xmodmap-has-run
và
chmod u+x ~/bin/mystart
Kịch bản ngủ 5 giây trước để chạy xmodmap và theo dõi khi nó chạy (trong tệp /tmp/xmodmap-has-run
).
Hy vọng rằng đó sẽ là tất cả!