Bagaimana cara mengatur Xmodmap saat login?

46

Karena tata letak keyboard saya tidak cocok untuk saya, saya menjalankan xmodmaplogin. Script tersebut dinamai .profiledan dijalankan OK, tetapi ia merusak antarmuka Unity.

Saya ingin tahu di mana harus meletakkan xmodmapgaris sehingga dieksekusi pada login saya dan tidak merusak apa pun.

Saya sudah mencoba meletakkannya di file .bash_logindan .bash_profile, tanpa hasil ( xmodmaptidak mengatur keyboard saya).

Apa saja pilihan saya?

Thiago Moraes
sumber
4
Bagaimana cara memutus antarmuka persatuan?
djeikyb
1
Saya ingin menambahkan bahwa jika waktu eksekusi xmodmap Anda terlalu lama, Anda harus menghapus semua entri yang tidak Anda modifikasi dengan tangan. Hanya menyimpan perubahan pada file input Anda akan membuat xmodmap berjalan lebih cepat.
user1071575

Jawaban:

29

Tempat yang tepat untuk menempatkan xmodmap ~/.Xmodmap(agar perubahan Anda dibaca saat startup) ada di ~/.xinitrc(lihat penjelasan di bawah), meskipun Anda dapat menempatkan xmodmapperintah secara bergantian sebagai item startup ( /usr/bin/xmodmap /home/user/.Xmodmap). Saya dapat mengatakan bahwa untuk 12,04 (dan mungkin 12.10) bahwa kedua alternatif ini benar-benar berfungsi, karena keduanya dapat dibaca setelah Anda masuk lightdm. (Saya mengubah Return to Right Shift , dan perubahan hanya berlaku setelah memasukkan kata sandi dan masuk).

Harap dicatat: jika Anda menggunakan Xfce, dicatat di FAQ Xfce resmi bahwa Anda mungkin harus membuat item startup alih-alih menggunakan ~/.xinitrc, dan bahwa Anda mungkin harus menunda eksekusi sehingga xmodmapperubahan tidak ditimpa oleh setxkbmap. Anda dapat menggunakan penundaan untuk mencapai hal ini dalam entri startup Anda:

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

(Untuk entri startup perlu menentukan jalur absolut)

Setiap kali setxkbmapdijalankan untuk mengubah tata letak keyboard, Anda harus menjalankan xmodmap ~/.Xmodmaplagi di terminal.

Menciptakan ~/.xinitrc

Buat file di folder rumah Anda dipanggil .xinitrcdengan

touch .xinitrc

dan letakkan di dalamnya:

xmodmap ~/.Xmodmap

XmodmapFile Anda seharusnya tidak memiliki entri dalam xmodmap -e " "gaya seperti yang digunakan di terminal untuk pengaturan nilai sementara. Itu harus memiliki entri dalam format ini:

keycode 65 = Tab
keycode 23 = Space

Hal ini sering membingungkan yang dari berbagai Xfile (seperti .xprofile, .xinitrc, dll) dibaca pada saat startup, tetapi .xinitrctampaknya akan masih dibaca di bawah 12,04, sedangkan .Xmodmapatau .xinputrctidak dibaca oleh diri mereka sendiri.


sumber
5
Catatan bahwa jika Anda membuat perubahan dengan xmodmap -e '..., Anda dapat mengambil format yang tepat untuk xmodmap .Xmodmapdengan xmodmap -pkeyang print pemetaan saat ini - meskipun Anda akan ingin untuk menyaring bawah ini hanya garis yang berlaku untuk perubahan yang dibuat.
Barry Kelly
1
Ini tidak berhasil untuk saya. Saya telah membuat .Xmodmap dan .xinitrc | Kemudian saya menempatkan xmodmap ~ / .Xmodmap ke dalam .xinitrc Dan kemudian di dalam .Xmodmad saya memiliki kode kunci 166 = Kode kode sebelumnya 167 = Selanjutnya
miguelmorales85
itu .xinitrc sepertinya tidak akan diluncurkan secara otomatis lagi di Ubuntu 17.10. Anda harus menjalankannya secara otomatis dengan perintah ini: / bin / bash -c "sleep 15 && /home/USERNAME/.xinitrc"
thebunnyrules
9

Saya menggunakan ElementaryOS (dengan manajer jendela berbasis GNOME) dan menemukan solusi melalui penggunaan xdgskrip autostart. Banyak manajer jendela menggunakan xdg jadi saya menganggap pendekatan ini juga akan bekerja di lingkungan lain. Setidaknya itu harus bekerja dengan GNOME.

xdg menjalankan skrip ~/.config/autostartsaat masuk dalam sesi X. Untuk memuat konfigurasi xmodmap saat login, tambahkan skrip berikut ke ~/.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

Kemudian logout dan login lagi, dan konfigurasi Xmodmap Anda seharusnya sudah dimuat.

Jika tidak berfungsi, coba jalankan xmodmap di terminal untuk melihat apakah xmodmap yang bermasalah:

$ xmodmap ~/.Xmodmap

Jika Anda tidak mendapatkan kesalahan, jalankan perintah berikut untuk debug:

$ sudo cat /var/log/syslog | grep -B 5 -A 5 xmodmap
kontrollanten
sumber
Di Linux Mint 17 (berdasarkan: Ubuntu 14.04.5) pendekatan mulai otomatis bekerja sempurna untuk saya setelah menggunakan ~/.xinitrcfile gagal. Seperti yang ditunjukkan oleh hxpax, pengguna Mint (mungkin sebagian besar / semua Linux yang diturunkan Debian) dapat menggunakan dialog GUI untuk menambahkan entri mulai otomatis dengan cara Main Menu --> Preferences --> Startup Applications.
Mattst
2
Bekerja ubuntu 18,04
TooTone
2

Saya tidak memiliki antarmuka persatuan di depan saya sekarang, tetapi coba klik tombol Aplikasi pada peluncur, lalu ketik startup. Seharusnya ada aplikasi yang disebut Aplikasi Startup (atau semacamnya). Klik dan tambahkan perintah xmodmap Anda (mis xmodmap /home/thiago/.Xmodmap.).

djeikyb
sumber
Saya mencobanya beberapa waktu yang lalu tetapi tidak berhasil untuk saya. Saya di windows sekarang, tetapi saya akan coba lagi nanti dan saya laporkan di sini jika berfungsi. thx
Thiago Moraes
2
@Thiago Moraes Apakah perintah dasar ini berfungsi (jika tidak, kirim kesalahan)? xmodmap .Xmodmap
djeikyb
+1 ini berfungsi. Untuk lebih eksplisit saya menggunakan path lengkap untuk .Xmodmap
pwned
3
ini tidak bekerja. Saya menggunakan 16,04
miguelmorales85
@ miguelmorales85 apakah perintah dasar berfungsi di terminal Anda? apakah Anda mencoba menggunakan jalur absolut?
djeikyb
2

Pada Mint 17/18, saya dapat mencapai itu tetapi menempatkan skrip saya ke dalam Aplikasi Startup, dengan penundaan 1 detik.

Karena Mint 18 berasal dari Ubuntu 1604, saya pikir Anda dapat melakukan hal yang sama, atau menginstal panel pengelola Aplikasi Startup terlebih dahulu jika tidak ada.

Semoga ini bisa membantu.

hxpax
sumber
+1 Bekerja dengan baik. Saya tidak membutuhkan penundaan di Linux Mint 17.
mattst
@mattst Ya, penundaan adalah opsional.
hxpax
Saya perlu penundaan 5 detik agar ini berfungsi. Karena itu saya menggunakan skrip startup shell berikut: gist.github.com/ghagerer/58212241e37229f9d6fe3a133b34be97
Gerhard Hagerer
0

Saya tidak memiliki banyak kegembiraan dengan salah satu saran di atas (opsi .bashrc tidak benar-benar layak karena menjalankan xmodmap di setiap terminal baru)

Saya menyentuh naskah yang disebut xmodstartup.shdi folder rumah saya

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

dengan itu disimpan, saya kemudian melakukannya sudo chmod +x xmodstartup.sh

maka saya cukup menambahkan file yang dapat dieksekusi ke jendela "preferensi aplikasi startup" gnome. bish bosh, tata letak bahasa Inggris dan Español aktif altgr:)

Jay Edwards
sumber
-1

Membuat xmodmap berubah ~/.bashrcatau /etc/bash.bashrctidak merusak apa pun.

Satunya downside adalah bahwa seseorang harus membuka terminal setelah setiap boot untuk mengaktifkannya.

Rasmus
sumber
3
Saya sudah melakukan itu, tetapi masalahnya adalah bahwa pada setiap terminal yang saya buka, perintah ini dijalankan. Ini hanya sesaat tapi sedikit mengganggu dan saya lebih suka solusi nyata. thx toh
Thiago Moraes