GNU/Linux >> Znalost Linux >  >> Ubuntu

Problém s navázáním zkratky na funkční / multimediální klávesu?

Chci připojit dávkový skript ke zkratce. Když jej svážím v části Nastavení systému> Klávesnice> Zkratky funguje se všemi klávesami kromě kláves jasu z mé externí klávesnice Apple.

Klávesy jasu jsou v showkey rozpoznány s kódem 224 a 225 .

výstup xev:

FocusOut event, serial 41, synthetic NO, window 0x4000001,
mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 41, synthetic NO, window 0x4000001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 41, synthetic NO, window 0x0,
    keys:  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 

Nějaké návrhy, co mohu udělat?

Přijatá odpověď:

Řešení pomocí halevt

Podle manuálových stránek halevt je obecný obslužný program pro události HAL. Je zastaralá a nahrazena udev , ale protože toho o udev nevím dost Dám halevt řešení.

UPRAVIT: po pořádném potu se mi to podařilo v udev . Viz moje další odpověď.

Budu používat vim upravovat soubory, ale pokud neznáte vim můžete jej nahradit nano nebo gedit .

Instalace halevt

sudo apt-get update && sudo apt-get install halevt

Určení událostí, které chcete svázat se skriptem
Zastavte halevt démon, který již běží:

sudo /etc/init.d/halevt stop

Nyní se podívejte, zda halevt dokáže rozpoznat události klíčů, které chcete použít, spusťte posluchač:

sudo -u halevt halevt -fig:plugdev

Nyní stiskněte funkční klávesu na klávesnici, ke které chcete skript svázat. Vím, že OP chce, aby fungovaly jeho klávesy jasu, takže pojďme na to. Výstup pro tlačítka jasu by měl vypadat nějak takto:

Condition: /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input,ButtonPressed (brightness-down)
Condition: /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input,ButtonPressed (brightness-up)

Můžete vidět, že brightness-down a brightness-up události jsou přenášeny.

Spojit událost se skriptem
Nyní upravte soubor /etc/halevt/halevt.xml :

sudo vim /etc/halevt/halevt.xml

a přidejte následující řádky (udělal jsem to dole, těsně před </halevt:Configuration> ):

<halevt:Device match="hal.info.category = input">

    <halevt:Condition name="ButtonPressed" value="brightness-up" exec="sudo /home/user/brightness-script.sh up"/>

    <halevt:Condition name="ButtonPressed" value="brightness-down" exec="sudo /home/user/brightness-script.sh down"/>

</halevt:Device>

kde byste samozřejmě měli změnit value na událost, kterou jste získali od posluchače, a exec příkazem, který chcete provést.

Udělte uživateli halevt oprávnění k provedení příkazu nebo skriptu
Od halevt démon se spouští jako halevt uživateli, kterému musíte dát oprávnění dělat to, co jste zadali v exec .

Spustit (nezapomeňte nahradit vim vámi zvoleným editorem)

sudo EDITOR=vim visudo

a přidejte následující řádky na konec

halevt ALL=(root) NOPASSWD: /home/user/brightness-script.sh 

a uložte a ukončete.

Související:Zakázat opakování klávesnice z příkazového řádku?

Ujistěte se, že je váš skript spustitelný

sudo chmod +x /home/user/brightness-script.sh

Znovu spusťte démona halevt

sudo /etc/init.d/halevt start

A mělo by to fungovat!


Ubuntu
  1. Ubuntu – trvale deaktivovaný touchpad s funkční klávesou?

  2. Klávesové zkratky, které jsou nezávislé na rozložení klávesnice?

  3. Sudo:/var/lib/sudo/navneet Writable by non-owner (040777), should be Mode 0700?

  1. Klávesová zkratka Super+d nezobrazuje plochu?

  2. Ubuntu 12.04 Nomodeset opravuje problém se spouštěním, ale způsobuje, že se rozlišení obrazovky zaseká?

  3. Klávesová zkratka pro Terminator přistane v adresáři „/“?

  1. Jak spustit skript v prostředí Shell, když je stisknuta klávesová zkratka?

  2. Unity se po nabootování nespustí?

  3. Závažná chyba:Volání nedefinované funkce curl_init()