Tại sao không tải tập tin ~ / .Xmodmap của tôi khi đăng nhập?


16

Tôi đã tạo các ~/.Xmodmaptập tin sau theo câu trả lời này .

keysym Delete = Menu
keysym Menu = Delete

clear Lock
keycode 0x42 = Escape

Nói cách khác, trao đổi DeleteMenu, và thực hiện Caps Lockbổ sung Escape.

Lần sau khi tôi đăng nhập, Ubuntu hỏi tôi có muốn tải ~/.Xmodmapnhư mong đợi không. Tôi đã tải nó, nhưng không có gì xảy ra (sau đó hoặc trong các lần đăng nhập tiếp theo). Nếu tôi tự chạy xmodmap ~/.Xmodmap, nó hoạt động như mong đợi.

Tôi biết rằng điều này đã hoạt động sớm trong bản 10.10 beta, nhưng nó đã thất bại trong bản cài đặt 10.10 mới của tôi. Tôi đã không thử bất cứ điều gì sớm hơn 10.10. Có ý kiến ​​gì không?

Chỉnh sửa: Tôi đặt một số câu lệnh gỡ lỗi /etc/gdm/Xsessionđể đảm bảo ~/.Xmodmaptải và mọi thứ bắt đầu hoạt động một cách kỳ diệu. Tôi đã không thay đổi bất cứ điều gì ngoại trừ thêm một số tiếng vang và bây giờ nó vẫn hoạt động khi tôi hoàn nguyên các thay đổi của mình và khởi động lại. Điều kỳ lạ nhất tôi từng thấy.

Một điều tôi nhận ra là phần "Remap Caps Lock to Escape" trong Xmodmap luôn hoạt động. Đó chỉ là trao đổi Xóa / Menu không thành công. Bây giờ tôi sẽ để câu hỏi này mở trong trường hợp bất kỳ ai khác có cùng vấn đề, vì tôi thực sự không biết tại sao vấn đề lại dừng lại.


Tôi đang gặp vấn đề tương tự bản thân mình, đã khiến tôi phát điên. Nếu tôi tìm ra nguyên nhân tôi chắc chắn sẽ đăng câu trả lời.
Jorge Israel Peña

Câu trả lời:


11

Tôi biết điều đó thật ngớ ngẩn nhưng như một cách giải quyết, bạn chỉ có thể tự khởi động xmodmap ~/.Xmodmap.

Ngoài ra, bạn có thể kiểm tra /etc/gdm/Xsessiondòng usermodmap="$HOME/.Xmodmap"và nếu nó không ở đó, chỉ cần thêm nó vào cuối tập tin. Nếu bạn là người dùng duy nhất của hệ thống, hãy thay đổi /etc/X11/Xmodmap.


2
Làm thế nào để bạn "tự khởi động" các lệnh?
Miguel.martin

Xem Tự động khởi động . Đơn giản nhất có lẽ là chỉ cần thêm một mục vào Settings->Session and Startup, hoặc một cái gì đó dọc theo những dòng đó.
Mateen Ulhaq

Hoặc ví dụ, thêm nó vào shell của bạn, vì vậy nếu bạn mở shell thường xuyên thì nó sẽ chạy nó. Điều đầu tiên tôi làm khi tôi vào Gnome là mở một cái vỏ hầu hết thời gian, vì vậy đó là một cách hoạt động.
trusktr

3

Đế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 xmodmaplệnh để ~/.bashrclà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 xmodmapcũng có thể yêu cầu các thay đổi liên quan đến khóa đối với X, sau khi xkbthự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?
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 .desktoptậ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.desktoptậ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ế mebằ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 $HOMEcó thể hoạt động tốt như nhau /home/mevà đườ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 ~/.Xmodmaptệp trong trường hợp này (hoặc sử dụng -etù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, xmodmapdườ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à xkbquá trình này bị trễ trong quá trình đăng nhập và có thể kết thúc sau khi xmodmapchạ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 execdòng tệp máy tính để bàn tự động khởi động thành

Exec=$HOME/bin/mystart &

(lưu ý &) mystartlà một tập lệnh trong thư mục mới binmà tôi đã tạo có chứa

#!/bin/bash    
sleep 5
/usr/bin/xmodmap /home/me/.Xmodmap &
date >> /tmp/xmodmap-has-run

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ả!


Chỉnh sửa xkb confituration làm việc cho tôi: Askubfox.com/a/1090892/1021380
postrational

2

Đây có lẽ là một câu trả lời tốt hơn sau đó: http://cweiske.de/howto/xmodmap/ar01s06.html

Bạn có thể phải điều chỉnh nó một chút để làm việc cho bạn nhưng các hướng dẫn đều có ở đó.


1
Hướng dẫn này dành cho KDE, nhưng nếu tôi nhìn vào tương đương Gnome ( /etc/gdm/Xsession), các dòng liên kết nói thêm đã có trong đó.
Matthew

2

Có lẽ bạn có một lỗi cú pháp trong ~/.Xmodmaptập tin của bạn ?

Hãy thử chạy:

$ xmodmap ~/.Xmodmap

Điều đó sẽ gây ra lỗi nếu có.


0

Tôi gặp vấn đề kỳ lạ tương tự, cố gắng khởi động Xmodmap của mình trong khi đăng nhập vào phiên của tôi (ubfox 13.04). Cuối cùng tôi đã làm cho nó hoạt động với một tệp .xinitrc trong thư mục Home của tôi nơi tôi đặt lệnh của mình, nhưng với các đường dẫn tuyệt đối đến nó, đó là:

/ usr / bin / xmodmap /home/MYNAME/.Xmodmap

Sau đó, tôi phải khởi động lại (không chỉ là relog) để nó được thực thi.


2
Điều này không hoạt động trong Ubuntu 14.04, đối với tôi.
Miguel.martin
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.