Bagaimana saya dapat terus memetakan kunci di Ubuntu 16.04?

23

Ini berfungsi untuk sesi saat ini:

costales@dev:~/Desktop$ xmodmap -e "keycode 166 = less"
costales@dev:~/Desktop$ xmodmap -e "keycode 167 = greater"

Kemudian saya membuat file konfigurasi ini:

costales@dev:~/Desktop$ cat ~/.Xmodmap 
keycode 166 = less
keycode 167 = greater
costales@dev:~/Desktop$ 

Tapi itu tidak berfungsi setelah reboot. Bagaimana saya bisa memaksa remap agar selamat dari reboot?

Costales
sumber
Jawab saja menggunakan xkbdi sini: askubuntu.com/a/960097/554991 .
danwild

Jawaban:

15

Saya telah menggunakan 16,04 untuk sedikit dan tampaknya menggunakan sddm sebagai manajer desktopnya. Dulu LightDM dan GDM sebelumnya. Kedua pendahulunya didokumentasikan untuk memuat ~/.Xmodmapsecara otomatis tetapi saya tidak dapat menemukan apa pun yang secara eksplisit mengatakan bahwa sddm tidak.

Karena itu mungkin disarankan untuk memaksanya memuat dengan skrip baru. Anda hanya perlu menjalankan xmodmap ~/.Xmodmapdan Anda dapat melakukannya dengan sejumlah cara:

  • Menambahkannya melalui alat start up grafis
  • Mengedit ~/.xinitrcuntuk menjalankannya.
  • Menambahkan .desktopkonfigurasi baru~/.config/autostart/

Mungkin ada beberapa lusin cara lain untuk mengelola ini, pada dasarnya melakukan hal yang sama.

Oli
sumber
2
Terima kasih atas tipnya! Tambahkan untuk memulai tidak bekerja dan ~ / .xinitrc tidak keluar. Tetapi tambahkan "xmodmap ~ / .Xmodmap" ke ~ / .bashrc berfungsi! :)
Costales
1
Menambahkannya melalui alat bantu start grafis (yang membuat entri baru ~/.config/autostart) berfungsi hampir separuh waktu. Saya telah reboot sekitar 10 kali sekarang dan 5 kali perintah telah dieksekusi dan 5 kali lainnya belum. :-(
Alexander Rechsteiner
1
@Alexander Rechsteiner: Ini tampaknya menjadi masalah di Ubuntu 16.04. Saya telah mengutak-atik perintah startup dan remapping kunci, dan perilaku itu tampaknya sangat tidak konsisten. Saya bukan ahli dalam hal semacam ini, tetapi tampaknya benar-benar konyol untuk hal itu terjadi ...
nicorellius
6

Saya menambahkan file /etc/X11/Xsession.d/80_xmodmapdengan konten ini:

#!/bin/sh
# Set custom keycodes
#
# This file is sourced by Xsession(5), not executed.
# The "|| true" is to ensure that the Xsession script does not terminate on error

USRMODMAP="$HOME/.Xmodmap"

if [ -x /usr/bin/xmodmap ]; then
        if [ -f "$USRMODMAP" ]; then
                /usr/bin/xmodmap "$USRMODMAP" || true
        fi
fi

Ini berfungsi setiap saat.

Stuart K. Smith
sumber
Tampaknya berfungsi tetapi ini adalah pesan yang saya dapatkan di .xsessions-errors: .Xmodmap: 1: keysym buruk dalam menghapus daftar pengubah 'Caps_Lock', tidak ada kode kunci yang sesuai ini .Xmodmap: $ cat .Xmodmap remove Lock = Caps_Lock keycode 9 = Escape kode kunci 66 = Escape
MaikoID
4

buka gnome-session-properties. tambahkan perintah dan nama. file desktop akan dibuat di ~ / .config / autostart.

remenber: gunakan path absolut , misalnya / home /xxx/.Xmodmap. jangan pernah menggunakan '~' sebagai dir home Anda.

eexpress utopis
sumber
2

Dalam pengalaman panjang saya dengan remapping kunci di Ubuntu, solusi permanen adalah dengan memodifikasi file bernama evdevdalam /usr/share/X11/xkb/keycodes.

Jalankan perintah ini di command prompt.

sudo gedit /usr/share/X11/xkb/keycodes/evdev

Ingat gedit adalah editor teks Ubuntu sehingga Anda dapat menggunakan nano atau vim daripada gedit.

File ini dalam format: ALIAS: CODE. Anda dapat bertukar tombol dengan menukar kode kunci yang berbeda. Misalnya, untuk menukar RCONTROL dengan RETURN, edit dua baris di evdev ke dalam ini:

<RTRN> = 105;

<RCTL> = 36;

Untuk mengetahui kode angka untuk suatu tombol dijalankan xevdi terminal.

Rujuk ke dokumentasi untuk informasi lebih lanjut. https://buildmedia.readthedocs.org/media/pdf/python-evdev/latest/python-evdev.pdf

Gilbert
sumber
1

Navigasi ke

/usr/share/X11/xkb/symbols

Dengan hak istimewa sudo, dalam editor, buka tata letak yang ingin Anda edit. Ganti nilainya.

Setelah reboot, perubahan akan diterapkan.


Berikut adalah contoh yang saya gunakan untuk memetakan ulang keypad saya karena masalah hardware keyboard.

contoh keypad remap

gemetar
sumber
2
Pengeditan tersebut akan ditimpa pada saat berikutnya paket yang memiliki file-file tersebut ditingkatkan.
muru
Itu mungkin benar, tetapi saya ragu ini secara khusus sangat sering diperbarui. Saya telah puas dengan solusi ini selama beberapa bulan sejak saya memecahkan masalah ini dan tidak sekali pun saya harus melakukan sesuatu yang tambahan. Dan untuk mencegahnya, Anda dapat menyimpan file dan menggantinya jika terjadi peristiwa seperti itu atau, (yang tampaknya lebih aman) buat ulang prosesnya.
quaeched
1

Setelah mencari di Google, saya bisa menyelesaikan memetakan kunci laptop saya yang salah. Semua kunci yang salah pada Thinkpad T400 saya berfungsi dengan baik setelah memetakan kembali. Juga, ini permanen tanpa beban tambahan pada inti CPU.

  • Pertama temukan layout keyboard Anda atau kode kunci menggunakan perintah di bawah ini.

    xevv -event keyboard 
    
  • Misalnya, pada kode kunci Thinkpad T400 saya ditemukan sebagai berikut:

    Keycode of "z" key is 52
    Keycode of "x" key is 53
    Keycode of "c" key is 54
    Keycode of "v" key is 55
    Keycode of "F6" key is 72
    Keycode of "F10" key is 76
    Keycode of "F11" key is 95
    Keycode of "F12" key is 96 
    
  • Memetakan kembali kunci karakter "z" "x" "c" "v" dengan menetapkan tombol fungsi "F6" "F10" "F11" "F12".

  • Ubah baris seperti di bawah ini (Cadangkan file sebelum membuat perubahan untuk mengembalikan dengan mudah jika terjadi kesalahan).

    sudo vi /usr/share/X11/xkb/keycodes/evdev
    
  • Temukan garis dan ubah nilainya seperti di bawah ini:

    <AB01> = 72;
    <AB02> = 76;
    <AB03> = 95;
    <AB04> = 96;
    
  • Komentari baris ini atau hapus baris:

    //  <FK06> = 72;
    //  <FK10> = 76;
    //  <FK11> = 95;
    //  <FK12> = 96;
    
  • Simpan dan keluar.

  • Memetakan kembali kunci khusus.

  • Cadangkan file sebelum membuat perubahan untuk mengembalikan jika terjadi kesalahan.

    cd /usr/share/X11/xkb/symbols/
    
    sudo vi pc
    
  • Tambahkan atau ubah baris di bawah ini dalam fungsi "xkb_symbols" editing "{"

    key [SCLK] {    [  Prior        ]   };
    key [PAUS] {    [  Next         ]   };
    
  • Simpan dan keluar.

  • Kosongkan cache.

    sudo rm -rf /var/lib/xkb/*
    
  • Mulai ulang.

Sanalgoritma
sumber
Saya memetakan kembali tombol panah (kursor) yang rusak ke kunci lain menggunakan teknik ini. Cukup (xev) dan tekan tombol baru untuk mendapatkan kode kunci, lalu edit / usr / share / X11 / xkb / kode kunci / evdev untuk mengganti kode kunci asli tombol panah dengan kode kunci baru dan untuk menghapus baris tombol panah baru dengan kode kunci aslinya. scancode. Saya berkomentar di mana pun saya melakukan perubahan dan menyimpan cadangan file. Setelah reboot berfungsi dengan baik, termasuk kombinasi shift / ctrl / alt dengan tombol panah baru. Dan perubahan harus dibiarkan tetap ada bahkan ketika meningkatkan paket dan peningkatan versi OS.
Matius
1

Editor Grafis

gnome-tweaks > Keyboard & Mouse> Opsi Tata Letak Tambahan

Peta Kunci

Jonathan
sumber
0

Karena file .Xmodmap jauh lebih mudah diedit daripada xkb, saya menggunakan .Xmodmap sebagai file 'sumber', kemudian mengonversinya menjadi xkb (standar saat ini) dan memuat secara otomatis saat boot menggunakan metode .bashrc.

Ini beberapa langkah sederhana yang diposting di sini .

Berfungsi dengan sempurna, dan menggunakan xkb yang tahan terhadap bukti saat dukungan untuk .Xmodmap dijatuhkan.

u2n
sumber