Sol Shift ve Sol Kontrolü değiştirmek için setxkbmap komutunu kullanın


17

Sol Shiftve Sol CTRLtuşları setxkbmapyerine kullanarak değiştirmek mümkün mü xmodmap?

DÜZENLE

Ben açtınız Fcitx benim klavye düzeniyle yolu çok daha iyi çalışır ve her açıdan IBUS daha tuş eşleme özelleştirilmiş. Şiddetle tavsiye ederim.

Yanıtlar:


28

xmodmapeski; bu yüzden gerçekten xkbaraçlar ile yapılmalıdır .

İstediğiniz takas, varsayılan wth X11 dosyaları tarafından dahil edilmemiş gibi görünüyor; bu yüzden kendiniz yazmak zorundasınız.

Http://madduck.net/docs/extending-xkb/ sayfası , anlamamı ve bunu yapmanın bir yolunu bulmama yardımcı oldu.

Çıktısını ~/.xkb/keymap/mykbdkoyduğunuz bir dosya oluşturun setxkbmap, temel klavye tanımınız olacaktır; Örneğin:

setxkbmap -print > ~/.xkb/keymap/mykbd

ardından anahtar değişiminizi tanımlamak için bir semboller dosyası oluşturun, örneğin ~/.xkb/symbols/myswap

orada, aşağıdaki satırları koyun:

partial modifier_keys
xkb_symbols "swap_l_shift_ctrl" {
    replace key <LCTL>  { [ Shift_L ] };
    replace key <LFSH> { [ Control_L ] };
};

ardından ~/.xkb/keymap/mykbddosyayı düzenleyin ve xkb_symbolseklenecek satırı değiştirin

+myswap(swap_l_shift_ctrl)

son olarak, ile yükleyebilirsiniz xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY( -Iparametre için "~" kullanamazsınız ). Muhtemelen bazı nadir anahtarlar için tanımlanmamış semboller hakkında çok sayıda uyarı verecektir, ancak bunları yok sayabilirsiniz (örneğin, hatayı dave'ye yönlendirin:) 2> /dev/null.

Normal ve ters ctrl / shift'leriniz arasında kolayca geçiş yapmak istiyorsanız; sadece ~/.xkb/keymap/ekstra "myswap" seçeneği olmadan başka bir dosya altında oluşturun ve ile yükleyin xkbcomp. Bunları yüklemek için iki küçük komut dosyası oluşturabilirsiniz.


1
Teşekkürler. İşe yarıyor, ama bir kez. Sorun şu ki, IBus adında bir giriş motoru kullanıyorum. Giriş yöntemini her değiştirdiğimde ve sonra "Ctrl + Space" tuş vuruşuyla geri döndüğümde, Sol Shift ve Sol Kontrol geri alınır. Nasıl önleneceğine dair herhangi bir öneri.
gün

mmn, belki IBus kendine bazı klavye yeniden tanımlamaları yapar. xkbcomp $DISPLAY some.dumpIBus'u çağırmadan önce ve önce deneyin ve iki dökümün bir farkını yapın (bunlar tam klavye tanımıdır); muhtemelen farklılıklar göreceksiniz.
Pablo Saratxaga

Hmm, öyle, ne kadar can sıkıcı. Problemden kurtulmak için bir fikrin var mı? Komutun setxkbmap -option caps:escapeçalıştığına dikkat edin . IBus, değiştirilen Esc ve Caps_Lock tuşlarını hatırladı Ancak, değiştirilen Sol Shift ve Sol Kontrol tuşları için yapmaz.
gün

belki de IBus başlatıldığında klavyeyi okur. IBus'u boşaltmayı, klavyenizi değiştirmeyi ve tekrar yüklemeyi deneyin. Sorun devam ederse, IBus'a özel bir soru yapılmalıdır (ve belki bir hata bildirin; imho, IBus klavye değişikliklerini tespit etmeli ve onurlandırmalıdır)
Pablo Saratxaga

Selam. Birisi bana sol Alt tuşunu sol Kontrol tuşuyla değiştirmek için aynı tekniği nasıl kullanacağımı söyleyebilir mi? Myswap dosyasını değiştirmeye çalıştım: kısmi modifier_keys xkb_symbols "swap_l_shift_ctrl" {yerine anahtar <LCTL> {[Alt_L]}; <LALT> anahtarını değiştirin {[Control_L]}; }; ama işe yaramadı. TIA !!!
Neil Girardi

3

Ben haritalama bazı sorunlarla karşılaştıysanız LALTiçin Control_Lkullanan Pablo'nun çözümünü , bu ayarlamak gerekmez göründüğü modifier_mapsıra seçenekleri.

Bir şablondan /usr/share/X11/xkb/symbols/altwin- ara - kopyaladım xkb_symbols "ctrl_alt_win"ve aşağıdaki değişiklikleri ayarlamak için değiştirdim:

  • Kontrol için LALT tuşu **
  • Alt için LWIN tuşu
  • MENU tuşu - Windows tuşu

Son ~/.xkb/symbols/myswapdosya:

partial modifier_keys
xkb_symbols "swap" {
   key <MENU> {     [   Super_L     ]   };
   key <LALT> { [ Control_L, Control_L  ] };
   key <RALT> { type[Group1] = "TWO_LEVEL",
                symbols[Group1] = [ Alt_R, Meta_R ] };
   key <LWIN> { [ Alt_L, Meta_L ] };
   key <LCTL> { [ Control_L ] };
   key <RCTL> { [ Control_R ] };
   modifier_map Control { <LALT>, <LCTL>, <RCTL> };
   modifier_map Mod1 { <LWIN>, <RALT> };
   modifier_map Mod4 { <MENU> };
};

Ayrıca yeni bir kabuk açarken uyarı çıkışını önlemek -w0için xkbcompkomuta ekledim .

xkbcomp -w0 -I$HOME/.xkb $HOME/.xkb/keymap/mykbd $DISPLAY

** Mac ve Linux arasında çok fazla geçiş yaparken, kas hafızamın Mac klavyesine yaklaşmak için Linux'ta iki kontrol tuşum olmasını seviyorum.

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.