Bagaimana saya bisa membuat backspace bertindak sebagai pelarian menggunakan setxkbmap?

8

Tampaknya ada beberapa pilihan untuk setxkbmapseperti -option caps:backspaceyang membuat topi backspace. Namun saya tidak bisa menemukan opsi yang membuat backspace menjadi kunci pelarian. Bagaimana cara membuat perintah setxkbmap tunggal yang mengubah kunci backspace menjadi kunci melarikan diri?

Alice Ryhl
sumber

Jawaban:

13

Anda harus menentukan opsi baru.
Pertama, buat file simbol baru misalnya /usr/share/X11/xkb/symbols/bkspdengan konten berikut:

partial alphanumeric_keys
xkb_symbols "bksp_escape" {
    key <BKSP> { [ Escape ] };
};

Kemudian buat opsi baru seperti ini:

bksp:bksp_escape  =   +bksp(bksp_escape)

(di mana bkspnama file simbol dan bksp_escapemerupakan nama grup yang didefinisikan dalam file ini) dan menambahkannya ke daftar opsi dalam aturan yang Anda gunakan - dengan asumsi evdev- jadi letakkan di /usr/share/X11/xkb/rules/evdevbawah ! option = symbols:

! option    =   symbols
  bksp:bksp_escape  =   +bksp(bksp_escape)
  ...........
  grp:shift_toggle  =   +group(shifts_toggle)
  altwin:menu       =   +altwin(menu)

Tambahkan juga ke /usr/share/X11/xkb/rules/evdev.lst(dengan deskripsi singkat) di bawah ! option(mis. Tepat sebelum ctrl):

! option
  ........
  bksp                 Backspace key behavior
  bksp:bksp_escape     Backspace as Escape
  ctrl                 Ctrl key position
  ctrl:nocaps          Caps Lock as Ctrl

Anda kemudian dapat menjalankan, sebagai pengguna biasa:

setxkbmap -layout us -option bksp:bksp_escape

untuk mengaktifkan opsi dan BKSPbersikap seperti ESC.
Anda juga dapat memverifikasi jika:

setxkbmap -query

laporan:

rules:      evdev
model:      pc104
layout:     us
options:    bksp:bksp_escape

dan jika

setxkbmap -print

output:

xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+us+inet(evdev)+bksp(bksp_escape)" };
    xkb_geometry  { include "pc(pc104)" };
};

Di Gnome 3 Anda dapat membuat opsi menjadi permanen melalui dconf(atau gsettingsdalam terminal) misalnya menambahkan 'bksp:bksp_escape'ke org> gnome> desktop> input-sumber> kunci xkb-opsi (perhatikan bahwa dalam dconfnilai-nilai dipisahkan oleh koma + spasi).


Akhirnya, perhatikan bahwa keduanya evdevdan evdev.lstakan ditimpa pada peningkatan di masa mendatang (tetapi bukan bkspfile simbol kustom Anda ) sehingga Anda harus mengeditnya lagi setiap kali paket yang dimiliki ditingkatkan (pada archlinux itu xkeyboard-config). Lebih mudah untuk menulis skrip yang melakukan itu, mis

sed '/! option[[:blank:]]*=[[:blank:]]*symbols/a\
  bksp:bksp_escape  =   +bksp(bksp_escape)
' /usr/share/X11/xkb/rules/evdev

sed '/! option/a\
  bksp                 Backspace key behavior\
  bksp:bksp_escape     Backspace as Escape
' /usr/share/X11/xkb/rules/evdev.lst

Jika Anda puas dengan hasilnya gunakan sed -i(atau -i.bakjika Anda ingin membuat salinan cadangan) untuk benar-benar mengedit file-file di tempat .

don_crissti
sumber