Uygulama tuş haritaları için değiştirici anahtar olarak CapsLock


11

Ben geliştiriciyim ve şu anda web sitesi geliştirmek için PyCharm IDE ile Ubuntu Linux kullanıyorum. Yazma performansını artırmak için CapsLock'u Hyper_L olarak değiştirmeyi ve xmodmap kullanarak mod3'e atamayı düşünüyorum. Bundan sonra mod3'ü 'i' tuşu için 'Yukarı' olarak eşlemek istiyorum. Şimdiye kadar yaptığım şey:

xmodmap -e "keysym Caps_Lock = Hyper_L"

çıktı şu şekildedir:

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Hyper_L (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

sonra mod4 Hyper_L kaldırmak

xmodmap -e "remove Mod4 = Hyper_L"

Daha sonra mod3'e Hyper_L atamayı denedim

xmodmap -e "add Mod3 = Hyper_L"

Ancak ben aşağıdaki gibi hata var:

X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  118 (X_SetModifierMapping)
  Value in failed request:  0x17
  Serial number of failed request:  11
  Current serial number in output stream:  11

Peki, burada sorun neydi? Nasıl çalıştırabilirim? Yaklaşımım doğru mu? Veya özel anahtarlar için mod3 kullanmak için farklı bir yaklaşım kullanmalıyım?

PS Microsoft Natural Ergonomic 7000 klavye kullanıyorum

Yanıtlar:


20

İnternette çoğu kafa karıştırıcı olan bajillion cevapları var.

Anahtar '66 anahtar kodunu' hiper anahtarınıza eşlemeniz, bu anahtarın eşlemesini diğer mod {1,2,4,5} 'lerden (yalnızca varsa) kaldırmanız ve sonra mod3'ü ayarlamanız gerekir.

~ / .Xmodmap dosyasını açın ve aşağıdakileri koyun:

! Unmap capslock
clear Lock
keycode 66 = Hyper_L

! Leave mod4 as windows key _only_
remove mod4 = Hyper_L

! Set mod3 to capslock
add mod3 = Hyper_L

Bunu çalıştır

xmodmap ~/.Xmodmap

Bir şeyler ters giderse, klavyenizi aşağıdakilerle sıfırlayabilirsiniz:

setxkbmap -layout us

Patlayan bir şeyin olası nedenleri Hyper_L'ın başka bir yerde eşlenmiş olmasıdır. Başka ne Hyper_L bağlı olduğunu anlamak için argümanlar olmadan xmodmap çalıştırarak bunu düzeltin. Neyi kaldırmanız gerektiğini bildiğinizde, .Xmodmap dosyanızda bir 'remove BINDING = Hyper_L' kaldırın.

X11 oturumlarını açtığınızda .Xmodmap dosyası yüklenir, bir sonraki oturum açışınızda veya yeniden başlattığınızda bu eşlemenin yerinde olması gerekir.

Bu yapılandırma ubuntu 14.04 kurulumum için çalışıyor. Farklı bir * nix'iniz varsa ve bu işe yaramazsa, lütfen burada dolaşmak için yaptıklarınızı buraya gönderin, ben de cevaba ekleyeceğim.


@antindexer işinize yaradı mı?
heymatthew

Oldukça fazla cevap denedim ve bu benim için işe yaradı. En azından, çıplak bir metal linux kurulumunda yaptı. Garip bir şekilde, QEMU / KVM'de başarısız oluyor, sadece büyük harf kilidi tuşuna alternatif basışlarda çalışıyor.
Diagon

0

Bu sorunun oldukça eski olduğunu biliyorum, ama (sinir bozucu bir şekilde) heymantthew'un yanıtı benim için işe yaramadığı için çözümümü paylaşmam gerekiyor. Benim için ne işe yaradı:

setxkbmap -layout us -option lv3:caps_switch -variant intl

Bu, mod kilidini mod3 anahtarı olarak etkinleştirir, düzeni "us" olarak ayarlar ve varyantı "intl" olarak ayarlar. Balık gibi etkileşimli bir kabuk kullanırsanız, olası parametrelerin tam bir listesini almak için "-layout", "-option" veya "-variant" ifadelerinden sonra sekmeye basabilirsiniz.

Daha fazla arka plan: xmodmap yaklaşımını bir yıl önce standart gnome ortamından geçiş yaparak i3 pencere yöneticisini çalıştıran bir Ubuntu makinesinde denedim. "Biz" xkb klavye düzenini, özellikle de ölü tuşlarla uluslararası olanı değiştirdim - gnome-desktop-manager (mod3 tuşu olarak caps-lock ayarlama seçeneği var) kullanıldığında iyi çalıştı, ancak yapamadım xmodmap ile çalışmasını sağlayın. Bu benim hatamdı: gdm GUI'nin kapak kilidini mod3'e eşlemek için xmodmap kullandığını düşündüm, ama gerçekte bu X11 seçeneğini ayarlıyordu. Artık Arch'a geçtim, onu anlamaya zorlandım.

Herkesin uyku ve geri döndürme bölümü ekleyerek localectl, xmodmap, setxkbmap ve test düzenlerindeki man sayfalarını okumasını planlayan herkese tavsiye ederim:

setxkbmap ... ; sleep 10; setxkbmap <INSERT DEFAULT SETTINGS>

bu bana çok zaman kazandırdı.

Yine de xmodmap yaklaşımının nasıl çalıştığını anlamıyorum. Umarım bu birine yardımcı olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.