Ctrl ve Alt tuşlarını yeniden ata - xmodmap 'BadValue' hatası


13

Emac'leri kullanılabilir hale getirmek için klavyemi yeniden eşleştirmeye çalışıyorum. Ergonomik klavyem tek Kontrol tuşunu izole edilmiş 4 tuşlu adaya sola koyar.

İşletim sistemi Debian sıkıştır.

İşte beslemeye çalıştığım satırlar xmodmap, onları bir dosyaya yerleştiriyorum ~ / .Xmodmap:

temizle Kontrol
temizle Mod1
! Alt tuşları klavyemde 'Seçenek' olarak etiketlenmiş,
! xev kullanarak bunları sırasıyla Alt_L ve Alt_R keysym'lerini göndermeleri gösterir
keysym Alt_L = Kontrol_L
keysym Alt_R = Kontrol_R
! Super_L ve Super_R anahtarları Windows anahtarlarıdır
keysym Super_L = Alt_L
keysym Super_R = Alt_R
add Control = Kontrol_ Kontrol_R
Mod1'i ekle = Alt_L Alt_R

Amacım Option (aka Alt) anahtarlarımın Control tuşları gibi davranmasını sağlamak ve Windows (aka Süper) anahtarlarımın bu şekilde davranmasını sağlamak Alt.

İşte söz konusu tuşlar için xev tarafından üretilen anahtar kodları ve keyms'ler. Not: Klavyemin (Goldtouch ergonomik klavyesi) yalnızca bir kontrol tuşu var.

anahtar kodu 37 (anahtar kodu 0xffe3, Control_L)
anahtar kodu 64 (0xym9, Alt_L tuş takımı)
anahtar kodu 133 (0xymeb tuş takımı, Super_L)
anahtar kodu 134 (0xymec, Super_R tuşları)
anahtar kodu 108 (0xymea anahtar kodu, Alt_R)

İşte xev çalışırken görüntüler xmodmap .Xmodmap

Notify olayı, seri 34, sentetik NO, pencere 0x0,
    istek MappingKeyboard, first_keycode 204, sayı 1

Notify olayı, seri 34, sentetik NO, pencere 0x0,
    istek MappingKeyboard, first_keycode 64, sayım 1

Notify olayı, seri 34, sentetik NO, pencere 0x0,
    istek MappingKeyboard, first_keycode 108, sayı 1

Notify olayı, seri 34, sentetik NO, pencere 0x0,
    istek MappingKeyboard, first_keycode 206, sayı 1

Notify olayı, seri 34, sentetik NO, pencere 0x0,
    istek MappingKeyboard, first_keycode 133, sayım 1

Notify olayı, seri 34, sentetik NO, pencere 0x0,
    istek MappingKeyboard, first_keycode 134, sayı 1

Ve işte dönen hata xmodmap:

X Başarısız olan istek hatası: BadValue (tamsayı parametresi çalışma aralığının dışında)
Başarısız olan isteğin ana kodu: 118 (X_SetModifierMapping)
Başarısız olan istekte değer: 0x17
Başarısız olan istek seri numarası: 17
Çıkış akışındaki mevcut seri numarası: 17

bunu nasıl çözebileceğime dair herhangi bir öneriniz var mı?


Hangi işletim sistemi ve sürümde? Ne tür bir klavye (PC / Mac / Sun / ...)? Önce xevbir terminalde, sonra xmodmapbaşka bir terminalde çalıştırmayı deneyin . MappingNotifyDan bazı stanzlar görmeli xev, bunları sorunuza eklemelisiniz. Ayrıca, xevpencerede yer alan çeşitli tuşlara basın ve bize hangi tuş koduna ve tuş takımına karşılık geldiklerini söyleyin (xev çıktısının “keycode 37 (keym.
Gilles 'SO- kötü olmayı durdur

Yanıtlar:



7

Giles ile bağlantılı geçici çözüme baktığımda, bu benim için işe yaradı:

clear Mod1
clear Mod4

keycode 204 = NoSymbol NoSymbol NoSymbol NoSymbol
keycode 206 = NoSymbol NoSymbol NoSymbol NoSymbol

keycode 64 = Control_L Control_L Control_L Control_L
keycode 133 = Alt_L Alt_L Alt_L Alt_L
keycode 134 = Alt_R Alt_R Alt_R Alt_R
keycode 108 = Control_R Control_R Control_R Control_R

add Control = Control_L Control_R
add Mod1 = Alt_L Alt_R

Seçenek tuşlarım artık Kontrol tuşları ve Windows Tuşlarım Alt tuşları gibi işlev görüyor.


3

Sorun, başka bir değiştirici anahtarına zaten eklenmiş olan bir değiştiriciye keyym eklemeye çalıştığınızda ortaya çıkar. Bir modifiye ediciye bir keyym eklerseniz, bu durumda keybime eşlik eden diğer tüm keysymlerin de bu modifiye ediciye ilave edildiğini bilmek çok önemlidir.

Örneğin:

clear mod5
add mod5    = ISO_Level3_Shift Mode_switch

sonuçlanabilir

mod5        backslash (0x33),  Caps_Lock (0x42),  ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

çünkü senin gibi bir şeyin var

keycode  66 = Caps_Lock NoSymbol ISO_Level3_Shift

~ / .Xmodmap'nizde (KeySym eşlemesi için geçerli anahtar kodunu görüntüleyin xmodmap -pke)

gibi bir şey yapmaya çalıştığınızda söz konusu BadValue hatasını üretecek

add lock    = Caps_Lock

çünkü Caps_Lock mod5 değiştiricisine zaten eklenmiştir.


2

Sorunuza gerçekten cevap vermese de, bu sorununuza başka bir çözümdür. Aşağıdakini "InputDevice" Bölümüne ekleyerek xorg.conf dosyasını düzenleyin:

 Option "XkbOptions" "ctrl:swapcaps"
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.