AltGr içeren xmodmap bağlarım neden sadece bazı tuşlarda çalışıyor?


12

AltGR + Right_Windows'umu yeniden eşleştirmek istiyorum, ancak nasıl yapılacağını anlayamıyorum. Ne denersem deneyim, sağ alt tuşa basıldığında, sağ alt tuşuna basıldığında ya da basılı olmadığında ad anahtar sözcüğü yayar.

Bunlar şu anda test ediyorum xmodmap dosyasının içeriği. Klavyemde 38 "a" için anahtar kodu, 48 ise aportrophe / doublequote için anahtar kodu ve 134 sağ pencere anahtarının anahtar kodu.

keycode  38 = 1 2 3 4 5 6 7 8
keycode  48 = 1 2 3 4 5 6 7 8
keycode 134 = 1 2 3 4 5 6 7 8

Right_Alt + kesme işaretine bastığımda, 5 çıktısı var ancak Right_Alt + a ve Right_Alt + Right_Windows 1 (sağ alt basıldığında ve olmadığında) istediğim şey değil.

Geçerli klavye düzenim şu us(alt-intl)ve sağ alt görünüşe göre AltGr / Iso_Level3_Shift olarak ayarlanacak. Çıktısı xmodmap -pmaşağıdaki gibidir:

xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  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)

Neler olup bittiğine dair hiçbir fikrim yok, ancak henüz yapmadıysanız xev, donanımın ve Xwindows seviyesine kadar başlamak için ayırt edilebilir tuş basışları alıp almadığını görmek için çeşitli tuş kombinasyonlarını çalıştırmak ve basmak isteyebilirsiniz .
Joe

Aynı sorunu yaşıyorum. Kompozisyon tuşunu kullanarak yazmak zorunda olduğum çekçe ve ingilizce çift tırnak („/“ / ”) baskısını desteklemek için virgül ve noktayı değiştirmek istedim. Ben kullanıyorum us(cz_sk_de)klavye düzenini ve xmodmap.
Pavel Šimerda

Peki şimdi ne olacak? Başka bir lütuf boşa harcamak veya bu konuyu oldukça iyi tanımladığında yeni bir soru başlatmak pratik değildir. Xorg bir hata gibi görünüyor ama herhangi bir referans bulunamadı. Otomatik olarak verilmesine rağmen mevcut cevap açıkça yanlıştır.
Pavel Šimerda

Vazgeçtim ve çalıştığımı bildiğim farklı anahtarlıklar kullandım: / Bunun bir hata gibi göründüğüne katılıyorum, ancak bunun hangi sistemle ilgili olduğunu ve nerede rapor
edeceğini

Yanıtlar:


7

Tek tek anahtar eşlemelerini yapılandırmak için xmodmap kullanma

Kendi araştırmamın sonuçlarını yazmanın zamanı geldi.

Ben xmodmap bir şey kaçırmış olması gerektiğini düşündüm ve çok iyi belgelenmiş değildir ve insanların kafası karışık. Ancak XKB ve xmodmap ile ilgili X.Org tasarımının sadece aptal olduğu ortaya çıktı.

Destansı başarısız: xmodmap

Orijinal eşleme klavyenizdeki eşlemeler mevcut olduğu sürece mevcut eşlemeleri yeniden tanımlamak için xmodmap kullanabilirsiniz. Soruda açıklanan durumda AltGr kullanmak için hiçbir tuşun davranışını genişletemezsiniz. AltGr tuş takımlarını yalnızca zaten AltGr kullanan anahtar kodları için değiştirebilirsiniz.

Ayrıca bkz: http://blog.azundris.com/archives/193-X-treme-pain-XKB-vs-XModMap.html

Çözüm: Mode_switch

Bu geçici çözüm @ Ned64 tarafından verilen yanıtta açıklanmıştır. Sen eşleştirmek AltGrgelen ISO_Level3_Shiftetmek Mode_switch.

Yeniden eşleştirmek için aşağıdaki komut satırını başarıyla kullandım AltGr.

xmodmap -e 'keycode 108 = Mode_switch'

Dezavantajı, geçerli klavye düzeninizi xmodmapbozmasıdır , ancak tüm eşlemeleri daha önce belirtilen @ Ned64'i kullanarak tek tek yeniden oluşturabilirsiniz.

Geçici çözüm: Değiştirilmiş klavye düzeni

us(cz_sk_de)Klavye düzenim olarak kullanıyorum ve genişletmek istediğim tuşlar için yapılandırma ekleyerek değiştirmeye çalıştım.

key <AB08>  { [ comma, less, doublelowquotemark, leftdoublequotemark ] };
key <AB09>  { [ period, greater, ellipsis, rightdoublequotemark ] };

(Bölümde xkb_symbols "cz_sk_de"arasında /usr/share/X11/xkb/symbols/us)

Değiştirilen sürümü kullanmak için klavye düzenini sıfırlamanız yeterlidir.

setxkbmap 'us(cz_sk_de)'

Şimdi (1) Çek ve İngiliz tırnak işareti ve kombinasyonlarını kullanarak elips yazabilirsiniz ,, ., Shiftve AltGrkullanan tuşlarını yeniden tuşları ve / veya (2) xmodmapşimdi onlar tanımlandığını.

Ana dezavantaj, setxkbmapklavye düzenleri için keyfi konumları desteklemediği ve bu nedenle ana dizininiz yerine sistem yapılandırmasına yazmanız gerektiğidir.

Sonuç

Bu, bir anahtar kodu ve değiştiricilerin bir sembole dönüştürülmesi gibi önemsiz bir şeyin bile bir sorun olduğu ortaya çıkan X.Org'un aşırı mühendisliği ve kötü tasarımının bir örneği gibi görünüyor. Araçlar, kullanıcı yapılandırmasındaki tek tek anahtar eşlemelerini herhangi bir yan etkisi olmadan değiştirmek için makul bir yol gibi görünmüyor.


"AltGr kullanmak için herhangi bir tuşun davranışını genişletemezsiniz" - bu sorun hep baştan beri! Teşekkürler.
hugomg

5

Birinci adım: AltGr'i kullanılabilir yapın

AltGr değiştirilmiş Anahtarlar benim sistemimde sadece AltGr-Key'i yeniden eşlediğimde çalıştığını öğrendim Mode_switch:

xmodmap -e "keycode 108 = Mode_switch Mode_switch Mode_switch Mode_switch"

Farklı bir klavyeniz varsa, 108kodunuzla değiştirmeniz gerekebilir , yazarak kontrol edin.

xmodmap -pke | grep Alt_R

sonra bu numarayı kullanın. (Anahtar normalde Alt_Rbildiğim sistemlerde çağrılır .)

Alternatif olarak, Alt_R henüz başka bir şeye atanmamışsa da bu işe yarayabilir:

xmodmap -e "keysym Alt_R = Mode_switch Mode_switch Mode_switch Mode_switch"

AltGr değiştiriciniz şimdi değiştirici listenizde 3. konuma (Shift: 4 ile) sahip olacak.

İkinci adım: Anahtarları gerektiği gibi atayın

Klavyenizden istediğiniz herhangi bir tuşa AltGr varyantları atayabilirsiniz. Şimdi istenen koda karşılık gelmeyen başka anahtarlarınız varsa, bunları tıpkı diğer anahtarlarınız gibi (test ettikleriniz) yeniden atamanız gerekir.

Üçüncü adım: Bunu betiğe dönüştürün

Şimdi xmodmapkomutlarınızı alın ve varsayılan klavyenizdeki tüm değişiklikleri (yalnızca) bir dosyaya yazın - bu, tam bir tuş haritası yüklemekten daha hızlıdır. Bu komut dosyasını her oturum açma işleminden sonra ve tuş haritası her işlemle sıfırlandığında başlatın.

Solaris, IRIX ve Linux altında yıllar boyunca bunu çok denedim ve bence AltGr'i çalıştırmak için tek çözüm bu - ve 20 yıldan fazla bir süredir benim için iyi çalıştı.


1
Böylece, sağ pencere tuşu "1" yerine "3" gibi davranmaya başladı. Ancak, şimdi tüm mevcut altgr değiştiricileri çalışmayı durdurdu (sanırım çalışması için bir "3" yerine "5" olması gerekir miydi?)
hugomg

Bunu denediğiniz için teşekkürler. Lütfen artık çalışmayan bir anahtar için xmodmap -pmve xmodmap -pke | grep -w SOMECHANGEDKEYbu durumda posta gönderin .
Ned64

(sonra xmodmapçıktınıza göre yeni değiştiriciyi eklememiz gerekecek )
Ned64

xmodmap -pke | grep Alt_Rsistemimde hiçbir sonuç döndürmüyor. Sistemim Gentoo kararlı ve Lenovo ThinkPad X230. Ben de grep -iboşuna çalıştı .
Pavel Šimerda

Denedim ve sorun şudur ki aksanlı mektuplar us(cz_sk_de)benim için çalışmayı durdurdu. Bu nedenle bu cevap benim için işe yaramıyor ve diğerleri için işe yaramıyor.
Pavel Šimerda

1

Görünüşe göre, xmodmap varsayılan AltGR'yi olması gerektiği gibi okumuyor, belirli klavye düzenleriyle sınırlı olabilir, belki de ABD dışındaki düzenler, her iki durumda da, klavye düzeninizi değiştirirken gerçek sorun t şapka, bazı insanlar diğer klavye düzenleri için yapılandırmak için bir acı olacak alışıldık düzeni üzerinde özel karakterler (ðþæöáúíóåů ve benzeri karakterleri olan İskandinav klavye düzenleri gibi) kullanmaları gerektiği için bunu yapmak istemiyorlar.

Koşabilirsin

xmodmap -e "keycode 108 = Mode_switch"

AltGR'yi xmodmap'in çalışabileceği bir şeye yeniden bağlamak için, gerçekten de AltGR tuşuna bastığınızda bir keycoad'ın 3. ataması çıkacak, ancak AltGR tuş bağlamaları artık AltGR tuşuyla çalışmayacağı için orijinal klavye düzenini tamamen bozacak.

Mevcut klavye düzenimi bozmayan ve düzen değiştirmeyi içermeyen iki geçici çözüm buldum , biri Mode_switch'i başka bir anahtara bağlamak.

Bunun için ideal anahtar, AltGR'nin hemen yanındaki Super_R'dir, bunun için anahtar kodu 134'tür. Ancak tüm klavyelerde bunlara sahip değildir ve bir dizüstü bilgisayarımda da bende yok, bu yüzden sonuncuya bağlamaya karar verdim neredeyse hiç kullanmadığım bir anahtar, Doğru Kontrol.

xmodmap -e "keycode 105 = Mode_switch"

Ben bir Amerikan fiziksel klavye düzeni var, ama Avrupa düzeni yapılandırma ve daha az / daha büyük / bar tuşu (ISO_Backslash olarak da bilinir, ancak bu xmodmap kendisi tarafından tanınmıyor olmasına rağmen) genellikle bu tür klavyelerde Z yanında eksik. Ben Menü (135) bağlı ama R_Ctrl ve Super_R alternatif olarak hizmet verebilir

Bu sanırım kirli bir düzeltme.

İkinci geçici çözümün çözülmesi biraz daha uzun sürdü. Sxhkd kullanma (xbindkeys alternatifi)

Bunu ~ / .config / sxhkd / sxhkdrc dosyasına eklerseniz :

~ISO_Level3_Shift
    xdotool key Mode_switch

AltGR'niz normal şekilde çalışır, ancak basıldığında, Mode_switch değiştirilir (kapak kilidi gibi, ancak Mode_switch için gibi) ve onu kullanan tüm xmodmap anahtarları, geçiş yapmak için AltGR tuşuna tekrar basana kadar AltGR moduna kilitlenir. Anahtar bırakıldığında bir komut dosyasının otomatik olarak açılmasını sağlamak için basit bir mesele olmalı, ancak bunu yapmaya teşebbüslerim oldukça azdı.

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.