Làm cách nào để đặt Xmodmap khi đăng nhập?


46

Vì bố cục bàn phím không phù hợp với tôi, tôi chạy xmodmapđăng nhập. Kịch bản được đặt tên .profilevà nó chạy OK, nhưng nó phá vỡ giao diện Unity.

Tôi muốn biết nơi để đặt các xmodmapdòng để nó thực thi trên đăng nhập của tôi và không phá vỡ bất cứ điều gì.

Tôi đã thử đặt nó vào .bash_login.bash_profilecác tệp, nhưng không thành công ( xmodmapkhông đặt bàn phím của tôi).

Những lựa chọn của tôi là gì?


4
Làm thế nào để nó phá vỡ giao diện thống nhất?
djeikyb

1
Tôi muốn thêm rằng nếu thời gian thực hiện xmodmap của bạn quá dài, bạn nên xóa tất cả các mục mà bạn không sửa đổi bằng tay. Chỉ giữ lại những thay đổi trong tệp đầu vào của bạn sẽ giúp xmodmap chạy nhanh hơn nhiều.
dùng1071575

Câu trả lời:


29

Các địa điểm chính xác để đưa xmodmap ~/.Xmodmap(để thay đổi của bạn được đọc lúc khởi động) nằm trong ~/.xinitrc(xem giải thích bên dưới), mặc dù bạn có thể đặt xen kẽ các xmodmaplệnh như là một mục khởi động ( /usr/bin/xmodmap /home/user/.Xmodmap). Tôi có thể nói rằng trong 12.04 (và có lẽ là 12.10), hai lựa chọn thay thế này chắc chắn có tác dụng, như cách chúng được đọc sau khi bạn đăng nhập lightdm. (Tôi đã thay đổi Return to Right Shift và thay đổi chỉ có hiệu lực sau khi nhập mật khẩu và đăng nhập).

Xin lưu ý: nếu bạn đang sử dụng Xfce, lưu ý trên Câu hỏi thường gặp về Xfce chính thức là bạn có thể phải tạo một mục khởi động thay vì sử dụng ~/.xinitrcvà bạn có thể phải trì hoãn việc thực hiện để những xmodmapthay đổi không bị ghi đè setxkbmap. Bạn có thể sử dụng độ trễ để đạt được điều này trong mục khởi động của mình:

/bin/bash -c "sleep 20; /usr/bin/xmodmap /home/$USER/.Xmodmap"

(Đối với mục khởi động, cần chỉ định đường dẫn tuyệt đối)

Mỗi lần setxkbmapchạy để thay đổi bố cục bàn phím, bạn sẽ phải chạy xmodmap ~/.Xmodmaplại trong thiết bị đầu cuối.

Tạo ~/.xinitrc

Tạo một tập tin trong thư mục nhà của bạn được gọi .xinitrcvới

touch .xinitrc

và đặt vào đó:

xmodmap ~/.Xmodmap

Tệp của bạn khôngXmodmap nên có các mục theo kiểu như được sử dụng trong thiết bị đầu cuối để tạm thời đặt các giá trị. Nó phải có các mục trong định dạng này:xmodmap -e " "

keycode 65 = Tab
keycode 23 = Space

Nó thường gây nhầm lẫn trong số các Xtệp khác nhau (chẳng hạn như .xprofile, .xinitrcv.v.) được đọc khi khởi động, nhưng .xinitrcdường như vẫn được đọc theo 12.04, trong khi .Xmodmaphoặc .xinputrckhông tự đọc được.


5
Lưu ý rằng nếu bạn thực hiện các thay đổi của mình xmodmap -e '..., bạn có thể truy xuất định dạng phù xmodmap .Xmodmaphợp với xmodmap -pke, in ra ánh xạ hiện tại - mặc dù bạn sẽ muốn lọc nó xuống chỉ các dòng áp dụng cho thay đổi bạn đã thực hiện.
Barry Kelly

1
Điều này đã không làm việc cho tôi. Tôi đã tạo .Xmodmap và .xinitrc | Sau đó, tôi đã đặt xmodmap ~ / .Xmodmap vào .xinitrc Và sau đó bên trong .Xmodmad Tôi có mã khóa 166 = Mã khóa trước 167 = Tiếp theo
Miguelmorales85

.xinitrc dường như không được khởi chạy tự động nữa trong Ubuntu 17.10. Bạn sẽ phải tự động kích hoạt nó bằng lệnh này: / bin / bash -c "ngủ 15 && /home/USERNAME/.xinitrc"
thebunnyrules

9

Tôi đang sử dụng PrimaryOS (với trình quản lý cửa sổ dựa trên Gnome) và tìm thấy giải pháp thông qua việc sử dụng xdgcác tập lệnh tự khởi động. Nhiều người quản lý cửa sổ đang sử dụng xdg nên tôi cho rằng phương pháp này cũng sẽ hoạt động trong các môi trường khác. Ít nhất nó nên hoạt động với Gnome.

xdg chạy tập lệnh ~/.config/autostartkhi đăng nhập trong phiên X. Để tải cấu hình xmodmap khi đăng nhập, hãy thêm đoạn mã sau vào ~/.config/autostart/xmodmap.desktop:

[Desktop Entry]
Name[en_US]=Xmodmap
Comment[en_US]=xmodmap ~/.Xmodmap
Exec=/usr/bin/xmodmap .Xmodmap
Icon=application-default-icon
X-GNOME-Autostart-enabled=true
Type=Application

Sau đó đăng xuất và đăng nhập lại, và cấu hình Xmodmap của bạn đã được tải.

Nếu nó không hoạt động, hãy thử chạy xmodmap trong terminal để xem xmodmap có phàn nàn không:

$ xmodmap ~/.Xmodmap

Nếu bạn không gặp phải bất kỳ lỗi nào, hãy chạy lệnh sau để gỡ lỗi:

$ sudo cat /var/log/syslog | grep -B 5 -A 5 xmodmap

Trên Linux Mint 17 (dựa trên: Ubuntu 14.04.5), phương pháp tự động khởi động đã hoạt động hoàn hảo với tôi sau khi sử dụng ~/.xinitrctệp không thành công. Như hxpax đã chỉ ra, người dùng Mint (có thể là hầu hết / tất cả các Linux có nguồn gốc Debian) có thể sử dụng hộp thoại GUI để thêm các mục tự động bắt đầu bằng cách Main Menu --> Preferences --> Startup Applications.
mattst

2
Đã hoạt động trên Ubuntu 18.04
TooTone

2

Tôi không có giao diện thống nhất trước mặt tôi, nhưng hãy thử nhấp vào nút Ứng dụng trên trình khởi chạy, sau đó nhập khởi động. Cần có một ứng dụng gọi là Ứng dụng khởi động (hoặc một số như vậy). Nhấp vào nó và thêm lệnh xmodmap của bạn (ví dụ xmodmap /home/thiago/.Xmodmap).


Tôi đã thử điều đó một thời gian trước nhưng nó không thành công với tôi. Tôi đang ở trên cửa sổ ngay bây giờ nhưng tôi sẽ thử lại sau và tôi sẽ báo cáo ở đây nếu nó hoạt động. thx
Thiago Moraes

2
@Thiago Moraes Lệnh cơ bản này có hoạt động không (nếu không, đăng lỗi)? xmodmap .Xmodmap
djeikyb

+1 cái này không hoạt động. Để rõ ràng hơn, tôi đã sử dụng đường dẫn đầy đủ cho .Xmodmap
pwned

3
cái này không hoạt động Tôi đang sử dụng 16.04
Miguelmorales85

@ Miguelmorales85 lệnh cơ bản có hoạt động trong thiết bị đầu cuối của bạn không? Bạn đã thử sử dụng một con đường tuyệt đối?
djeikyb

2

Trên Mint 17/18, tôi có thể đạt được điều đó khi đưa các tập lệnh của mình vào Ứng dụng khởi động, với độ trễ 1 giây.

Vì Mint 18 có nguồn gốc từ Ubuntu 1604, tôi nghĩ bạn có thể làm tương tự hoặc cài đặt bảng quản lý Ứng dụng Khởi động trước nếu không có.

Hy vọng nó giúp.


+1 Hoạt động tốt. Tôi không cần trì hoãn trên Linux Mint 17.
mattst

@mattst Vâng, sự chậm trễ là tùy chọn.
hxpax

Tôi cần độ trễ 5 giây để làm việc này. Do đó, tôi đã sử dụng tập lệnh shell khởi động sau: gist.github.com/ghagerer/58212241e37229f9d6fe3a133b34be97
Gerhard Hagerer

0

Tôi không có nhiều niềm vui với bất kỳ đề xuất nào ở trên (tùy chọn .bashrc không thực sự khả thi vì nó chạy xmodmap trên mọi thiết bị đầu cuối mới)

Tôi đã chạm vào một tập lệnh được gọi xmodstartup.shtrong thư mục nhà của tôi

  #!/bin/bash           
  sleep 1;               
  echo "running xmodmap" 
  xmodmap ~/.Xmodmap     

với nó được lưu, sau đó tôi đã làm sudo chmod +x xmodstartup.sh

sau đó tôi chỉ cần thêm tệp thực thi vào cửa sổ "tùy chọn ứng dụng khởi động" của gnome. bish bosh, bố trí tiếng Anh y Español trên altgr:)


-1

Đưa các thay đổi xmodmap vào ~/.bashrchoặc /etc/bash.bashrckhông phá vỡ bất cứ điều gì.

Nhược điểm duy nhất là người ta phải mở một thiết bị đầu cuối sau mỗi lần khởi động để kích hoạt nó.


3
Tôi đã làm điều đó, nhưng vấn đề là ở mỗi thiết bị đầu cuối tôi mở, lệnh này sẽ được thực thi. Chỉ là một khoảnh khắc nhưng nó hơi khó chịu và tôi thích một giải pháp thực sự. dù sao đi nữa
Thiago Moraes
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.