Birden çok tarama kodu üreten tuşları yeniden eşleme


33

Bir ThinkPad W540'ım var. Klavyesinde numpadin üzerinde dört tane multimedya tuşu var. Bu tuşlardan ikisi, Win_L+ Lve Win_L+ tuşlarının birleşimine karşılık gelen tuş kodları (ve görünüşe göre, tarama kodları) oluşturur E. Başka bir deyişle, üretir anahtarı için Win_L+ L,
showkey --scancodesbu döndürür:

0xe0 0x5b 0x26 0xa6 0xe0 0xdb

setkeycodesKomut, tarama kodlarını belirtmek için tek baytlı çıkmamış ya da çıkarılan iki baytlık diziler gerektiriyor ve showkeybana bundan daha fazlasını veriyor, bu yüzden sistemimdeki ücretsiz anahtar kodlardan birine bu anahtarı basitçe yeniden eşleyemiyorumsetkeycodes <scancode> <keycode> .

Bu anahtarı, klavyemdeki varolan tuş birleşimlerinden birini çoğaltmayan başka bir şeye nasıl yeniden eşleştirebileceğime dair ipuçlarını gerçekten takdir ediyorum.


1
Şuna bir göz atmak isteyebilirsiniz: Klavye düzeninden bağımsız kısayol tuşları
terdon

1
Bunun zor olabileceğini düşünüyorum: en azından eski Thinkpad'lerde, bu tür bir haritalama işletim sistemi tarafından değil, yerleşik denetleyici tarafından yapılır.
mirabilos

1
Aynı soruna sahip bir Microsoft Hepsi Birarada Ortam Klavyem var, bir çözüm bulabildiniz mi?
omazmaz

5
Bir süre önce Thinkpad t61'de benzer bir şey yaptım /etc/acpi/events , acpidpaketteki tuşları kullanarak ve sadece bu fonksiyon tuşlarına basıldığında bir eylem tanımlayarak.
cesar,

2
X-windows'da bir değiştirici olarak Win_L kurulumunuz var mı? Benim için varsayılan.
mcr

Yanıtlar:


1

Bunu iki adımda yapabilirsiniz:

  1. tuş kombinasyonlarını yakalamak için
  2. farklı tuşlar yazmayı benzetmek için

Sen kullanabilirsiniz xchainkeysiçin 1. ve [xdotool][2]için 2. :

İle simüle yeni bir anahtar oluşturmak için xdotool, seçenek --clearmodifiersarasında keyorijinal simüle değiştirici basın nötralize önemli olabilir:

xdotool key --clearmodifiers Shift+a

Bunun Abir test olarak bir sermaye yazması gerekir .

Konfigürasyonda xchainkeysin ~/.config/xchainkeys/xchainkeys.conf, bir tuş kombinasyonuna komutu bağlayabilir:

W-l :exec xdotool key --clearmodifiers Shift+a

Şimdi, tuş kombinasyonu Winve l( Winsola veya sağa aynı işlemi yapın), ayrıca Win_L + L'yi oluşturan anahtarın da büyük harf oluşturması gerekir A.

(Her iki bölüm için de mevcut birçok program var. Birincisi, bir masaüstü ortamının kısayol tuşu yapılandırmasını kullanabilir, ancak onu DE'lerden bağımsız tutmayı tercih ederim.)


2
Bu çözümle ilgili sorun yanılmıyorsam, bir eylemi tetiklemek için sadece bahsedilen tuş kombinasyonunu kullanmakla aynı olacaktır - bu eylem sadece bu tuşla tetiklenmeyecek, aynı işlemi yapan tuşların gerçek kombinasyonuna basarak gerçekleşmeyecektir. kodlar da aynı sonucu verir. Başka bir deyişle, "bu anahtarı, varolan anahtar birleşimlerinden birini çoğaltmayan başka bir şeye yeniden gönderme" koşulunu karşılamıyor. Fakat çabayı takdir ediyorum.
moonwalker

3
Evet, doğru - Bu cümle ile ne demek istediğinizi bilmiyordum, şimdi anlıyorum. Ancak, anahtarınız donanımdaki iki anahtar kodunu üretiyor gibi görünüyor (yani, klavyelerin donanım yazılımında) - bu nedenle, yapay tuş basmalarının "değiştirici", "diğer anahtar" ın zamanlamasını saptamanız dışında, etrafta savaş görmüyorum, "değiştirici yukarı". Hmm ... belki de lehim içeren bir çözüm daha basittir;)
Volker Siegel

1
@moonwalker Diğer anahtar yerine Win_L ile yeniden eşleştirmeyi deneyebilir ve diğerinin değiştiricisini de yeniden eşleyip eşlemediğini kontrol edebilir misiniz?
Volker Siegel

1
um, Win_L + R, Win + Break, Win + L, Win + vb. bu durumda?
moonwalker

1
Hayır, sanmıyorum. Win-L: Win-Shift-lAma aynı zamanda bir kombinasyonun anahtar kombinasyonlarının zincirlerini de haritalandırabilirsiniz. Gibi Win-ave ondan sonra b. Dışarı ile Win-a, bnormal bir şekilde davranır. Sanırım, bugüne kadarki en kullanışlı özellik xchainkeysve oldukça benzersiz.
Volker Siegel

-2

Thinkpad Yoga'da ters eğik çizgi / boru tuşunu doğru anahtara yeniden bağlamak için yaptığım şey buydu. Çünkü her Linux Sanal Makinesinde bir nedenden dolayı, ters eğik çizgi \ pipe (\ |) tuşunu (<) tuşundan daha az olarak yorumladı.

İlk önce komutu yürütün: xev

Yeniden bağlamak istediğiniz tuşun tuş kodunu almak için istediğiniz tuşa basın:

xev KeyPress olayı çıkışı

Bu örnekte, Anahtar Kodu 94 ve işlem "daha az" dır, ancak ters eğik çizgi ve çubuk aka "boru" eylemine sahip olmasını istiyoruz.

94 anahtar kodunu ters eğik çizgiye ve bar tuşu aka "pipe" a yeniden eşleyin:

xmodmap -e 'keycode 94 = backslash bar'

Şimdi bunu kalıcı kılalım:

xmodmap -pke | egrep "backslash|bar" | grep 94 > ~/.Xmodmap`

Aşağıdakileri dosyaya döndürür ~/.Xmodmap:

keycode  94 = backslash bar backslash bar

Sonra kalıcı hale getirmek için aşağıdaki dosyayı oluşturmanız gerekir:

echo "xmodmap .Xmodmap" > ~/.xinitrc

1
Ters eğik çizgi / yöneltme tuşu tek bir tarama kodu oluşturur; konu, birden çok tarama kodu üreten anahtarların yeniden eşlenmesiyle ilgilidir.
moonwalker
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.