Bagaimana cara membuat tombol Caps Lock sebagai tombol Shift ketiga?


19

Bagaimana cara membuat tombol Caps Lock berfungsi seperti tombol Shift lainnya?

Ada banyak pertanyaan di sini tentang penugasan kembali, atau meminta meluncurkan perintah khusus. Saya hanya ingin itu berfungsi seperti tombol Shift lainnya. Saya tidak ingin ada kunci lain untuk mengubah apa yang mereka lakukan, hanya itu saja.

Keyboard Layout / Caps Lock perilaku tombol tidak akan melakukannya, saya tidak mengerti bagaimana memetakannya kembali di CCSM.

Saya menggunakan keyboard Inggris sekarang tetapi saya belajar mengetik pada keyboard AS, tombol Shift kiri yang lebih kecil adalah MENGEMUDI SAYA KACANG.



1
@ David-OP teman Anda secara khusus mengatakan xmodmaptidak bekerja.
TheWanderer

1
Dalam xkb ini tampaknya ada hubungannya dengan peta kompatibilitas yang menerjemahkan kombinasi tombol tertentu menjadi tindakan, bukan simbol. Ini akan membutuhkan lebih banyak waktu penelitian dan pengujian daripada yang saya miliki saat ini. Jika saya mendapat kesempatan, saya akan menggali lebih jauh, jika tidak, mungkin remah roti ini akan membawa orang lain ke arah yang benar.
Penatua Geek

Jawaban:


14

Memperluas pada @ Zacharee1 jawaban:

buat cadangan dengan cp /usr/share/X11/xkb/symbols/pc ~/pckeybak

lalu edit dengan gksu gedit /usr/share/X11/xkb/symbols/pcatau editor favorit Anda.

Temukan baris (22) yang mengatakan:

key <CAPS> { [ Caps_Lock ] };

dan ubah ke

key <CAPS> { [ Shift_L ] };

dan garis (36) yang mengatakan:

modifier_map Lock { Caps_Lock };

dan ubah ke

//modifier_map Lock { Caps_Lock }; (yang seharusnya berkomentar karena menonaktifkan penguncian)

Pengujian menunjukkan bahwa Num Lockmasih berfungsi seperti yang diharapkan. Pengujian lebih lanjut menunjukkan bahwa lampu indikator keyboard tampak sedikit disleksia pada 16,04 bahkan pada sistem yang tidak dimodifikasi. Gulir Indikator kunci aktif saat masuk tetapi Gulir kunci mati dan Num Lock menyala, tetapi Num terkunci. Mengetuk tombol kiri Ctrltampaknya untuk menyelesaikan perilaku ini dan saya tidak yakin apakah itu terkait dengan penggunaan saya atas saklar KVM (yang mungkin)

Catatan: Pengujian lebih lanjut menunjukkan bahwa lampu indikator NumLock tidak stabil meskipun tanpa sakelar KVM dan harus diketuk dua kali untuk kembali sinkron dengan NumLock. Jika Anda selalu membiarkannya menyala, Anda dapat mengabaikan lampu atau jika itu mengganggu Anda, Anda dapat mengetuknya. dua kali untuk mendapatkannya kembali sinkron. Mengapa ini terjadi kemungkinan merupakan dasar untuk pertanyaan baru ...

Solusi sederhana lain untuk masalah awal Anda adalah dengan hanya mendapatkan keyboard AS yang murah dan menggunakan pemetaan keyboard AS.

Sumber: @ Zacharee1 jawaban dan analisis /usr/share/X11/xkb/symbols/pcpengujian coba-coba


Jadi, Anda harus menonaktifkan saluran 36 itu? Mengubah saja Shift_Lsudah cukup untuk sepenuhnya menonaktifkan capslock untuk saya.
TheWanderer

@ Zacharee1 Saya pikir itu mungkin penyebab dampak pada Numlock yang disebutkan Tom Brossman dalam komentar di posting Anda dan membawanya keluar hanya untuk alasan itu.
Penatua Geek

Hmm. Itu mungkin saja. Saya melihat apakah saya bisa mendapatkan Zanna untuk diuji dengan VM, karena dia memiliki dewan UK.
TheWanderer

@ Zacharee1 Itu akan keren karena saya tidak memiliki perangkat keras yang tersedia untuk pengujian dan sering mengandalkan logika dalam kasus di mana pengujian lengkap tidak mungkin.
Penatua Geek

Yang akhirnya, diuji dan bekerja (setidaknya untuk saat ini). Aneh bahwa lampu Num Lock pada keyboard saya padam tetapi tombol angka tambahan diaktifkan secara default ketika saya masuk dan itulah yang saya cari. Terima kasih!
Tom Brossman

10

Anda dapat mencapainya dengan mengadaptasi Cara mengubah kunci CapsLock untuk menghasilkan "a"? (sebagai contoh).

Hapus Lockpengubah (= Caps Lock) dari Caps Locktombol, dan nyatakan bahwa kunci ini mengirimkan kunci Shift_L.

remove Lock = Caps_Lock
keysym Caps_Lock = Shift_L

Atau, Anda dapat menghapus Lockpengubah dan menambahkan Shiftpengubah.

remove Lock = Caps_Lock
add Shift = Caps_Lock

Either way, baris-baris ini masuk ke file ~/.Xmodmap. Uji dengan memuatnya dengan xmodmap ~/.Xmodmap; file dibaca secara otomatis ketika Anda masuk di bawah lingkungan default (atau setidaknya itu pada hari-hari Gnome).


2
Sempurna, itu berhasil. Saya membuat dokumen kosong baru di direktori home saya yang disebut '.Xmodmap', dan menempelkan contoh pertama Anda ke dalamnya. Kemudian saya mengetik 'xmodmap ~ / .Xmodmap' di terminal untuk membuatnya segera berlaku. Keduanya dijelaskan dalam jawaban yang ditautkan. Terima kasih.
Tom Brossman

Set perintah kedua tidak bekerja untuk saya, tetapi yang pertama berfungsi dengan baik. Menekan Caps Lock bahkan tidak menyalakan lampu keyboard, sehingga bahkan tidak memicu OCD laten saya.
Waldir Leoncio

Jawaban yang bagus, Gilles! Hanya untuk menambah jawaban Anda, ini dapat dilakukan sebagai satu perintah tunggal juga: xmodmap -e "clear Lock" -e "keysym Caps_Lock = Shift_L" dan dibatalkan dengan setxkbmap -option , yang tidak menulis ke ~/.Xmodmapfile, tetapi dapat digunakan bila perlu, dan ditambahkan ke Aplikasi Startup. Jawaban yang sangat bagus
Sergiy Kolodyazhnyy

7

Mengabaikan upaya saya sebelumnya untuk menjawab yang gagal, saya menemukan sesuatu yang mengubah capslock sepenuhnya menjadi shift kiri. Jangan toggling, saya pikir itu gigih, dan itu sangat sederhana.

Pertama, saya sarankan membuat cadangan, sebelum saya memperkenalkan cara mengubahnya.

Lari sudo cp /usr/share/X11/xkb/symbols/pc ~/pckeybak

Sekarang ada cadangan, mari kita pergi ke pengeditan.

Gunakan editor teks favorit Anda untuk mengedit file ini sebagai root:

/usr/share/X11/xkb/symbols/pc

Temukan segmen yang terlihat seperti ini (di dekat bagian atas, baris 22 untuk saya):

key  <TAB> {    [ Tab,  ISO_Left_Tab    ]   };
key <RTRN> {    [ Return                ]   };

key <CAPS> {    [ Caps_lock             ]   };
key <NMLK> {    [ Num_Lock              ]   };

sunting

key <CAPS>  {   [ Caps_lock             ]   };

menjadi

key <CAPS> {    [ Shift_L, Caps_Lock    ]   };

sebagai gantinya. ( Caps_LockSetelahnya Shift_L,mungkin tidak perlu.)

Mulai ulang manajer tampilan Anda (biasanya sudo service lightdm restart) dan capslock sekarang akan bergeser. ( Catatan: Mesin uji saya menggunakan GNOME, jadi saya harus memulai ulang gdm. Namun, itu menyebabkan beberapa kedipan aneh pada TTY mundur, dan gdmtidak pernah memulai ulang. Saya harus mem-boot ulang sepenuhnya.)

Yang ini saya benar-benar dapat menguji, dan dapat mengkonfirmasi itu berfungsi.

Diadaptasi dari xmodmap Permanen di Ubuntu 13.04


Terima kasih, tetapi ini mengganggu Num Lock yang saya tinggalkan secara permanen. Dalam pemecahan masalah awal saya, mengubah Caps_lock> Shift_L di /usr/share/X11/xkb/symbols/capslockjuga mengganggu Num Lock. Ada sesuatu yang berbeda tentang 16,04, misalnya lampu Num Lock yang digunakan untuk tetap menyala saat boot tetapi sekarang padam saat login LightDM. Ketika saya menguji solusi Anda, itu mengubah Caps Lock ke Shift, tetapi pertama kali saya menekan Caps Lock the Num Lock matikan, dan saya harus menekan Num Lock DUA KALI untuk mengaktifkannya kembali (hanya pertama kali). Aneh. Sangat menghargai bantuan sejauh ini.
Tom Brossman

Mungkin saya perlu mengajukan pertanyaan baru "Bagaimana cara mencegah gangguan remap Caps Lock dengan Num Lock pada 16.04?" tapi saya ingin menemukan akar masalahnya di sini. Entah itu atau saatnya untuk membuka keyboard dan membuat beberapa modifikasi fisik untuk itu ...
Tom Brossman

Itu aneh. Apakah numlock berfungsi lagi jika Anda menjalankan xkbset nullify lock?
TheWanderer

@ TomBrossman Saya tidak tahu apakah ini mengubah apa pun untuk Anda, tetapi itu berhasil bagi saya. Alih-alih hanya Shift_L, masukkan Shift_L, Caps_Lock. Pastikan tanda kurung sejajar.
TheWanderer

1
@ TomBrossman Saya suka menggunakan sudo jika tidak berbahaya, hanya untuk memastikan: p. Ketika saya mengedit file, L untuk shift adalah modal dan begitu juga dengan caps lock. Aneh. Masalah NumLock juga aneh, karena berfungsi baik untuk saya. Semua ini aneh: p
TheWanderer

3

Untuk 14,04

Satu kalimat:

xmodmap -e 'keycode 66=Shift_L'

TETAPI , dalam kasus 66yang tidak terduga bukan kode kunci yang benar, jalankan pertama kali xevdi konsol dan tekan CapsLock. Maka Anda akan melihat sesuatu seperti:

KeyPress event, serial 27, synthetic NO, window 0x1200001,
    root 0x101, subw 0x0, time 6417361, (340,373), root:(342,393),
    state 0x0, keycode XX (keysym 0x0207, Caps_Lock), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

Kode kunci yang benar adalah yang ditunjukkan dalam XX.


1
Lihatlah pesan karunia: Xmodmap trick no longer works and xkb handles this now..
TheWanderer

Astaga! apakah karena 16,04? Ini bekerja pada 14,04 saya. Komentar karunia tampaknya tidak menentukan.

Saya tidak menghasilkan hadiah jadi saya tidak benar-benar tahu.
TheWanderer

Maaf, ini untuk pemasangan baru 16,04. Tombol shift kiri atau kanan akan baik-baik saja, saya memilih kiri untuk pertanyaan karena berdekatan dan xevmelihat mereka sebagai kunci yang berbeda.
Tom Brossman
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.