Ses çalmak için Caps Lock tuşunu yeniden takabilir miyim?


16

Ben 16.04 MATE yararlı bir şey için işe yaramaz Caps kilit anahtarını yeniden kullanmaya çalışıyorum. Karşılaştım

setxkbmap -option ctrl:nocaps

devre dışı bırakmak için, ancak örneğin VLC'yi oynatmak / duraklatmak için yeniden eşlenebilir mi? Cevaplarınız için teşekkürler!


Bunun işe yarayacağını sanmıyorum .... bir dizi nedenden dolayı ... örneğin, linux'un capslock'a ayrı bir anahtar değil bir değiştirici olarak davrandığını düşünüyorum . Muhtemelen VLC'de bağlayamamanızın nedeni bu olacaktır. Ayrıca, devre dışı bırakırsanız, devre dışı bırakılır. Ancak komut satırında oynayabilir ve onu bağlamaya çalışabilirsiniz vlc --key-play-pause <key-string>, ancak VLC'nin capslock olarak kabul ettiği bir dize bulamadım ...
Robert Riedl

1
Ben yüklü dconf-editorbir kaç şey, yüklü denenmiş xdotoolbir kaç şey denedik ve sonunda xbindkeysve bir kaç şey denedik. Bu meyvesiz egzersizin sonunda klavyem duraklat / oynat düğmem kırıldı ve kendi ekran oynat / duraklat düğmem gri renkte çıktı ve müzik çalınmadı. Bunu 16.04'te yaptım ve her şeyin hala çalıştığını doğrulamak için 18.04'te yeniden başlattım ve bunu yapan yazılım korsanlığıydı. Tek tasarruf lütuf sadece PC üzerinden değil Android telefon üzerinden müzik çalmak. Başkalarının dikkatli olması ve makinenize yaptıklarınızı benden daha iyi belgelendirmesi için sadece bir kafa.
WinEunuuchs2Unix

1
@pbhj Bahşiş için teşekkürler. Bir şekilde Ubuntu 16.04'te ekran düğmesi ve klavye duraklatma / oynatma düğmesi ile tekrar oynat / duraklatmayı başardım. İnsanları bu düşük seviyeli klavye yardımcı programlarını deneyen olası tuzaklardan uyarmak istedim.
WinEunuuchs2Unix

1
2BFrank: Sorununuzu çözerse cevaplardan birini kabul ettiğinizden emin olun. Bu soruda bir ödül olduğu için, bir cevabı kabul edilmeden bırakmak (ve ödülü elle vermemek), ödülün sadece yarısını @Sebastian Stark'a verecektir, çünkü cevabı en yüksek oyu almıştır.
Nonny Moose

1
@NonnyMoose Bu yorum için teşekkürler. Kabul edilen cevaba veya en yüksek oy toplamına otomatik olarak yönlendirmek için bırakacaktım, ancak ödülü yarıya indirdiğini bilmiyordum, bu yüzden yaklaşık iki saat içinde manuel olarak en yüksek oy toplamına vereceğim hiçbir cevap kabul edilmez.
Chai T. Rex

Yanıtlar:


11

evtest ve dbus

İşte arka planda çalışan küçük bir komut dosyası içeren bir sürüm. Birkaç kolay adım atılmalıdır:

  • Yükleme evtest programı: sudo apt install evtest. Bu program, /dev/input/aygıtların hiyerarşisindeki ham olayların kodunu çözebilir ve yazdırabilir .

  • Kullanıcı hesabınızı gruba ekleyin input. Çıkış yapın ve tekrar giriş yapın. (Bu gereklidir, çünkü /dev/input/normalde sadece root veya gruptaki kullanıcılar tarafından yapılabilecek olan bazı cihazlardan okuyacağız input. Betiği root olarak çalıştırabiliriz, ancak sonra hangi kullanıcıya söylemenin bir yolunu bulmamız gerekir konuşması gereken dbus örneği.)

  • Sizin gibi büyük harf kilidi anahtarını devre dışı bırakın veya karşılık gelen Montaj İlişkisi tercihini kullanın. Capslock anahtarını ctrl ile eşleştirirseniz, birçok insanın yaptığı gibi de işe yarar.

  • Aşağıdaki komut dosyasını bir yerde saklayın, örn $HOME/bin/capshack. Yürütülebilir yapın:

    #!/bin/bash
    
    KEYBOARD=/dev/input/by-path/platform-i8042-serio-0-event-kbd
    EVENT="type 1 (EV_KEY), code 58 (KEY_CAPSLOCK), value 1"
    
    toggleVLC () {
            dbus-send \
                --type=method_call \
                --dest=org.mpris.MediaPlayer2.vlc \
                /org/mpris/MediaPlayer2 \
                org.mpris.MediaPlayer2.Player.PlayPause
    }
    
    evtest "$KEYBOARD" | \
    while read line
    do
        if [[ "$line" == *"$EVENT" ]]
        then
            toggleVLC
        fi
    done
    

Yukarıdaki komut dosyası, klavye etkinliklerinizi dinler ve büyük harf kilidi tuşuna basıldığında bir komut yürütür. Çalıştırılan komut, çalışan bir VLC örneğine bir play / pause olayı göndermek için dbus kullanıyor. KEYBOARDDeğişkeni gerçek klavyenizi gösterecek şekilde ayarlamanız gerekebilir , ancak muhtemelen yukarıdaki değer işe yarayacaktır.

Eğer zaman toggleVLC () işlevi çağrılacak tercih ederseniz bırakın capslock anahtarını değiştirebilirsiniz EVENTonunla biter, öyle ki komut değişkeni value 0yerine value 1.

Ayrıca, sizin için capslock anahtarının kodunun 58'den farklı olması mümkündür. Bunu çalıştırarak kontrol edebilir evtest, capslock'a bastığınızda çıkışa bakabilir ve OLAY değişkenini buna göre ayarlayabilirsiniz. Anahtar koduyla eşleşmeniz ve OLAY'ı basitçe olarak ayarlamanız bile gerekmez (KEY_CAPSLOCK), value 1.

Bunun yerine evit ve yukarıdaki komut dosyasını kullanarak triggerhappy paketinden thd kullanabilirsiniz ( thd --dump /dev/input/*benzer bir çıktı verecek bir şey gibi ) ama biraz daha az eğitici buldum.

Şimdi betiği arka planda otomatik olarak başlatmak için bir kullanıcı systemd birimi oluşturuyoruz:

  • Kullanıcı systemd hiyerarşisini oluşturun: mkdir -p $HOME/.config/systemd/user

  • Aşağıdaki metni dosyaya ekleyin $HOME/.config/systemd/user/capshack.service

    [Unit]
    Description=Abuse capslock key
    
    [Service]
    ExecStart=%h/bin/capshack
    
    [Install]
    WantedBy=default.target
    
  • Az önce yaptığınız servis birimini etkinleştirin: systemctl --user enable capshack

  • Hizmeti başlatın: systemctl --user start capshack

Artık, capslock tuşunu kullanarak VLC'de oynat / duraklat arasında geçiş yapabilmeniz gerekir. Oturum açtığınızda arka plan komut dosyasının otomatik olarak başlatılması gerekir.

triggerhappy

Daha önce de belirtildiği gibi, bunu yapmak için triggerhappy paketini de kullanabilirsiniz. Bu, sistemle daha az uğraşmak ve daha sağlam bir çözüm gibi olmak isteyenler için tercih edilen yöntemdir.

  • inputYukarıdaki gibi gruba kullanıcı ekle

  • Paketi yükleyin: sudo apt install triggerhappy

  • Triggerhappy için bir yapılandırma ekleyin ~/.config/thd/capslock.conf:

    KEY_CAPSLOCK    1   dbus-send --type=method_call --dest=org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
    
  • Thd şöyle çalıştırın: thd --triggers ~/.config/thd/capslock.conf /dev/input/event*

  • Thd kullanıcısı için zaten kapşon için tarif edilene benzer bir şekilde çalıştırın.

  • Her tuşa bastığınız düğmeyi iki kez değiştirmemek için, belirtilen yöntemlerden (başlık veya thd) yalnızca birine sahip olduğunuzdan emin olun.

Bütün bunları 18.04'te standart oturum ve 16.04 arkadaşı altında test ettim. Ancak teorik olarak yol altında veya diğer masaüstü ortamlarında da çalışmalıdır.


@ WinEunuuchs2Unix bahsettiğiniz için teşekkürler. Ben şahsen tam if / then / else yan tümcesinin daha ayrıntılı stilini tercih ederim: Daha açıktır, uzatılması daha kolaydır ve çok uzun çizgiler yapma eğilimi göstermez. Her ne kadar bu durumda gerçekten çok önemli olmazdı.
Sebastian Stark

Çizgiler hakkında çok uzun katılıyorum. Son zamanlarda kodlama stilini ilk satırla iki satıra uyarladım [[ test ]] && \ ve ikinci satır <command>pozitif test ile çalışmak için dört boşluğu girintili hale getirdi . Okunabilirlik konusunda yürekten katılıyorum, çünkü tavsiyem çoğu programlama diline yabancı.
WinEunuuchs2Unix

bu harika ! Her ne kadar aslında bir hata ayıklama programı olduğu triggerhappyiçin gitmek için bir yol olması gerektiğini düşünüyorum evtest:)
Robert Riedl

evet, öğrenmek için evtest, yapmak için :)
Sebastian Stark

... Her neyse benim için 58 kodu m, böylelikle komut dosyası çalışmıyor. xmodmap -pke | grep Caps_LockKodun doğru olduğundan emin olmak için bu komut dosyasını kullanmadan önce kontrol etmenizi öneririz .
Nonny Moose

9

Ubuntu 16.04 yılında googling & kurcalıyor saat geçirdikten sonra dconf-editorve xbindkeysben son derece kolay çözüm buldu:

  • 2 dakikada çok hızlı kurulum
  • Sadece xdotool kurulmalı
  • Komut dosyası gerekmez
  • Caps lock hala tanınıyor ancak büyük / küçük harf değişimi yapmıyor
  • Standart Ubuntu Klavye Özel Kısayol Ayarlarıyla çalışır

Gnome XF86AudioPlaydesteğine ihtiyacınız varsa ihtiyacınız var xdotool( OP şart koştuğu gibi VLC için gerekli değildir ):

sudo apt install xdotool

Şimdi işin zor kısmı. Caps LocKMüziği Çal ve Duraklat arasında değiştirmek için tuşuna her bastığınızda , büyük harfler de kapanıp açılır.

Anahtarı etkin tutarken Caps Lock geçişini kapatmak için bu yöntemi kullanın:

setxkbmap -option caps:none

Gnome'a ​​uygun müzik çalarlar

Sonra Ubuntu 16.04'te Ayarlar >> Klavye >> Kısayollar >> Özel Kısayollar'a gidin :

audio pause-play shortcut.png

  • Adı olarak ayarlayınAudio Play
  • Set komutu içinxdotool key XF86AudioPlay
  • Sonra Applydüğmesini tıklayın

Yeni seçeneği ekledikten sonra, atanan kısayol tuşu Devre Dışı olarak okunur . Disabled (Devre Dışı) öğesine tıklayın ve atamanız için tuş istendiğinde tuşuna basın Caps LocK.


VLC gibi müzik çalarlar

Önceki bölümde Gnome için olan adımları izleyin, ancak komut için bunu kullanın:

qdbus org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause

VLC medya tuşlarını tanımaz: Klavye medya tuşlarının VLC ile global olarak çalışmasını nasıl sağlar? klavyede yerleşik olsa bile. Bu nedenle XF86AudioPlay için özel klavye kısayolu ile işe yaramaz xdotool.


Komut satırından özel klavye kısayollarını ayarlama

Bu soru ve cevap, komut satırından özel klavye kısayollarının nasıl ayarlanacağını açıklar: Terminalden özel klavye kısayolları nasıl ayarlanır?


Kapakları kalıcı olarak devre dışı bırakma

Bir sonraki adım, bunu setxkbmap -option caps:noneyeniden başlatmalarda kalıcı hale getirmektir . Terdon'un bu cevabındaki googling sonuçları: setxkbdmap ayarlarını kaydet :

Komutu $HOME/.profiledosyanıza eklemenin kolay bir yolu olabilir (yoksa, oluşturabilirsiniz):

setxkbmap -option caps:none

Bu, her giriş yaptığınızda çalışmasını sağlayacaktır.

Not Eğer kullanması gerektiğini $HOME/.profileziyade $HOME/.bash_profile, $HOME/.bashrcveya başka benzer dosya. Bunun nedeni, bu ayarın giriş yöneticiniz tarafından okunması gerektiğidir.


Basit, zarif, iş yapar: Bana mükemmel cevap!
Fabby

@Fabby Kurulum ve test etmenin kolay olduğunu ve komut dosyaları hakkında veya sürekli çalışan düşük düzeyli mucking gerektirmediğini itiraf etmeliyim. Bu yönteme rastlamadan önce dört farklı denemeden geçtim. Yine de mükemmel demezdim ama TEŞEKKÜRLER! . Tekrar Avrupa'ya dönmeme izin verirlerse sana bir bardak alacağım.
WinEunuuchs2Unix

Wayland ile çalışır mı?
danzel

@dabzel Korkarım Wayland birlikte çalışmaz setxkbmap -option caps:none. Yardımcı program yüklenir, ancak Wayland büyük ve küçük harf arasında geçiş yapmaya devam eder. Wayland'e nasıl saygı gösterileceği konusunda ayrı bir soru gönderebilirsiniz setxkbmap.
WinEunuuchs2Unix

3

Bu cevap bir VM'de Ubuntu MATE 16.04.4 LTS üzerinde test edilmiştir (ancak klavye geçişte bir USB klavyeydi, bu yüzden bir fark yaratmamalıdır). Ayrıca ekstra yazılım gerektirmez ve herhangi bir paket kurmadan bir vanilya yüklemesinde yapılabilir ve botlar arasında kalıcıdır.

Kapak Kilidi Yeniden

  1. Dosyayı /usr/share/X11/xkb/symbols/pckök olarak düzenleyin . Burada bir hata yapmamaya dikkat edin (virgül unu unutmak gibi), çünkü artık klavyenizi kullanamayabilirsiniz. (Tahmin et ne zor yoldan öğrendim?)

  2. Çizgiyi yorumlayın

        key <CAPS> {    [ Caps_Lock     ]   };
    

    //başında iki ileri eğik çizgi ( ) yerleştirerek .

  3. Altına aşağıdaki satırı ekleyin:

        key <CAPS> {    [ XF86AudioPlay, XF86AudioPause ]   };
    
  4. Çizgiyi yorumlayın

        modifier_map Lock   { Caps_Lock };
    

    yukarıdaki gibi.

  5. Yeniden Başlatma.

Not: (bunu işaret ettiği için danzel'e verilen kredi) Paketteki güncellemeler xkb-databu dosyanın üzerine yazılabilir. Bunu önlemek için oldukça güvenli bir yöntem, yolu kullanarak yönlendirmektir dpkg-divert. ("Makul derecede güvenli" diyorum, çünkü bu dosyanın akış yukarı kaynağı üç yılda değiştirilmedi.)

Alternatif Yöntem

Klavye düzeni ayarlarınızda Caps Lock tuşunu el ile devre dışı bırakın, ardından kendi anahtar yeniden eşlemelerinizi eklemek için bu yanıttaki yaklaşımı kullanın .

Sorunlar?

Büyük harf kilidi anahtarınız artık büyük harfleri kilitlemez ve bu noktada Oynat / Duraklat ile yeniden eşleştirilmiştir. Şimdi VLC'de müzik çalabilmeli ve duraklatabilmelisiniz. Bu noktada çalışırsa, bu talimatların geri kalanını atlayabilirsiniz.

Ancak, denediğimde VLC Oynat / Duraklat tuşuna yanıt vermedi.

Klavye kısayolunun doğru ayarlandığından emin olun

  1. Klavye Kısayollarını Aç (Sistem → Tercihler → Donanım → Klavye Kısayolları)

  2. "Oynat (veya Oynat / Duraklat)" öğesinin "XF86AudioPlay" olarak ayarlandığından emin olun

  3. Değilse, "Kısayol" bölümünü tıklayın ve kısayolu ayarlamak için yeni Oynat / Duraklat tuşuna basın. yardımcı ekran görüntüsü

  4. Hala çalışmıyorsa, iyi önlem almak için birkaç kez yeniden başlatın. (Aslında benim için bunu düzeltti.)


Bu xkbseçeneklere, özellikle caps:...de seçeneklere müdahale edebilir . Ayrıca, sistem güncellemeleri tarafından üzerine yazılabilir.
danzel

Gerçekten de olabilir. Yine de sistem güncellemeleri hakkında iyi bir nokta. Cevabımda bununla ilgili bir not ekleyeceğim. Geri dönüşünüz için teşekkür ederiz!
Nonny Moose

Sevgili Hepsi, vay !! Üzgünüm afk bir süre :-) ve şimdi hepiniz çözüme koymak tüm çabayı keşfediyorum! @ WinEunuuchs2Unix yanıtını deneyecek ve sizi haberdar edecektir. Teşekkürler, LLAP !!
2BFrank

@ 2BFrank Meraktan, işe yarayan bir cevap buldunuz mu?
Nonny Moose

1

Yükleme xbindkeys, xcape ve playerctl . Emin olun xcape(haritalama CapsLockgibi bir yedek anahtara Alt+F12göre xcape -e 'Caps_Lock=Alt_L|F12) ve playerctllog-in autostarted edilir ve dosyaya eklemek ~/.xbindkeysrciki satır

"playerctl play-pause"
  Alt + F12

0

Capslock tuşunuzu oynat / duraklat tuşu yapın

Bu çözüm, capslock anahtarınızın tarama kodunu çekirdek giriş sürücüsündeki farklı bir anahtar koduna, bu durumda oynat / duraklat olarak yeniden eşleştirir.

Avantajları

  • Mevcut sistem dosyalarını değiştirmeye gerek yoktur (yalnızca bir yeni dosya oluşturulması gerekir)
  • Uygulamalar bunun aslında bir kapak kilidi anahtarı olduğunu bilmeyecek, ancak gerçek bir oynat / duraklat tuşuna basıldığını düşünüyor
  • Capslock'u devre dışı bırakmaya gerek yok, xkbyapılandırmayı bozma imkanı yok

Dezavantajları

  • Her klavye için ayrı ayrı yapılmalıdır (duruma bağlı olarak bir avantaj da olabilir)

Ön şartlar

  • evtest (üzerinden kurulabilir sudo apt-get install evtest)

prosedür

Bir terminalde, sudo evtestklavyenizi çalıştırın ve seçin. Bir tuşa bastığınızda çıkış yoksa, Ctrl+ tuşuna basın Cve farklı bir cihaz deneyin. Seçtiğiniz cihaz etkinlik numarasını unutmayın, daha sonra buna ihtiyacımız olacak. Capslock tuşuna basın. Aşağıdaki gibi bazı satırlar görünecektir:

Event: time 1529406021.187148, -------------- SYN_REPORT ------------
Event: time 1529406021.218427, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70039
Event: time 1529406021.218427, type 1 (EV_KEY), code 58 (KEY_CAPSLOCK), value 0

MSC_SCANSatırdan önceki satırın değerine ihtiyacımız var KEY_CAPSLOCK. Yukarıdaki örnekte, bu 70039 olurdu, ancak klavyenizdeki tarama kodu muhtemelen farklıdır.

Şimdi aşağıdaki komutu çalıştırın, ancak X'i evtestkomut için kullandığınız cihaz olay numarası ile değiştirin :

grep "" /sys/class/input/eventX/device/id/*

... Bu irade çıkışı bustype, product, vendorve versionklavyenin.

Adlı bir dosya oluşturun 65-keyboard-custom.hwdbiçinde /etc/udev/hwdb.d/aşağıdaki içeriği (kök izinleri gerekli):

evdev:input:b[bustype]v[vendor]p[product]e[version]*
 KEYBOARD_KEY_[scancode]=playpause

...nerede

  • [bus], [vendor], [product] ve [version] tam olarak 4 karakterden oluşur ve harflerin büyük
  • [tarama kodu] küçük harf olmalıdır
  • evdev:...çizgi sahip bir önceki boşluk
  • KEYBOARD_KEY...çizgi sahip tam olarak bir önceki boşluk

Örneğin:

evdev:input:b0003v046DpC228e0110*
 KEYBOARD_KEY_70039=playpause

Son olarak, yeni yapılandırmayı donanım veritabanına derleyin:

sudo systemd-hwdb update

Değişiklikleri hemen uygulamak istiyorsanız udev'e bilgi verin:

sudo udevadm trigger

Değişiklikleri geri almak isterseniz, oluşturduğunuz dosyayı kaldırın ve yeniden başlatın.

Bu konudaki orijinal cevabımda daha ayrıntılı bilgi bulabilirsiniz .


@Nonny Moose bu yüzden "Her klavye için ayrı ayrı yapılması gerekiyor" yazdım. Ayrıca, istediğiniz kadar klavye belirtebilirsiniz, bu yüzden bunu sadece satın aldığınız her yeni klavye için yapmanız gerekir. Öte yandan, isterseniz fiziksel bir oynat / duraklat tuşu olduğu için bir klavyeyi atlayabilirsiniz.
danzel

... Dikkat etmiyordum. Ben düzeltilmiş duruyorum.
Nonny Moose

0

Belki kullanarak xbindkeysya XTEda yapabilirsin. Ancak önce Anahtar Kodların ne olduğundan emin olun xev, terminaldeki komutu kullanarak capslock anahtarının kodunu görebilirsiniz ve tuşuna basın (Oyun fareleri de dahil olmak üzere herhangi bir keu veya fare düğmesinin anahtar kodunu görebilirsiniz). Capslock ve play tuşlarının tuş kodunu kullanarak xbindkeys confi dosyasını düzenleyebilir ve değişikliklerinizi buraya koyabilirsiniz. touch ~/.xbindkeysrcyapılandırma dosyasını oluşturmak için kullanın (sistem otomatik olarak oluşturmazsa) venano ~/.xbindkeysrc bunu düzenlemeye. Geçen ay kullandım ve burada bir sınav. sizin için çok yararlı olabilecek bu bağlantılara bir göz atın.

https://help.ubuntu.com/community/MultimediaKeys

https://gist.github.com/jbonney/5743509

Oyun faremden klavye tuşuna bir düğmeyi yeniden eşleme

https://matmunn.me/post/binding-volume-control-mouse-buttons-ubuntu/

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.