“1. Peki 5. seviye değiştirici ne yapıyor? ”
Beşinci seviyeyi seçer. 2. seviye değiştirici (sadece normal vardiya) ikinci seviyeyi seçer ve 3. seviye üçüncü seviyeyi seçer.
5. seviye değiştiricinin dördüncü seviye yerine beşinci seviyeyi seçmesinin nedeni (3. seviye değiştiriciden hemen sonra), bu üç değiştiricinin sekiz farklı seviyeyi seçmek için farklı şekillerde birleştirilebilmesidir (bu, değiştiricilerin hiçbirini kullanmamayı içerir, bu tür herhangi bir değiştirici olmadan bir tuşa basar). 2 ↑ 3 = 8'den beri sekiz kombinasyon vardır. İlk iki değiştirici için dört kombinasyon vardır:
- Değiştirici yok (düzey 1)
- 2. seviye değiştirici, diğer bir deyişle kaydırma (2. seviye)
- 3. seviye değiştirici (seviye 3)
- 2. + 3. değiştirici (seviye 4)
Üçüncü değiştiricinin (5. seviye) eklenmesi dört seviye daha ekler.
“2. Nasıl tek bir tuş üzerinden 5 ya da altı farklı karakterler olsun (Shift modifiye, böylece kurmak yapmak Alt Grve Right
Ctrlörneğin)?”
Her şeyden önce, anahtar başına beş veya daha fazla karakter kullanan bir düzene ihtiyacınız var. Mevcut bir düzeni seçebilirsiniz, ancak şu anda kullanmakta olduğunuz düzene daha fazla seviye eklemek istiyorsanız, bu uygun olmayabilir. Örneğin, Neo klavye düzeni († 1) vardır, ancak bu “Alman Dili için optimize edilmiştir”, bu nedenle çoğu İngilizce konuşmacı için harika değildir.
Yine de, Neo'nun seviye 5 değiştiricisi için hangi tuşları seçtiğine bakmak öğretici olabilir.
Neo, görünüşe göre “Mod4” için seviye 5 değiştiricisini çağırıyor. Gördüğünüz gibi sol kaydırma tuşunun ( LSGT
) sağındaki tuşu ve sağ alt tuşu / AltGr
tuşunu kullanır. Bu, ABD klavyesine (104 tuş) kıyasla dar bir sola kaydırma ve uzun ve ince dönüş tuşuna sahip bir Avrupa klavyesinde (105 tuş). ABD klavyesini temel alan bir klavye düzeni için, başka tuşların seçilmesi veya tercih edilmesi gerekebilir.
Seviye 5 değiştirici tuş seçme
Sup'nin cevabında Xmodmap kullanmayı seçti. Günümüzde Xmodmap üzerinde Setxkbmap gibi araçlar önerilmektedir. Xkb, seviye 5 değiştiriciyi seçmek gibi şeyler için önceden tanımlanmış birçok seçenekle birlikte gelir. Eğer danışın
adam xkeyboard-config ve arama için lv5
bu seçenekleri bulabilirsiniz:
┌──────────────────────┬───────────────────────────────────────────────────┐
│ Option │ Description │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:lsgt_switch_lock │ <Less/Greater> chooses 5th level; acts as onetime │
│ │ lock when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:ralt_switch_lock │ Right Alt chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:lwin_switch_lock │ Left Win chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:rwin_switch_lock │ Right Win chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
└──────────────────────┴───────────────────────────────────────────────────┘
Bu nedenle belgelenen seçenekler LSGT
anahtar, sağ alt anahtar, sağ Windows anahtarı ve sol Windows anahtarıdır. Gördüğümüz gibi Neo ilk iki seçeneği kullanıyor.
lv5:ralt_switch_lock
Seçeneği bir düzende kullanmak istediğinizi varsayalım. Bu komut, us
düzeni bu düzey 5 değiştirici tuşuyla ayarlar :
setxkbmap -option "lv5:ralt_switch_lock" us
Belgelendirilmiş seçeneklerden herhangi biri için man xkeyboard-config
, -option
Setxkbmap kullanırken bunu bir argüman olarak kullanın.
Bu seçeneklerin yeterli olmaması ve 5. düzey değiştirici olarak başka bir anahtar tanımlamak istemeniz durumunda, bu seçeneklerin bildirimlerine bakmak öğreticidir. İçeride gibi görünüyorlar
/usr/share/X11/xkb/symbols/level5
. Beyanı
lv5:ralt_switch_lock
şuna benzer:
partial modifier_keys
xkb_symbols "ralt_switch_lock" {
include "level5(lock)"
key <RALT> {
type[Group1] = "EIGHT_LEVEL",
symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift,
ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
};
};
Sağ taraf, symbols[Group1]
anahtarın her seviyesinin hangi anahtar veya karakteri üretmesi gerektiğini belirtir. Bu, olası sekiz seviyenin tümünü kullanır, çünkü başka bir seviye 5 vites tuşuyla birlikte basıldığında seviye 5 değiştiriciyi kilitlemesi gerekir. Bu nedenle, 5-8
ISO_Level5_Lock
. Seviyeler, 5. seviyeye kaydırmayı ve diğer shift tuşlarının bir kombinasyonunu (hepsine yok) basılı tutarak erişildiğinden, bu seviyelere erişilir. Yalnızca kaydırma davranışını istiyorsanız, aynı zamanda iki tuşa basıldığında da davranışı istemiyorsanız, daha basit bir bildirim yapabilirsiniz (aynı dosyadan):
// The right Alt key (while pressed) chooses the fifth shift level.
partial modifier_keys
xkb_symbols "ralt_switch" {
key <RALT> {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level5_Shift ]
};
include "level5(modifier_mapping)"
};
Bir düzene ekstra düzeyler ekleme
Xkb düzenleri oldukça modülerdir. Şunları yapabilirsiniz dahil mevcut düzenleri ve bunları değiştirir. Böylece 5 seviyeden az mevcut bir düzen seçebilir ve buna bazı seviyeler ekleyebiliriz.
Dosyayı mizanpajlarınızla /usr/share/X11/xkb/symbols/
veya Xkb araçlarınızın mizanpaj aradığı herhangi bir yere kopyalayarak yeni mizanpajlar yapabilirsiniz
. Ancak bu sudo ayrıcalığı gerektirir, bu yüzden en iyi çözüm değildir. Alternatif bir dizin yapısını kopyalamak xkb/
ve uygun dizin altındakiler içinde düzenleri koymak xkb/
yani
symbols/
. Diyelim ki bir dosya yaptınız xkb-tree/symbols/my-layouts
. Bu dosyada tanımlanan mizanpajları kullanmak için , çıktıyı kullanma -print
seçeneğini kullanabilir setxkbmap
ve ardından çıktıyı buna ekleyebilirsiniz xkbcomp
. Bu sarmalayıcı betiği düzenleri girdi olarak alır:
#!/bin/sh
# `-option ""` resets all options.
setxkbmap -option "" -layout "$1" \
-print |
xkbcomp -I"<path-to-project>/xkb-tree" - "$DISPLAY"
Düzeni olan dosya söz konusu olduğunda, diyelim ki dört düzey kullanan "ABD uluslararası" düzenini genişletmek istiyoruz. Her şeyden önce, seviye 3 ve seviye 5 vites tuşlarını Neo'nun yaptığı gibi ayarladık:
partial alphanumeric_keys
xkb_symbols "mine" {
// US international
include "us(intl)"
// Set up level 3 modifiers.
include "level3(modifier_mapping)"
include "level3(bksl_switch)"
include "level3(caps_switch)"
// Set up level 5 modifiers.
include "level5(modifier_mapping)"
include "level5(lsgt_switch)"
include "level5(ralt_switch)"
};
Şimdi bazı ekstra karakterler eklemek istiyoruz. Örnek olarak sadece Qwerty mizanpajlarının ilk dört anahtarını kullanalım. Bu tuşlar vardır Q
için R
uygun olan <AD01>
için <AD04>
. Öncelikle anahtarları sekiz seviyeye kadar kullanabilmemiz gerekiyor:
key.type[Group1] = "EIGHT_LEVEL";
İlk dört seviye için, onları yeniden tanımlamamak için onları eşleriz NoSymbol
. Sonra iki seviye ekliyoruz. 5. seviyeye okları ekleriz ←↓↑→
(† 2). 6. seviyeye yön tuşlarını ekliyoruz. Düzenimiz şöyle görünür:
partial alphanumeric_keys
xkb_symbols "mine" {
// US international
include "us(intl)"
// Set up level 3 modifiers.
include "level3(modifier_mapping)"
include "level3(bksl_switch)"
include "level3(caps_switch)"
// Set up level 5 modifiers.
include "level5(modifier_mapping)"
include "level5(lsgt_switch)"
include "level5(ralt_switch)"
// Make the following keys capable of using eight levels.
key.type[Group1] = "EIGHT_LEVEL";
key <AD01> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
leftarrow, Left
] };
key <AD02> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
downarrow, Down
] };
key <AD03> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
uparrow, Up
] };
key <AD04> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
rightarrow, Right
] };
};
Kullanmak için yaptığımız sarmalayıcı komut dosyasını kullanabiliriz:
./setxkbmap-wrapper "my-layouts(mine)"
† 1: Neo, de(neo)
Xkb'dir; setxkbmap "de(neo)"
.
† 2: Xkb'nin kullandığı sembolik adları bulmak için adlı bir dosyayı arayın keysymdef.h
. Adında bir dizinin altında olmalıdır X11/
. Unicode adlarını da kullanabilirsiniz, örneğin U2192
U + 2192 için.