Pertanyaan Bagaimana cara memetakan ulang kunci atau perangkat tertentu?


Saya mencari cara untuk memetakan kembali kunci tertentu di ubuntu.

yaitu

Saya ingin berubah PgUp untuk Rumah atau PgDown untuk Akhir.

Apakah perintah built-in atau alat ada tombol penugasan kembali di Ubuntu / GNOME?


214
2018-02-05 13:20


asal


checkout jawaban saya sini. Tidak ada gunanya menyalin dan menempel jawaban yang sama. Mungkin itu akan membantu Anda. - Rahul Virpara
Any Emacs-seperti binding di sini untuk CTRL-P / N untuk langkah-langkah unit? - Léo Léopold Hertz 준영
Sejak beberapa waktu xmodmap dilepaskan! untuk mendapatkan pengaturan lebar sistem yang harus Anda gunakan xkb. Jadi edit file bahasa di /usr/share/X11/xkb/symbols/ untuk menambahkan perubahan Anda di sana. Lihat askubuntu.com/a/898462/34298 - rubo77


Jawaban:


Melihat: Pada 2013, Ubuntu dan turunannya tidak lagi digunakan xmodmap, tetapi gunakan xkb. Untuk informasi lebih lanjut, lihat jawaban ini. Jawaban di bawah tidak lagi relevan untuk rilis saat ini.


Untuk memetakan kembali kunci tertentu, Anda membutuhkan dua alat. Pertama xev (alat baris perintah) dan kedua xmodmap (juga alat baris perintah). Keduanya harus tersedia di Ubuntu tanpa perlu menginstalnya lagi.

  1. Mulai jendela terminal dan jalankan xev. Sekarang aktif dan menunggu Anda menekan tombol. Kemudian tekan kunci yang perilakunya ingin Anda ubah. yaitu PgUp.

  2. xev akan menampilkan beberapa informasi tentang tombol yang ditekan. Baris ketiga penting. Seharusnya terlihat mirip dengan:

    state 0x10, keycode 110 (keysym 0xff55, Prior), same_screen YES,
    

    dalam contoh ini Prior adalah nama tingkah laku yang diberikan kunci untuk saat ini, nomor kuncinya adalah id internal untuk mengenali kunci. Sekarang lakukan ini dengan kunci lain yaitu PgDown berikan output ini

    state 0x10, keycode 115 (keysym 0xff56, Next), same_screen YES,
    

    Di sini lagi bagian yang menarik bagi kita adalah keycode 115 dan Next - nama tingkah laku.

  3. sekarang ketika Anda ingin menukar dua tombol digunakan xmodmap.

     xmodmap -e "keycode 110 = Next"
    

    Ini mengubah kunci dengan keycode 110 pada keyboard Anda ke aksi Next. Ini sangat sederhana.

    Perhatikan bahwa jika kunci yang Anda petakan harus memiliki arti yang berbeda ketika digunakan dengan Bergeser kunci (misalnya untuk layout keyboard Inggris, Bergeser+2 memberikan tanda kutip) maka Anda cukup mendaftarkan perintah sekunder setelah yang pertama. Misalnya jika Anda ingin kunci dengan kode 53 untuk memetakan ke backslash normal, tetapi untuk simbol bar ketika digunakan dengan shift, Anda mungkin melakukan:

     xmodmap -e "keycode 53 = backslash bar"
    

Informasi tambahan: Urutan pemetaan ini adalah Kunci, Shift + Key, mode_switch + Key, mode_switch + Shift + Key, AltGr + Key, AltGr + Shift + Key. Untuk melewati penggunaan kolom NoSymbol. Bahkan, sini adalah daftar lengkap semua kunci.

Catatan: Perubahan ini hanya untuk sesi X yang aktif dan akan hilang setelah reboot. Ketika Anda ingin menyimpan perubahan secara permanen Anda harus menjalankan perintah berikut setelah yang di atas:

xmodmap -pke >~/.Xmodmap

(Ini menciptakan file bernama .Xmodmap di direktori home Anda (~))

Maka Anda harus membuat file bernama .xinitrc di direktori home Anda tempat Anda meletakkan perintah xmodmap .Xmodmap di.

Anda sekarang dapat memodifikasi .Xmodmap dan lari xmodmap .Xmodmap dari konsol untuk segera melihat perubahan. Perubahan dalam .Xmodmap akan bertahan.

sumber: Forun Ubuntu

Barang bonus:

Jika kunci yang Anda pemetaan memiliki perilaku yang berbeda tergantung pada keadaan ( seperti bagaimana tombol di keyboard numerik bergantung pada NumLock) yang harus Anda lakukan xmodmap -pmuntuk mendapatkan daftar pengubah lalu lakukan:

xmodmap -e "KEYCODE MODIFIER = behaviour behaviour_with_modifier"

Anggaplah, misalnya, Anda ingin mendapatkan periode daripada koma pada keyboard numerik (berguna untuk sebagian besar pemrogram), tetapi Anda ingin menjaga perilaku "hapus" saat NumLock tidak aktif.

xmodmap -e "keycode 91 mod2 = KP_Delete period"

mod2, karena xmodmap -pm memberitahu kita itu mod2 aku s Num_Lock, nama-nama lainnya diperoleh dengan menekan tombol di xev.


233
2017-12-17 18:46



xev tidak bisa menangkap Fn penekanan tombol - om-nom-nom
Saya suka bagaimana Anda menjelaskan semuanya, bukan hanya menghapus sintaks dengan tempat untuk menggantikan - Programming Noob
Jawaban yang dipilih tidak berfungsi untuk memetakan ulang tombol Caps-lock untuk saya pada Ubuntu 12.10. Saya dapat melakukan ini dengan masuk ke Pengaturan Sistem -> Keyboard -> Pengaturan Tata Letak -> Opsi, yang memiliki daftar kunci dan perilaku alternatif. Bekerja dengan sempurna di Unity dan terminal. - Allyl Isocyanate
Aneh, saya melakukan semuanya, tetapi keymap saya masih disetel ulang setelah restart. - Costa
Saya tidak berpikir saya punya -event bendera di Ubuntu 12.04. Ini melempar kesalahan dan tidak menyebutkan "acara" di man xev. - isomorphismes


Jika Anda mencoba memindahkan tombol Shift, ada beberapa langkah tambahan:

 xmodmap -e "keycode 62 = Up" # Shift => Up
 xmodmap -e "keycode 111 = Shift_R" # Up => Shift
 xmodmap -e "add shift = Shift_R" # Make the new Shift key actually do shifting
 xmodmap -e "remove shift = Up" # Prevent the old Shift key from shifting
 xset r 62 # Make the new Up key autorepeat
 xset -r 111 # Prevent the new Shift key from autorepeating

18
2018-02-05 14:04



+1 Jawaban paling unix-y dari semua itu untuk pengubah (saya sudah melakukannya, jalan kembali dengan iBook 2 saya, ketika saya ingin tombol enter memiliki fungsi Control_R, tetapi lupa detailnya). - rbrito
Jawaban penting bagi pengguna yang menggunakan keyboard di Laptop Lenovo - Einar Ólafsson


Saya baru saja mengalami renungan .. Saya pikir Anda mungkin memiliki arti yang sama sekali berbeda dengan "remap" .. tetapi saya akan meninggalkan jawaban saya apa adanya ... (Saya tidak tahu cara menetapkan kembali satu kunci ke berperilaku seperti yang lain)

MEMPERBARUI: 'renungan saya' telah dikonfirmasi; (Saya telah menjawab pertanyaan yang salah:) ... silakan lihat jawaban NIS Komunitas Wiki (diterima di atas).

Ada dua cara umum untuk remap kembalikan kunci.

  • secara lokal ke program tertentu
    (kunci dapat digunakan untuk berbagai hal di aplikasi / jendela berbeda)
  • global untuk pengguna tertentu
    (kunci memiliki fungsi yang sama di semua jendela)

Untuk metode 'lokal ke program', terkadang ada cara untuk mengubah keybindings yang ditawarkan oleh aplikasi itu sendiri ... mis.

Firefox memiliki addon yang disebut keyconfig ... untuk beberapa info, lihat ini MozillZine memposting 

Sebagian besar program Ubuntu berbasis Gnome dan ada utilitas khusus untuk memodifikasi pengikatan kunci untuk setiap item menu dari aplikasi Gnome ini ... Ini disebut Editable Menu Accelerator ... Ini adalah alat yang sangat 'sensitif', tetapi cukup kuat .. Anda dapat mengaktifkannya dengan menjalankan gconf-editor (via Terminal atau Alt + F2) ... arahkan ke desktop-gnome-interface dan pilih can_change_accels .... Anda kemudian dapat mengubah item menu menjadi virtual apa pun yang Anda suka (per program / jendela) ... Saya sarankan Anda menonaktifkannya segera setelah Anda melakukan apa yang Anda butuhkan ..

Kalau tidak, Anda dapat mengatur Global hotkeys. Saya menggunakan program yang disebut xbindkeys  Install xbindkeys, dan ada juga pilihan yang tersedia melalui Menu Utama - Preferensi, yang disebut Keyboard Shortcuts 

Jika Anda menggunakan xbindkeys, Anda perlu menambahkannya ke "Aplikasi Startup" Anda (Menu Utama - Preferensi) ... Juga (seperti yang disarankan oleh Stefano Palazzo) Saya sebelumnya telah menulis deskripsi yang lebih rinci tentang xbindkeys dalam jawaban tentang ini halaman askubuntu


16
2018-01-27 03:04



+1, sangat bagus! Sebuah saran: Anda harus mengintegrasikan Anda jawaban bagus dari pertanyaan lain ke yang ini, mungkin juga menjelaskan format konfigurasi xbindkeys sedikit. - Stefano Palazzo♦
Sedikit tentang menugaskan kunci lain bisa ditangani xdotool, periksa halaman manual, saya telah menggunakannya untuk memecahkan masalah ini. - Stefano Palazzo♦
Saya baru-baru ini menemukan pendekatan lain dengan alat yang disebut xmodmap dalam kombinasi dengan alat yang disebut xev. saya tidak tahu apa perbedaan antara xmodmap dan xbindkeys, tetapi ini bekerja cukup baik untuk saya. beberapa saran dengan alat untuk memilih yang bernama dua? Berikut ini adalah panduan langkah demi langkah yang sangat membantu yang menggambarkan xmodmap dan xev ubuntuforums.org/showpost.php?p=7675138&postcount=2 - NES
@NES .. Sepertinya saya telah membahas poin yang salah. Anda tampaknya ingin memetakan ulang cara kunci tertentu ditafsirkan oleh OS, yakni penafsiran keyboard non-standar, sedangkan saya merujuk pada interpretasi keyboard standar, dan hanya overloading key-assignments default. (Saya pikir apa yang Anda cari mirip dengan menukar tombol mouse kiri dan kanan) .. Yah sepertinya jawaban saya baik untuk hal yang salah :) - Peter.O
ya, tapi tidak masalah. jawabannya juga menarik. panduan langkah demi langkah saya memposting tautan di atas adalah cara yang benar. jadi saya akan mengirim jawaban singkat dengan solusi bahwa pengguna lain memiliki panduan yang bagus. terima kasih fred - NES


Di sini adalah bagaimana saya mencoba untuk beralih pemetaan MEMASUKKAN kunci untuk BERGESER kunci (dan sebaliknya):

$ uname -a

LAPORAN:

Linux box 2.6.32-37-generic #81-Ubuntu SMP Fri Dec 2 20:35:14 UTC 2011 i686 GNU/Linux

$ which xmodmap

LAPORAN:

/usr/bin/xmodmap

$ which xev

LAPORAN:

/usr/bin/xev

$ xev

(abaikan lima puluh baris berikutnya atau lebih)

PRESS THE ENTER KEY (notice the third line):
KeyPress event, serial 33, synthetic NO, window 0x5600001,
    root 0x110, subw 0x0, time 263441120, (738,242), root:(771,314),
    state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
    XLookupString gives 1 bytes: (0d)
    XmbLookupString gives 1 bytes: (0d)
    XFilterEvent returns: False

KeyRelease event, serial 33, synthetic NO, window 0x5600001,
    root 0x110, subw 0x0, time 263441271, (738,242), root:(771,314),
    state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
    XLookupString gives 1 bytes: (0d)
    XFilterEvent returns: False

PRESS THE SHIFT KEY (notice the third line):
KeyPress event, serial 30, synthetic NO, window 0x5600001,
    root 0x110, subw 0x0, time 263592202, (464,368), root:(497,440),
    state 0x0, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyRelease event, serial 33, synthetic NO, window 0x5600001,
    root 0x110, subw 0x0, time 263592298, (464,368), root:(497,440),
    state 0x1, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False

Yang penting adalah baris ketiga setiap tombol ditekan:

FOR:
state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
The name "Return" is the name of the behavior of the key pressed.
The number of the key pressed is "36".

state 0x0, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
The name "Shift_R" is the name of the behavior of the key pressed.
The number of the key pressed is "62".

MENGEMBALIKAN PEMETAAN:

$ xmodmap -e "keycode 62 = Return"
$ xmodmap -e "keycode 36 = Shift_R"

SIMPAN HASIL:

$ xmodmap -pke > ~/.Xmodmap
$ vi ~/.xinitrc

MENAMBAHKAN

 xmodmap ~/.Xmodmap

$ sudo reboot

Masalah utamanya adalah pembalikan itu tidak berhasil. Itu MEMASUKKAN kunci dipetakan ke SHIFT_R kunci; tetapi SHIFT_R kunci tidak dipetakan ke MEMASUKKAN kunci. Go figure.


8
2018-01-20 05:30





Untuk melakukan remapping global secara independen dari X, Anda dapat memanfaatkannya konsol-setup (5) sebagai gantinya.

Dalam kasus saya, saya ingin memetakan kembali Kunci huruf kapital kunci untuk D, sejak saya D-kunci rusak :)

Pertama saya gunakan dumpkeys (1) untuk mendapatkan template untuk pemetaan, dalam hal ini D-key, bit yang menarik adalah pemetaan untuk keycode 32 (pada keyboard saya); Perhatikan bahwa ada dua spasi dalam pola grep!

$ sudo dumpkeys | grep "keycode  32" > tempfile
$ cat tempfile
keycode  32 = +d
    shift   keycode  32 = +D
    altgr   keycode  32 = +eth
    shift   altgr   keycode  32 = +ETH
    control keycode  32 = Control_d
    shift   control keycode  32 = Control_d
    altgr   control keycode  32 = Control_d
    shift   altgr   control keycode  32 = Control_d
(121 lines total...)

Untuk mengubah peta untuk diterapkan Kunci huruf kapital (keycode 58 pada keyboard saya) sebagai gantinya

sed 's/32/58/' -i tempfile

Sekarang bunyinya

keycode  58 = +d
    shift   keycode  58 = +D
    altgr   keycode  58 = +eth
(etc...)

Untuk menambahkan remap ini ke peta default, itu hanya perlu ditambahkan ke file remap include untuk konsol-penyiapan

sudo sh -c 'cat tempfile >> /etc/console-setup/remap.inc'

dan konsol-penyiapan perlu dikonfigurasikan ulang (melewatkan pertanyaan dengan prioritas rendah -phigh)

sudo dpkg-reconfigure console-setup -phigh

Sekarang remapnya harus selesai, dan dimuat secara otomatis saat boot.


6
2017-07-28 12:15





Saya menghabiskan satu hari penuh untuk mencoba membuat pintasan Ctrl+Pageup.

Saya pertama kali mencoba xmodmap tetapi itu tidak dapat menghasilkan peristiwa pengubah. Jadi mustahil untuk membuat shortcut yang menghasilkan misalnya Control peristiwa.

Saya kemudian mencoba xbindkeys dengan xmacro. Pekerjaan semacam itu, tapi xbindkeys tidak dapat menangkap beberapa kombinasi tombol di sistem saya, seperti Alt + ___.

Jadi akhirnya saya menggunakan Pintasan Keyboard Unity sendiri -> Pintasan Khusus untuk mengatur pintasan saya.

Dan bukannya xmacro, Saya sekarang telah digunakan xvkbd program untuk menghasilkan acara keyboard, tetapi itu hanya preferensi pribadi. Kedua xmacro dan xvkbd bekerja hampir sama. Salah satu tip tambahan adalah menambahkan parameter penundaan dalam xmacro atau xvkbd untuk memastikan bahwa acara tidak tersesat.


3





Bagi saya, AutoKey dari Pusat Software bekerja dengan baik. Ini memiliki GUI yang intuitif, untuk menambahkan pengikatan baru, klik Baru -> Frase dan

  1. Tambahkan nama, klik OK
  2. Di bagian "Pengaturan Frasa" pastikan penggunaan tempel diatur ke keyboard
  3. Tambahkan hotkey yang ingin Anda gunakan
  4. Tambahkan perintah ke bidang teks, misalnya untuk meniru kunci panah kiri - itu akan menjadi <left> (daftar kunci khusus adalah sini).

0