Linux'ta, ek bir tuşa basılmadığında SHIFT_L / SHIFT_R'yi nasıl eşleyebilirim?


13

Bugün Steven Losh'in yazdığı , klavye eşleştirmelerini güçlendiren bir çift verimlilik sunan bu çok güzel makaleyi buldum . Bunların arasında sol ve sağ kaydırma tuşlarının dinamik bir eşlemesi var.

Fikir

Shift_L veya Shift_R ek bir tuşa basılmadığında, sırasıyla '(' ve ')' ile eşlenir, aksi halde her zamanki gibi çalışırlar.

Sorun

Tüm bunları OSX altında yapıyor. Aynı şeyi Linux altında yapmaya çalışıyorum. Bunun basit bir yolu yoktur, çünkü anladığım kadarıyla, tek bir Shift_L için bir anahtar ve diğer bir değiştirme anahtarı olarak kullanıldığında Shift için bir anahtar yapılandırmak için xmodmap kullanamazsınız.

Biraz etrafa dolaştım ve Windows altında AutoHotKey kullanarak göründüğü kadarıyla aynı şeyi yapmaya çalışan insanlar buldum, ancak Linux için hiçbir şey bulamadım.

Bunu Linux altında çözmenin bir yolu var mı?



2
Neredeyse bu sorunun kopyası . =)
teika kazura

Yanıtlar:


4

Vaov! Kullanıcı teika kazura'nın orijinal soru hakkındaki yorumu oldukça doğrudur - bu sadece bu etkinliğin diğer bir sorunun kopyası değildir , ancak orada verilen cevap (" xcape kullanın ") bu sorunu çözer!

Xcape repo'yu klonladıktan ve derledikten sonra (ilk önce Fedora kutuma libXtst-devel kurmalıydım), aşağıdaki komutla istenen tam davranışı elde ettim:

xcape -e "Shift_L=parenleft;Shift_R=parenright"

Kuşkusuz cursory testinden sonra, çok iyi çalışıyor gibi görünüyor . Güzel!

Diğer seçenekler

Shift tuşunu bir fare değiştiricisi olarak kullanırsanız (yani, herhangi birşeye kaydırma tuşunu tıklarsanız), muhtemelen xcape'nin zaman aşımı seçeneğini dahil etmek ve rahat bir zaman aşımı değeri bulmak istersiniz; sahte parantez oluşturmaz. Xcape README'den:

-t <timeout ms>

Bu zaman aşımından daha uzun bir süre tuşu tutarsanız, xcape bir önemli etkinlik oluşturmaz. Varsayılan 500 ms'dir.

Bu nedenle, -tbayrağı sizin için çalışan bir zaman aşımı değerine sahip olarak ekleyerek, en az timeout ms milisaniye boyunca Shift tuşunu basılı tuttuğunuz sürece fareyle sağ tıklayabilirsiniz .

(Kredi, tekrar, diğer soruyu işaret ettiği için teika kazura'ya ve ayrıca orjinal cevap için don_crissti'ye .)


Bu yöntemle ilgili bir sorun, editörlerde bazı metinler seçmek için sıklıkla [Shift] + [LMouse] tuşlarına basmaktır. İlginç bir şekilde Sublime Text ayrıca [Ctrl] + [LMouse] kullanır, bu yüzden [Ctrl] 'nin tekrar açılması ile ilgili soru da sorunlara yol açar.
Annan

@Annan xcape'in zaman aşımı seçeneğini ayarlamayı denediniz mi? -t <timeout ms>README'den : " Bu zaman aşımından daha uzun bir süre bir tuşa sahipseniz, xcape önemli bir etkinlik oluşturmaz. Varsayılan değer 500 msn'dir." ... xcape, değiştiricinin key-down olayıyla karışmadığı sürece (hatırlayamıyorum), sahte tuş basmaları oluşturmasını engellerken, onu yeterince uzun tuttuğunuz sürece fare seçimi değiştiricisi olarak kullanmanıza izin verir .
FeRD,

@Annan Bunu duymak harika, -tbayrağın kullanımını önermek için cevabımı güncelledim !
FeRD

1

Bu ilginç bir zorluk ve xinput'un tam olarak uygun görünmediğine katılıyorum. Xmodmap'ın yetenekleriyle uğraşarak biraz zaman geçirdim ve gerçekten oraya gitmeyi başaramadan ... yapmak istediklerini başarmaya çok sinir bozucu bir şekilde yaklaşmıştım .

Xmodmap kullanarak, payanda sol kaydırma tuşunda kaydırılmış bir anahtar simgesi olarak atamak mümkündür:

xmodmap -e 'keysym Shift_L = Shift_L parenleft Shift_L parenleft'

hangi sorta çalışır, en azından Fedora 17 kutumda test yaparken, ancak tatmin edici bir şekilde değil. Bu eşleme yerinde iken, shift tuşunun hala normal şekilde çalıştığını ve herhangi bir sahte paren oluşturmadığını, ancak (sinir bozucu şekilde) sol-parenler de güvenilir şekilde üretmediğini buldum. Her ne sebeple olursa olsun, anahtar kendini güvenli bir şekilde değiştirmiyor gibi görünüyor , bu da başlangıçta kaydırılan görevini bozuyor. Sebebi ne olursa olsun, art arda birkaç kez sola kaydırma, sonunda sol-babaları üretmeye başlamasına neden olur, ancak dördüncü veya beşinci basından sonra.

Bir davranış Ben yaptım sen bir "yakın yeterli" analog olarak çalışmak mümkün olabileceğini, ancak, haber: Ben SHIFT_L ve Shift_R üzerine haritalama parenleft ve parenright sonra ben güvenilir hem vardiya tuşların üzerinde "yuvarlanan" tarafından parens yazabilirsiniz bulundu - başka bir deyişle, bu haritalama ile:

xmodmap -e 'keysym Shift_L = Shift_L parenleft Shift_L parenleft'
xmodmap -e 'keysym Shift_R = Shift_R parenright Shift_R parenright'

Shift_L ve ardından Shift_R tuşlarına basıp ardından her ikisini de bıraktığınızda, sağ taraf veya sol taraf diğer yönde çıkar. (Elbette paren eşlemeleri tersine çevrilebilirdi; hangi yolun daha doğal olduğunu düşündüğüme karar veremedim.)

Bu, tam olarak aradığınız davranışa ulaşmak için geldiğim kadar yakındı; yalnız xmodmap kullanarak mümkün görünmüyor.

Bunun sadece mümkün olmadığına ikna oldum, dönem, ama sonra anladım ki tam olarak tanımladığınız gibi çalışan en az bir anahtar var : Süper ("Windows") tuşu. Gnome Shell'in altında, tek basıldığında farklı bir etki (Genel Bakış) tetikleyen bir değiştirici tuş (mod4) bulunur. Dolayısıyla, en azından teoride, istediğiniz vardiya anahtarı aşırı yüklemesini aynı şekilde uygulamak mümkün olabilir.

... Ancak, Shift tuşuna her bastığınızda bunun nasıl yapılacağı ya da gerekli işlemlerde tıkanmanın ne kadar invaziv olacağı konusunda hiçbir fikrim yok. :-)


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.