Saya ingin memetakan ulang caps lock untuk melarikan diri di X11 (yaitu dengan menekan tombol caps lock fisik akan diartikan sebagai esc oleh aplikasi dan perilaku esc tidak akan berubah). Solusinya harus bertahan X restart . xmodmap dan setxkbmap adalah solusi yang dapat diterima (seperti halnya program serupa). Saya tidak ingin berurusan dengan GUI, karena saya ingin solusi menjadi portabel dan merupakan bagian dari dotfile saya. Jika saya melewatkan solusi yang lebih baik / lebih mudah / lebih jelas, tolong katakan padaku, meskipun perlu dicatat bahwa saya tidak menggunakan DE (mencoba i3wm).
Sejauh ini saya sudah mencoba menggunakan xmodmap dan setxkbmap dengan sedikit keberhasilan.
Inilah upaya saya menggunakan xmodmap:
# ~/.xinitrc
xmodmap ~/.xmodmap
dan
# ~/.xmodmap
remove Lock = Caps_Lock
keysym Caps_Lock = Escape
Menjalankan $ xmodmap ~/.xmodmap
dari baris perintah berfungsi dan melakukan apa yang saya inginkan. Masalahnya adalah ini akan diset ulang setiap kali x restart. Di situlah saya mengharapkan xinitrc masuk - bukankah seharusnya memuat setiap kali x memulai dan menjalankan perintah xmodmap? Jika perintah itu berfungsi, mengapa tidak melakukan apa-apa saat membaca dari sebuah file?
Saya sudah mencoba beberapa hal dengan setxkbmap, tidak ada yang berhasil. Dua upaya di bawah ini ada di file pada waktu yang berbeda.
# ~/.xinitrc
setxkbmap -option caps:esc # attempt 1
setxkbmap -option esc:nocaps # attempt 2
Tidak ada perintah yang melakukan sesuatu yang dapat dilihat dari baris perintah, jadi saya berasumsi bahwa saya salah mengartikannya. Saya suka ide solusi ini karena ini adalah one-liner dan tidak memerlukan apa pun di beberapa file lain. Kalau saja itu berhasil.
Apakah .xinitrc file yang salah untuk digunakan? Saya tahu startx sedang memuat dari ~ / .xinitrc.
Saya meminta solusi yang mungkin berisi seluruh file, bukan hanya satu baris (jika lebih dari satu diperlukan dalam file) jadi saya tidak mengacaukan beberapa langkah perantara. Misalnya, jika saya memerlukan sesuatu di .xinitrc dan sesuatu di .xcapsrebind, tolong tunjukkan kedua file dan semua konten yang diperlukan (saya juga dapat menangani diberitahu untuk menambahkan sesuatu sampai akhir, tetapi jika & & sejenisnya mungkin diperlukan, tolong beritahu aku).
.xinitrc
:setxkbmap -option caps:escape
xmodmap
di.xinitrc
harus bekerja. Itu yang saya lakukan. Mungkin memetakan sesuatu yang tidak biasa, untuk memastikan bahwa itu benar-benar berjalan ketika Anda mulai x? Juga, window manager / lingkungan desktop apa yang Anda gunakan? KDE secara berkala “mengoreksi” pemetaan keyboard saya tanpa saya beri tahu. Mungkin periksa pengaturan desktop Anda untuk memastikan tidak ada yang berjalan dixmodmap
belakang Anda.~/.xinitrc
tidak dijalankan. Saya menggunakan i3wm dan tidak ada DE sekarang, meskipun hal yang sama terjadi di Pantheon ketika saya mencoba. Sejauh yang saya tahu, i3 tidak mengacaukan xinitrc atau memuat sendiri (tapi saya seorang noob, jadi apa yang saya tahu?).Option "XkbOptions" "caps:escape"
dalamX
file konfigurasi keyboard, mis./etc/X11/xorg.conf.d/10-keyboard.conf
Jawaban:
EDIT: Seperti yang ditunjukkan oleh pengguna yang membantu, solusi awal saya tidak akan bertahan dari pembaruan. Solusi-nya dalam komentar harus bekerja. Jika Anda lebih suka menukar Caps Lock dan Escape sebagai gantinya, saya akan merekomendasikan menambahkan perintah berikut dari .xinitrc atau dari konfigurasi i3 Anda:
.xinitrc:
file konfigurasi i3 (biasanya terletak di .config / i3 / config atau di .i3 / config)
Saya menyadari pertanyaan ini sudah cukup lama, tetapi saya pikir saya mungkin menambahkan jawaban bagi kita yang masih mencoba mencari tahu.
Setelah mengalami masalah serupa dengan beberapa DE yang tidak dimuat
~/.xinitrc
, saya menghindari xmodmap sama sekali, pergi ke/usr/share/X11/xkb/symbols
dan memodifikasi pemetaan simbol key => secara langsung.Untuk melakukannya, saya mengedit file konfigurasi untuk keyboard saya yang terletak di
/usr/share/X11/xkb/symbols
. Untuk sebagian besar keyboard, ini harus berupapc
file.Setelah membuka file, saya secara manual beralih Escape dan Caps_Lock untuk kunci masing-masing hasilnya ditunjukkan di bawah). Karena ini memengaruhi bagaimana X memetakan perangkat keras ke simbol utama, itu harus berfungsi terlepas dari apakah Anda menggunakan GNOME atau i3 atau semacamnya.
Cuplikan dari file yang saya hasilkan adalah sebagai berikut:
Ini bekerja seperti pesona bagi saya.
Saat melihat-lihat file terkait, saya menemukan menyebutkan berulang dan implementasi parsial semacam bendera yang digunakan untuk beralih di sekitar tombol tertentu, seperti bertukar Escape dan Caps Lock. Saya berasumsi inilah yang digunakan oleh Gnome Tweak Tool dan setxkbmap; Namun, saya tidak tahu bagaimana menjaga bendera ini tetap menyala dengan i3 window manager. Solusi di atas seharusnya bekerja dengan baik.
Semoga ini memperbaiki masalah!
sumber
exec --no-startup-id setxkbmap -layout whatever -variant whatever -option caps:escape
...xkb/symbols/pc
file sistem akan ditimpa saat berikutnyaxkeyboard-config
atauxkb-data
paket diperbarui.Dua kemungkinan:
1)
.xinitrc
tidak dijalankan - ini digunakan oleh xinit, startx, dan beberapa metode lain untuk memulai sesi X, tetapi tidak didukung secara universal - Anda mungkin menggunakan manajer tampilan yang tidak menjalankannya. Menambahkan sesuatu ke .xinitrc sepertitouch /tmp/xinitrc-was-run
dapat membantu menentukan apakah itu masalahnya.2) Xorg secara otomatis me-reset ke pengaturan default ketika tidak ada klien yang terhubung - jika .xinitrc selesai sebelum window manager atau apa pun mulai berjalan, maka perubahan xmodmap atau setxkbmap akan hilang.
Jika ada opsi XKB yang sudah ditentukan yang ingin Anda gunakan, alih-alih menjalankan program untuk mengubah pengaturan setiap kali Xorg dimulai, Anda bisa memberi tahu Xorg untuk memulai dengan pengaturan yang tepat. Misalnya, untuk mengaktifkan kunci Ctrl-Alt-Backspace untuk membunuh Xserver saya, saya telah menginstal file bernama
/etc/X11/xorg.conf.d/90-zap.conf
yang berisi:Anda dapat membaca lebih lanjut tentang ini di dokumen X.Org di https://www.x.org/releases/X11R7.7/doc/xorg-docs/input/XKB-Config.html .
sumber