Sol ve sağ üst karakter tuşlarını tek tek nasıl eşleyebilirim?


10

Öncelikle, X ve XKB hakkındaki cehaletimi affedin; Ayrıntılı bir kavrayışa ihtiyaç duymadan istediğimi elde edebilmek umuduyla bir çözümü hacklemeye çalışıyorum.

Ubuntu 12.04'te iki kaydırma tuşundan hangisinin Level2 değiştiricisini oluşturduğunu şart koşan bir XKB klavye haritası oluşturmaya çalışıyorum. Özellikle, 4anahtar sadece $sola değil sağa kaydırıldığında basılı olmalıdır .

Şu ana kadar yaptığım okuma:

Özel bir tür tanımlamaya çalıştım ve daha sonra açıkça bir semboller haritasında bakın:

/usr/share/X11/xkb/types/mbfisher:

default xkb_types "mbfisher" {
  type "RIGHT_SHIFT" {
    modifiers = None+Shift_R;
    map[None] = Level1;
    map[Shift_R] = Level2;
  };
}

/usr/share/X11/xkb/symbols/mbfisher:

default
partial alphanumeric_keys
xkb_symbols "basic" {

  name[Group1]= "mbfisher";

  key <AE04> {
    type= "RIGHT_SHIFT",
    symbols[Group1]= [ 4,  dollar ]
  };

};

Daha sonra Ubuntu Klavye Düzeni GUI ile haritayı seçiyorum.

Bu açıkça 4tuşun dışında alfasayısal klavyeyi devre dışı bırakır , ancak dolar işareti her iki kaydırma tuşuyla da yazılabilir.

Ben çok işe yaramaz bilgi ile büyük bir soru yazma bilincindeyim bu yüzden burada duracağım; lütfen kaçırdığım bir şey isteyin.

Herhangi bir fikir?

Yanıtlar:


2

İstediğiniz çözüm olup olmadığını bilmiyorum ama sol kaydırma tuşunu devre dışı bırakmanın bir yolu xmodmap kullanıyor olacaktır. ~/.Xmodmapİçeriği olan bir dosya oluşturma

clear shift
add shift = Shift_R

ve koş xmodmap ~/.Xmodmap.


Yorumlara / sohbete bakın:

Başka bir program tarafından xkbmap'inizde başka değişiklikler yapılmışsa, sorunlarla karşılaşabilirsiniz, böylece varsayılan bir xkbmap'e sıfırlama setxkbmap usgerekli olabilir.

Bazı tuşların yalnızca bir vardiya tuşuna yanıt vermesini istiyorsanız, mevcut klavye düzenini alabilirsiniz, xmodmap -pke > .Xmodmapbu size .Xmodmaptüm anahtarlarınızın bir listesini şeklinde verir keycode XX = functions. Bu atamada her bir anahtar kodun sağ tarafında birkaç işlevi olabilir. Her biri farklı bir değiştiriciye + o tuşa karşılık gelir . Clear + add'i yukarıdan ekleyebilir ve benzer bir şey ekleyebilirsiniz add mod5 = Shift_L. Sağ üst karakter mod2'ye karşılık gelirken, sol üst karakter mod5 olur. Daha sonra, sol sütundayken aramak istediğiniz tuşların mod2 işlevlerini NoSymbol, sağ sütuna ( keycode 57 = n N-> keycode 57 = n NoSymbol NoSymbol NoSymbol N) ulaşıncaya kadar ve boşlukları ekleyerek mod5'e taşıyabilirsiniz .


Yardımcı olduğuma sevindim. İşe yaradı mı?
Trudbert

Üzgünüm, yoğun bir gün. Xmodmap çalıştırdıktan sonra hala iki vardiya anahtarım var, değişikliği almak için başka bir şey yapmam gerekir mi?
mbfisher

Kullanılabilir herhangi bir kaymaya anahtarlarını olmamalıdır bundan sonra o geri kalanı da çalışması gerekir çalışırsa xmodmap -e "açık bir değişim" Deneyin
Trudbert

Hayır, hala vardiya anahtarları var. # xmodmap -verbose -e "clear shift" ! 1: clear shift clear shift ! ! executing work queue ! clear shift
mbfisher

garip. Hata mesajı yok mu? clear, değiştiriciyle ilişkili her şeyi kaldırmalı, böylece hiçbir şey kalmamalıdır. Bir saat kadar sonra ellerimi linux sistemine alıp tekrar bakacağım.
Trudbert

2

İşte nihayet işe yaradı! Xkb yapılandırması yerine xmodmapbir ~/.Xmodmapdosya kullandım .

~/.Xmodmap:

clear Shift

! Key Shift+Key mode_switch+Key mode_switch+Shift+Key AltGr+Key AltGr+Shift+Key
! Key Shift_L+Key Shift_R+Key Shift_R+Shift_L+Key AltGr+Key AltGr+Shift_L+Key

keycode 10 = 1 1 exclam 1
keycode 11 = 2 2 at 2
keycode 12 = 3 3 numbersign 3
keycode 13 = 4 4 dollar 4
keycode 14 = 5 5 percent 5

keysym Shift_R = Mode_switch
add Shift = Shift_L

Yorum yapılan 2 satır (başından itibaren !) değişikliklerimden önce ve sonra sütun başlıklarını gösterir. Bu, shift_R'yi Mode_switch olarak eşlediğim için col 2'yi Shift_L ve col 3'ü Shift_R olarak belirtmeme izin verdi.

Değişiklikler şu şekilde yapılır:

 # setxkbmap us
 # xmodmap ~/.Xmodmap

setxkbmap ustemiz bir sayfadan çalışmak için varsayılan ABD haritasını ayarlar ve xmodmapözel değişiklikleri haritaya ekler.

Uygulandığı zaman !, @, #, $ve %karakterler yalnızca sağ shift tuşu ile yazılabilir ve ^, &, *, (ve )sadece sol shift tuşu ile yazılabilir.

Artık klavyenin sol tarafındaki tüm tuşları yalnızca sağ üst karakter tuşuyla (yani aptal karakterler ve büyük harf değişiklikleri) değiştirerek eşleştirerek devam edebilirim; bu çözüm, sadece sol tarafı yeniden eşleştirmem gerektiği anlamına geliyor.

Yol boyunca bulunan diğer faydalı bağlantılar:

@Tududbert'e yanıtı en iyi şekilde bulduğum için çok teşekkür ederim!

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.