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!