XKB ile birkaç anahtar kodu geçersiz kılın


10

XKB ile birkaç anahtarı karıştırmak istiyorum. (Neden? Bazı anahtarların uygunsuz olduğu bir dizüstü bilgisayarda.) Şu anda xmodmap kullanıyorum:

keycode 110 = Prior
keycode 115 = Delete
keycode 112 = Next
keycode 117 = Insert
keycode 119 = End
keycode 118 = Home

Bunun yerine XKB kullanmak ve belirli anahtar kodlarına farklı anahtar sözcükler atamak yerine belirli fiziksel anahtarlar için farklı sembolik adlar atamak istiyorum. ( Bu yüzden budur.) Ben tuş kodu 110 göndermek istediğiniz PGUPyerine HOME, tuş kodu 115 göndermek DELEyerine ENDkonfigürasyonu geri kalanı etkilenmemelidir vb (böylece PGUPkeysym göndermeye devam etmektir Prior, vb ve diğer tüm tuşlar kalır olduğu gibi).

Bu özel anahtar kodlarının atamalarını nasıl değiştirebilirim? Dosya yükleyeceğim xkbcomp somefile.xkb $DISPLAY, ne koymam gerekiyor somefile.xkb?

Yanıtlar:


14

Anahtar kodu değişikliklerinizi içeren bir dosya oluşturun ve kaydedin (örneğin) ~/.xkb/keycodes/local. ( keycodesDizin sabit olarak kodlanmıştır; temel dizin başka bir şey ve dosya adı da olabilir.) Bu sizin durumunuzda bulunacaktır

xkb_keycodes {
  <PGUP> = 110;
  <PGDN> = 112;
  <DELE> = 115;
  <INS> = 117;
  <HOME> = 118;
  <END> = 119;
};

Bunu yüklemek için çalıştırın

setxkbmap -print | sed -e '/xkb_keycodes/s/"[[:space:]]/+local&/' | xkbcomp -I${HOME}/.xkb - $DISPLAY

Bu, geçerli ayarlarınızı çıktılar +local, xkb_keycodes includeifadeye ekler ve ekleme ~/.xkbyoluna ekleyerek XKB derleyicisine yükler . (Eğer başka dosya bir adla adlandırılan varsa ~/.xkb/keycodes/local, belli ki değişim gerekir +localve -I${HOME}/.xkb}.) Tüm diğer ayarlar korunur O yolu.


1
Yani bu geçişe geçmek için beklenen yol ve yol -I! Teşekkürler, bunu sayfadan anlayamadım.
L. Levrel

bir cazibe gibi çalıştı! güncelleme xkb_symbols istiyorsanız çalıştı, sadece xkb_keycodes onunla değiştirin, çalıştı
zw963

5

setxkbmap -print > somefile.xkbKullandığınız tuş haritasını temel olarak almak için başlayabilir ve daha sonra aşağıdaki xkb_keycodesgibi istediğiniz anahtar adlarını yeniden tanımlayabilirsiniz :

xkb_keymap {
 xkb_keycodes {
  include "evdev+aliases(azerty)"
  // Custom <key name> = keycode
  <INS> = 117;
  <HOME> = 118;
  <PGUP> = 110;
  <DELE> = 115;
  <END> = 119;
  <PGDN> = 112;
 };
 xkb_types { include "complete"};
 xkb_compatibility { include "complete"};
 xkb_symbols { include "pc+fr+inet(evdev)"};
 xkb_geometry { include "pc(pc104)"};
};

Bu, bazı anahtar adlarının birden çok kez atandığına dair uyarılar oluşturur, ancak yalnızca sonuncusu sayıldığından işe yarar (bu nedenle, özel ayarların dahil edilmesinden sonra yapılması önemlidir). Ve dosya okunabilir olma avantajına sahiptir.

Başka bir yol, kullandığınız tuş haritasını bir dosyaya dökmek ve xkbcomp $DISPLAY somefile.xkbaynı satırları değiştirmektir (değerlendirilen içeriklerle aynı tuş haritasıdır). Bu şekilde birden fazla tanım için uyarı olmaz, ancak daha az okunabilir.


1
Tüm bu isimler ( evdev+aliases(azerty), vb.) Nereden geliyor? Açıkça tam bir yeniden yapılandırma değil, göreceli bir değişiklik yapmak istiyorum. Sorularda listelenen 6 dışındaki anahtarlar etkilenmemeli, komutu verdiğinizde oldukları durumda kalmalıdırlar.
Gilles 'SO

1
Onlar geliyor setxkbmap -print, onlar dosyalar /usr/share/X11/xkb/. Sanırım bütün bir xkbcomp
tuş eşlemesini vermelisin
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.