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!