Super + x, Super + c, Super + v formunun sadece bir kaç dizisini Ctrl + x, Ctrl + c, Ctrl + v gibi diğer dizilere bağlamak istiyorsanız, (bunlar istediğiniz şekilde) belirli Süper anahtar dizileri, sisteminizde Süper tuşun diğer kullanımlarını etkilemeden kesmek ve yapıştırmak için genellikle eşlenir, yalnızca XKB uzantısını kullanmak mümkündür. Aşağıdaki prosedür, adımları açıklar ve iki farklı başlangıç klavyesi ayarları için ayrıntılara iki farklı örnek verir; umarım bu sisteminize adapte olmak için yeterli bilgi sağlayacaktır. Gibi sistem konumlarında olanlar da dahil olmak üzere, sisteminizde dosya oluşturma ve düzenleme konusunda rahat olduğunuz varsayılmaktadır /usr/share/X11/xkb
.
XKB yapılandırma ağacınızın nerede durmasını istediğinize karar verin. İlk önce sistemi bul. Genellikle / usr / share / X11 / xkb dizinindedir ve orada değilse nasıl bulacağımı tam olarak bilmiyorum; Sisteminizi sadece "xkb" adlı dizinler için arayabilirsiniz. Her neyse, bir kere bulduktan sonra, sistemi bir tane olarak değiştirebilir veya seçtiğiniz herhangi bir dizini kullanabilirsiniz. Sistem dizini kullanmanın avantajı, değişikliklerinizi çok daha kolay bir şekilde çağırabilmenizdir, ancak dezavantajı gelecekteki sistem güncellemelerinin değişikliklerin üzerine yazmasıdır (uyardınız). Her durumda, bundan sonra bahsi geçen tüm dosya isimleri, bu dizine göredir; bu, gerektiğinde $ XKBLOCAL $ olarak bahsedeceğim ve tüm komutlar sizin geçerli dizininiz olduğunu varsayar.
Geçerli x, c, v tuşlarının hangi XKB anahtarının "tür" olduğunu belirleyin. Bunu yapmanın en kolay yolu komuttur xkbcomp -a $DISPLAY - | grep -C 6 c,
(virgülün kasıtlı olarak desene dahil edildiğini unutmayın). İlk örnek kurulumumda, bu şunu üretir:
key <AB02> {
type= "ALPHABETIC",
symbols[Group1]= [ x, X ]
};
key <AB03> {
type= "ALPHABETIC",
symbols[Group1]= [ c, C ]
};
key <AB04> {
type= "ALPHABETIC",
symbols[Group1]= [ v, V ]
};
key <AB05> {
diğer örnek kurulumumda bu üretir
key <AB02> {
type= "FOUR_LEVEL",
symbols[Group1]= [ x, X, approxeq, dead_ogonek ]
};
key <AB03> {
type= "FOUR_LEVEL",
symbols[Group1]= [ c, C, ccedilla, Ccedilla ]
};
key <AB04> {
type= "FOUR_LEVEL",
symbols[Group1]= [ v, V, squareroot, U25CA ]
};
key <AB05> {
Sonuçta, ilk örnekte, ilgili tuşlar "ALFABETİK" türünde, ikinci örnekte "FOUR_LEVEL" türündedir. Klavye kurulumunuza bağlı olarak, bunların tamamen başka bir türden olduğunu görebilirsiniz. Bundan sonra, tür gerçek ALPHABETIC dizesiyle veya aşağıdaki komutlardan herhangi biriyle değiştirmeniz gereken $ TYPE $ olarak adlandırılacaktır.
$ TYPE $ tanımını bulun ve $ XKBLOCAL $ / types dizininde yeni bir dosyaya kopyalayın. İşte tam da bunu yapar bir komut var: xkbcomp -a $DISPLAY - | grep -z -o 'type "$TYPE$" {[^}]*};' > types/cutpaste
. Seçtiğim "cutpaste" dosyasının adı isteğe bağlı, istediğiniz adı kullanın, ancak sonraki adımlarda tutarlı bir şekilde bu dosyaya başvurmanız gerekeceğini unutmayın. İlk kurulumda, bu dosya içeriği alır
type "ALPHABETIC" {
modifiers= Shift+Lock;
map[Shift]= Level2;
map[Lock]= Level2;
level_name[Level1]= "Base";
level_name[Level2]= "Caps";
};
ve diğer örnekte içeriği alır
type "FOUR_LEVEL" {
modifiers= Shift+LevelThree;
map[Shift]= Level2;
map[LevelThree]= Level3;
map[Shift+LevelThree]= Level4;
level_name[Level1]= "Base";
level_name[Level2]= "Shift";
level_name[Level3]= "Alt Base";
level_name[Level4]= "Shift Alt";
};
İki şeyi yapmak için dosya türlerini / cutpaste'ı düzenleyin: uygun bir XKB maddesi yapan bir başlangıç ve postamble ekleyin ve Süper'e karşılık gelen değiştirici tarafından üretilen bir seviye daha eklemek için tür adını ve tür tanımını değiştirin. Bu değiştiricinin sisteminizde ne olduğunu kontrol etmelisiniz, muhtemelen aşağıda kullanıldığı gibi Mod4 olabilir. Gerekli modifikasyonlar, iki örnek / cutpaste örneğinin son versiyonundan açıkça anlaşılmalıdır:
default partial xkb_types "addsuper" {
type "ALPHABETIC_SUPER" {
modifiers= Shift+Lock+Mod4;
map[Shift]= Level2;
map[Lock]= Level2;
map[Mod4]= Level3;
map[Shift+Mod4]= Level3;
map[Lock+Mod4]= Level3;
level_name[Level1]= "Base";
level_name[Level2]= "Caps";
level_name[Level3]= "With Super";
};
};
ve
default partial xkb_types "addsuper" {
type "FOUR_LEVEL_SUPER" {
modifiers= Shift+LevelThree+Mod4;
map[Shift]= Level2;
map[LevelThree]= Level3;
map[Shift+LevelThree]= Level4;
map[Mod4]= Level5;
map[Shift+Mod4] = Level5;
map[LevelThree+Mod4] = Level5;
map[Shift+LevelThree+Mod4] = Level5;
level_name[Level1]= "Base";
level_name[Level2]= "Shift";
level_name[Level3]= "Alt Base";
level_name[Level4]= "Shift Alt";
level_name[Level5]= "With Super"';
};
};
İkinci adımda grep tarafından verilen anahtar sembol tanımlarını ikinci bir yeni dosya sembollerine / cutpaste içine kopyalayın ve benzer başlangıç ve postamble ekleyin ve yeni türleri kullanmak ve tanımlamak için istenen anahtarı işlemek üzere eylemler eklemek için tanımları değiştirin. Süper versiyonlar tarafından üretilmiştir. Bunun iki örneğindeki sonuçları:
default partial xkb_symbols "superversions" {
replace key <AB02> {
type[Group1]= "ALPHABETIC_SUPER",
symbols[Group1]= [ x, X, NoSymbol ],
actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=<LatX>,mods=Control,clearmods=Super)]
};
replace key <AB03> {
type[Group1]= "ALPHABETIC_SUPER",
symbols[Group1]= [ c, C, NoSymbol ],
actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=<LatC>,mods=Control,clearmods=Super)]
};
replace key <AB04> {
type[Group1]= "ALPHABETIC_SUPER",
symbols[Group1]= [ v, V, NoSymbol ],
actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=<LatV>,mods=Control,clearmods=Super)]
};
};
ve
default partial xkb_symbols "superversions" {
replace key <AB02> {
type[Group1]= "FOUR_LEVEL_SUPER",
symbols[Group1]= [x,X,approxeq,dead_ogonek,NoSymbol],
actions[Group1]= [NoAction(),NoAction(),NoAction(),NoAction(),RedirectKey(key=<LatX>,mods=Control,clearmods=Super)]
};
replace key <AB03> {
type[Group1]= "FOUR_LEVEL_SUPER",
symbols[Group1]= [c,C,ccedilla,Ccedilla,NoSymbol],
actions[Group1]= [NoAction(),NoAction(),NoAction(),NoAction(),RedirectKey(key=<LatC>,mods=Control,clearmods=Super)]
};
replace key <AB04> {
type[Group1]= "FOUR_LEVEL_SUPER",
symbols[Group1]= [v,V,squareroot,U25CA,NoSymbol],
actions[Group1]= [NoAction(),NoAction(),NoAction(),NoAction(),RedirectKey(key=<LatV>,mods=Control,clearmods=Super)]
};
};
İkinci örnekte, çizgi uzunluğunu biraz kontrol altında tutmak için (önemli olmayan) beyaz alanların bir kısmını da sıktığımı unutmayın.
XKB'nin kullanmakta olduğu kuralların adını bulun. Bu kolay, sonuçta gösterilir setxkbmap -query
. Benim durumumda "evdev" idi.
Kuralların / evdev'in (veya kurallarınızın adı ne olursa olsun) sistem sürümünü $ XKBLOCAL $ / rules / evdev'e kopyalayın ve oluşturduğumuz seçeneklere işaret eden kuralları ekleyin. Burada iki seçeneğiniz var: Tüm evdev'leri veya sadece klavye modelini, düzenini, varyantını ve gerçekte kullandığınız seçenekleri belirten kısımları kopyalayabilirsiniz. Elbette, sistem dosyalarını yerinde değiştiriyorsanız, herhangi bir kopyalama, sadece düzenleme yapmanız gerekmez.
Bu durumda, eklenenler ilk klavye kurulumundan bağımsız olarak aynıdır, bu yüzden sadece bir örnek var. Sen ile başlar o kurallar dosyasının bölümünü bulun ! option = symbols
ve bir satır ekleyin cutpaste:super = +cutpaste
o bölüme ve ayrıca kuralları dosyanın bölümünü bulun bununla başlar ! option = types
ve bir çizgi cutpaste:super = +cutpaste
bu bölüme de.
Evdev.lst dosyasının sistem sürümünü kopyalayın ve yeni seçeneğiniz için bir satır ekleyin. Bu dosyanın adının sadece .lst eklenmiş olan kurallar dosyasının adına karşılık geldiğine dikkat edin. Önceki adımda olduğu gibi, tüm dosyayı veya yalnızca kullandığınız model, düzen, varyant ve seçenek (ler) tarafından referans verilen kısmı kopyalayabilirsiniz. Bunun için başlayan bu dosyanın bölümünü bulmanız ve ! option
şunun gibi bir satır eklemeniz yeterlidir : cutpaste:super Add super equivalents of cut and paste operations
o bölüme.
Tamam, şimdi tüm yapılandırma dosyaları yerinde. Sistem dosyalarını değiştirdiyseniz, şimdi yeni seçeneğinizi ile çağırabilirsiniz setxkbmap -option cutpaste:super
. Öte yandan, yapmadıysanız, setxkbmap'a $ XKBLOCAL $ dizininizin nerede olduğunu bildirmeniz gerekir. Daha da kötüsü, sunucu bu dizinin nerede olduğunu bilmiyor ve setxkbmap bunu bilmiyor (ya da belki de bilemiyor çünkü sunucu başka bir makinede çalışıyor olabilir). Bu yüzden setxkbmap 'in çıktısını xkbcomp' e yönlendirmelisiniz ve $ XKBLOCAL dizininizin nerede olduğunu söyleyiniz. Bu nedenle tam komut satırı setxkbmap -I$XKBLOCAL$ -option cutpaste:super -print | xkbcomp -I$XKBLOCAL - $DISPLAY
.
Umarım bu kesin bir tanım / XKB dokümantasyonu / referansı az olduğundan, bu yardım birisinin yararınadır. Çok yararlı bir referans http://madduck.net/docs/extending-xkb/ idi .