logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 13-04-2022 17:24:51

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

esekeyd , mais volumeicon-alsa c'est mieux

Hello
m'en vais vous présenter ce petit démon super qui permet de se servir des touches de son clavier multimédia (en autre)
très pratique quand c'est pas prévu nativement sur son environnement de bureau

Description: démon de clavier multimédia pour Linux
ESE Key Daemon est un démon de clavier multimédia pour Linux. Avec les
noyaux de la série 2.6, il peut aussi gérer les télécommandes si elles
apparaissent comme claviers. Aucune modification du noyau n’est
nécessaire. C’est un programme en espace utilisateur qui lit les
interfaces /dev/input/event* dans l’attente de frappes au clavier.



esekeyd permet d'associer une commande à la pression (press) ou au relâchement  (release) d'une touche du clavier multimédia, les scripts ne sont pas pris en compte

installer le paquet esekeyd

apt install esekyed



pour que le deamon fonctionne il faut faire parti du group input

adduser stephane input


bien entendu remplacer stephane par votre nom d'utilisateur smile

deco/reco pour que soit pris en compte

créer un répertoire , puis un fichier vide de configuration

mkdir ~/.config/esekeyd && touch ~/.config/esekeyd/.esekeyd.conf



Tester les touches avant d'utiliser l'utilitaire learnkeys car on ne tombe pas toujours sur le bon /dev/input du premier coup
lister le répertoire qui va bien et lancer l'utilitaire keytest

ls /dev/input/by-id/


usb-KYE_SYSTEMS_CORP._Wired_Mouse-event-mouse
usb-KYE_SYSTEMS_CORP._Wired_Mouse-mouse
usb-NOVATEK_USB_Keyboard-event-if01
usb-NOVATEK_USB_Keyboard-event-kbd



Dans mon cas, les touches multimédia clavier sont indépendantes des autres touches (/dev/input/usb-NOVATEK_USB_Keyboard-event-kbd)
seul

keytest /dev/input/by-id/usb-NOVATEK_USB_Keyboard-event-if01

me renvoi une réponse sur les touches multimédia appuyées
Une fois le test concluant on utilise l'utilitaire learnkeys pour compléter le fichier .esekeyd.conf précédemment créé

ce qui donne quelque chose du genre:

learnkeys ~/.config/esekeyd/.esekeyd.conf /dev/input/by-id/usb-NOVATEK_USB_Keyboard-event-if01


learnkeys (ESE Key Deamon 1.2.7, SVN-r63)

Pres ANY (fun)key... or Ctrl-C to exit...

key KEY_113 stored in config file
key KEY_113 stored in config file
key KEY_114 stored in config file
key KEY_114 stored in config file
key KEY_115 stored in config file
key KEY_115 stored in config file
^C
Caught signal 2, writing config file and exiting...




les entrées sont stockées commenté , ajouter une description de la touche du clavier pour chaque entrées
décommenté les lignes qui vous interesse et associé une commande, dans mon exemple touche pour le son (mute ,- et +)

nano ~/.config/esekeyd/.esekeyd.conf


#
# ESE Key Deamon 1.2.7 config file
#

#
# example 1: to run mutt in xterm we must set DISPLAY
#            so the command line will be as follows:
#MAIL:/bin/sh -c "DISPLAY=:0 xterm -e mutt"
#
# example 2: turn on/off GPS reciever when lid is open/closed
#RADIO(press):echo 1 >/sys/device/platform/gps/gps_power
#RADIO(release):echo 0 >/sys/device/platform/gps/gps_power
#
# example 3: run nautilus when both left meta and e keys are press
#LEFTMETA+E:nautilus
#
#touche mute
KEY_113(press):amixer -D pulse sset Master toggle
#KEY_113(release):

#touche son -
KEY_114(press):amixer -D pulse sset Master 10%-
#KEY_114(release):

#touche son +
KEY_115(press):amixer -D pulse sset Master 10%+
#KEY_115(release):
 



tester le deamon esekeyd

esekeyd ~/.config/esekeyd/.esekeyd.conf /dev/input/by-id/usb-NOVATEK_USB_Keyboard-event-if01

Dernière modification par Croutons (15-04-2022 09:16:10)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#2 13-04-2022 18:23:30

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : esekeyd , mais volumeicon-alsa c'est mieux

Hello,

Intéressant.

les scripts ne sont pas pris en compte

même si le script est exécutable et placé dans un dossier du PATH ?


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#3 13-04-2022 18:37:37

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : esekeyd , mais volumeicon-alsa c'est mieux

ba écoute j'avais fais un script pour la touche mute , il fonctionnait bien tout seul sous /usr/bin/mute_key
mais pas moyen de le faire fonctionner dans mon fichier esekyed.conf
ceci dit on peut mettre des lignes de commande a rallonge
heureusement j'ai vu qu'i y avait une option toggle avec amixer, mais me suis bien pris la tête avant
surtout j'ai tâtonné pas mal avant de comprendre le fonctionnement du deamon

 cat /usr/bin/mute_key


#!/bin/bash
#Pour la touche mute du clavier multimédia
#mute ou unmute le volume Master
if
amixer -D pulse sget Master|grep --fixed-strings "[on]"
then
amixer -D pulse sset Master mute
else
amixer -D pulse sset Master unmut

Dernière modification par Croutons (13-04-2022 18:39:46)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#4 14-04-2022 12:44:40

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : esekeyd , mais volumeicon-alsa c'est mieux

bon c'est pas tout a fait le fonctionnement de esekeyd mon message #1
faut dire que la doc est un peu légère il faut décortiquer le machin kernal_panic.gif
le daemon est un service et son fichier de config est /etc/default/esekeyd
le script est situé ici

/etc/init.d/esekeyd



le fichier a modifier

nano /etc/default/esekeyd


# Defaults for esekeyd initscript

# Start esekeyd on boot (set it to "true" to enable)
START_ESEKEYD=true

# Daemon options, at last config location must be present
DAEMON_OPTS=/home/stephane/.config/esekeyd/.esekeyd.conf
 



2 valeur a renseigner si oui ou non le service démarre au boot et la localisation du fichier eseyed.conf
Normalement input_device_name est en autodetection ce qui devrait fonctionné dans la majorité des cas
mais si comme moi le clavier est séparé en 2 device et que autodetection se trompe il faudra lui spécifier le bon device
et c'est la que sa se gâte car pour l'instant seul le service en autodetection fonctionne , quand je lui spécifie le device qui a régi au keytest j'ai une erreur

les log sont ici /var/log/daemon.log a consulter en root ou en user si on fait parti du group adm
(normalement les log auraient du etre sous /var/log/esekeyd , surement une petit erreur dans le script)

En autodetection , c'est a dire avec la ligne DAEMON_OPTS=/home/stephane/.config/esekeyd/.esekeyd.conf

systemctl status esekeyd.service


● esekeyd.service - LSB: ESE Key Daemon
     Loaded: loaded (/etc/init.d/esekeyd; generated)
     Active: active (running) since Thu 2022-04-14 13:40:32 CEST; 4s ago
       Docs: man:systemd-sysv-generator(8)
    Process: 11839 ExecStart=/etc/init.d/esekeyd start (code=exited, status=0/SUCCESS)
      Tasks: 1 (limit: 4578)
     Memory: 192.0K
        CPU: 18ms
     CGroup: /system.slice/esekeyd.service
             └─11843 /usr/sbin/esekeyd /home/stephane/.config/esekeyd/.esekeyd.conf
 

Dernière modification par Croutons (15-04-2022 17:12:23)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#5 14-04-2022 18:10:20

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : esekeyd , mais volumeicon-alsa c'est mieux

Hé ben smile
Ça fonctionne bien wink

Mais j'ai fait un peu différemment :
Installation de esekeyd, création du fichier de configuration (pourquoi le cacher dans un dossier déjà caché ?).
Par contre, je n'aime pas trop que l'utilisateur fasse partie du groupe input.
alors pour éviter cela, j'ai créé un groupe "kbd_media", auquel je fais partie avec :

addgroup kb_media && addgroup tawal kbd_media

(adapter le nom d'utilisateur wink),
ensuite je crée une règle udev dans /etc/udev/rules.d/90-kbd_media.rules avec ce contenu (adapter le périphérique) :

SUBSYSTEM=="input", SYMLINK=="input/by-id/usb-Microsoft_Comfort_Curve_Keyboard_2000-if01-event-kbd", GROUP="kbd_media", MODE="0660"


J'active la règle immédiatement avec :

udevadm trigger

(possibilité de déconnexion, de toute façon, il la faut pour prendre en compte l'appartenance au groupe kbd_media)
Je me déconnecte et reconnecte si la commande si dessus ne l'a pas fait pour moi big_smile
Et lance la commande de test du "démon" :

esekeyd ~/.config/esekeyd/esekeyd.conf /dev/input/by-id/usb-Microsoft_Comfort_Curve_Keyboard_2000-if01-event-kbd

Ça fonctionne.

J'ai testé avec un fichier de configuration ainsi généré (et modifié) :

#
# ESE Key Deamon 1.2.7 config file
#

#
# example 1: to run mutt in xterm we must set DISPLAY
#            so the command line will be as follows:
#MAIL:/bin/sh -c "DISPLAY=:0 xterm -e mutt"
#
# example 2: turn on/off GPS reciever when lid is open/closed
#RADIO(press):echo 1 >/sys/device/platform/gps/gps_power
#RADIO(release):echo 0 >/sys/device/platform/gps/gps_power
#
# example 3: run nautilus when both left meta and e keys are press
#LEFTMETA+E:nautilus
#

# Précédent
KEY_158(press): /home/tawal/bin/ese_prec
# Suivant
KEY_159(press): /home/tawal/bin/ese_suiv
# Son -
KEY_114(press): /home/tawal/bin/ese_moins
# Son +
KEY_115(press): /home/tawal/bin/ese_plus
# Mute
KEY_113(press): /home/tawal/bin/ese_mute

On voit donc que les scripts sont admis (au moins en renseignant le chemin complet). Ce sont de simple scripts du genre (pour /home/tawal/bin/ese_plus) :

#!/bin/bash

vol="$(audtool --get-volume)"
new_vol=$((vol+5))
audtool --set-volume "$new_vol"

et ça fonctionne wink

Pas de service en route :

$ systemctl status esekeyd.service
● esekeyd.service - LSB: ESE Key Daemon
     Loaded: loaded (/etc/init.d/esekeyd; generated)
     Active: inactive (dead)
       Docs: man:systemd-sysv-generator(8)


Du coup, je le désactive avec :

systemctl disable esekeyd


Et je mets la commande  (à adapter) :

esekeyd ~/.config/esekeyd/esekeyd.conf /dev/input/by-id/usb-Microsoft_Comfort_Curve_Keyboard_2000-if01-event-kbd

dans mon démarrage de session.

Et là, je reviens sur le fait que les touches "multimédias" sont vues comme un périphérique à part.
Et c'est très bien ainsi.
Car avec la méthode que je décris, seul les évènements des touches "multimédias" sont "libre d'accès" par l'utilisateur.

Donc, ça fonctionne très bien wink (tiens je radote tongue)
PS : J'ai testé la déconnexion/reconnexion pour voir.

Edit:
Correction du nom de fichier de la règle udev (ajout de l'extension .rules)
Les scripts doivent être exécutables (chmod +x nom_du_script).
Impossible de démarrer le service sous cette configuration, mais bon c'est un service adapté de sysv.
On perd juste le coté multi-utilisateur, il faut configurer l'autostart pour chacun d'eux.

Dernière modification par Tawal (14-04-2022 21:27:51)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#6 15-04-2022 08:09:18

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : esekeyd , mais volumeicon-alsa c'est mieux

merci de ton retour Tawal
elles touche réagissent bien au keytest

cat /etc/default/esekeyd


# Defaults for esekeyd initscript

# Start esekeyd on boot (set it to "true" to enable)
START_ESEKEYD=false

# Daemon options, at last config location must be present
DAEMON_OPTS="/etc/default/.esekeyd.conf /dev/input/by-id/usb-NOVATEK_USB_Keyboard-event-if01"


le service échouait car je n'avait pas protégé la variable par des guillemets big_smile
mais cela ne fonctionne pas
je pensais aussi a une régle udev , tu m'as sauvé pour la syntaxe mais cela ne fonctionne pas mieux
peut être du a un bug , j'ai lu ici
https://tracker.debian.org/pkg/esekeyd
j'ai lâché l'affaire parfois le keytest ne fonctionne plus je ne sais pourquoi

edit:
Dans la famille pourquoi faire simple quand on peut faire compliqué je demande croutons kernal_panic.gif

suffit d'installer

apt install volumeicon-alsa


il semble pas se lancer au demarrage , il faudra surement lui mettre un fichier desktop dans le dossier autostart
une fois l'icone dans la zone de notification , clique droite sur celui ci puis préférences
sous l'onglet Hotkeys on coche les 3 cases
onglet status icon choisir le thème blue bar qui offre une meilleur visibilité

Dernière modification par Croutons (15-04-2022 10:07:55)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#7 15-04-2022 09:50:26

vv222
Administrateur
Lieu : Bretagne
Distrib. : Debian Sid
(G)UI : sway
Inscription : 18-11-2013
Site Web

Re : esekeyd , mais volumeicon-alsa c'est mieux

Ce ESE Key Daemon me plaît bien. S’il fonctionne même en-dehors d’une session graphique, je pense qu’il pourrait remplacer xbindkeys dans mon installation.

Jouer sous Debian ? Facile !

Ceterum censeo Barum esse delendam

Hors ligne

#8 15-04-2022 14:45:19

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : esekeyd , mais volumeicon-alsa c'est mieux

Ma méthode fonctionne sans démon.

Par contre, ESE Key Daemon nécessite des chemins absolus pour bien fonctionner, car cet aprem après le démarrage, ça ne fonctionnait pas/plus.
J'ai changé le ~ dans la commande de l'autostart par /home/tawal, ai redémarré et ... ça fonctionne tongue

De plus, le "service" proposé est une "adaptation" d'un script sysV-init. C'est peut-être ce qui le rend "bancal", exemple :

$ cat /run/systemd/generator.late/esekeyd.service
# Automatically generated by systemd-sysv-generator

[Unit]
Documentation=man:systemd-sysv-generator(8)
SourcePath=/etc/init.d/esekeyd
Description=LSB: ESE Key Daemon
Before=multi-user.target
Before=multi-user.target
Before=multi-user.target
Before=graphical.target
After=remote-fs.target

[Service]
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
SuccessExitStatus=5 6
ExecStart=/etc/init.d/esekeyd start
ExecStop=/etc/init.d/esekeyd stop

3 fois le même "before=", ceci après activation du service avec :

systemctl enable esekeyd

esekeyd.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable esekeyd

Dernière modification par Tawal (15-04-2022 14:46:20)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#9 15-04-2022 16:59:53

vv222
Administrateur
Lieu : Bretagne
Distrib. : Debian Sid
(G)UI : sway
Inscription : 18-11-2013
Site Web

Re : esekeyd , mais volumeicon-alsa c'est mieux

À moins que j’ai loupé un truc tu utilises bien un démon, mais pas un démon système en effet. Il est lancé via le autostart de ta session utilisateur plutôt que via systemd (et probablement coupé à la fermeture de ta session, je ne connais pas bien autostart).

Ici je pense viser un entre-deux, en utilisant un service utilisateur systemd. Donc lancé lors de ma connexion en tty, pas lors du lancement du système ni lors du lancement de ma session graphique.

Jouer sous Debian ? Facile !

Ceterum censeo Barum esse delendam

Hors ligne

#10 15-04-2022 17:20:32

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : esekeyd , mais volumeicon-alsa c'est mieux

Oui, le binaire "/usr/sbin/esekeyd" est un démon.
Par contre, je n'ai pas réussi à démarrer le service proposé, mais il est sûrement possible d'en créer un perso wink
Tiens, du coup, je m'y lance pour voir.

Au fait, il semble bien marcher en tty.
Bon la seule commande de mon fichier de configuration est celle du "mute".
(pas accès à audacious en tty, je suis passé par mplayer, et j'avais le retour "no bind found for key '0x100004d'." pour le mute qui fonctionnait.)

Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#11 15-04-2022 17:53:19

vv222
Administrateur
Lieu : Bretagne
Distrib. : Debian Sid
(G)UI : sway
Inscription : 18-11-2013
Site Web

Re : esekeyd , mais volumeicon-alsa c'est mieux

Tawal a écrit :

Au fait, il semble bien marcher en tty.



Nickel, je vais sûrement l’adopter dans ce cas!

Pas tant pour le fonctionnement en tty (dont je n’aurai probablement que rarement besoin), mais plutôt pour m’assurer que j’utilise un outil que je n’aurai pas besoin de remplacer lorsque je passerai de X à Wayland.


Jouer sous Debian ? Facile !

Ceterum censeo Barum esse delendam

Hors ligne

#12 15-04-2022 18:11:34

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : esekeyd , mais volumeicon-alsa c'est mieux

Et je viens de tester ce service très simple et adapté à ma situation (direct mis dans /etc/systemd/system/esekeyd-media.service) :

[Unit]
Description=Affecter les touches Médias du clavier à des commandes
After=udev.service

[Service]
Type=forking
ExecStart=/usr/sbin/esekeyd /home/tawal/.config/esekeyd/esekeyd.conf /dev/input/by-id/usb-Microsoft_Comfort_Curve_Keyboard_2000-if01-event-kbd

[Install]
WantedBy=multi-user.target


Et ... ça fonctionne smile

systemctl status esekeyd-media

● esekeyd-media.service - Affecter les touches Médias du clavier à des commandes.
     Loaded: loaded (/etc/systemd/system/esekeyd-media.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-04-15 19:03:12 CEST; 2s ago
    Process: 492373 ExecStart=/usr/sbin/esekeyd /home/tawal/.config/esekeyd/esekeyd.conf /dev/input/by-id/usb-Microsoft_Comfort_Curve_Keyboard_2000>
   Main PID: 492374 (esekeyd)
      Tasks: 1 (limit: 4620)
     Memory: 184.0K
        CPU: 8ms
     CGroup: /system.slice/esekeyd-media.service
             └─492374 /usr/sbin/esekeyd /home/tawal/.config/esekeyd/esekeyd.conf /dev/input/by-id/usb-Microsoft_Comfort_Curve_Keyboard_2000-if01-ev>

avril 15 19:03:12 Deb1 systemd[1]: Starting Affecter les touches Médias du clavier à des commandes...
avril 15 19:03:12 Deb1 esekeyd[492373]: ESE Key Deamon 1.2.7 (SVN-r63)
avril 15 19:03:12 Deb1 esekeyd[492373]: started key daemon for /dev/input/by-id/usb-Microsoft_Comfort_Curve_Keyboard_2000-if01-event-kbd
avril 15 19:03:12 Deb1 systemd[1]: Started Affecter les touches Médias du clavier à des commandes.



Edit:
Enlèvement du "$ sudo" en trop sur le copier/coller de la commande root.

Dernière modification par Tawal (15-04-2022 18:16:48)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#13 15-04-2022 20:21:32

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : esekeyd , mais volumeicon-alsa c'est mieux

Hello,

je reviens sur ce service.
Car comme Croutons, j'ai été confronté à des "ça marche, ça marche plus".
Et je pense que le souci vient que esekeyd tient compte de l'utilisateur qui l'appelle et attend un "KEY_CODE" de sa part.
Du coup, pour palier à cela, j'ai mis le service (que j'ai un peu amélioré) comme service "user".

Le service /etc/systemd/user/esekeyd-media.service  :

[Unit]
Description=Affecter les touches Médias du clavier à des commandes
After=udev.service

[Service]
Type=forking
ExecStart=/usr/local/bin/esekeyd_daemon
RemainAfterExit=yes
ExecStop=/usr/bin/killall esekeyd
SuccessExitStatus=15

[Install]
WantedBy=multi-user.target


Il appelle un script qui vient lire un fichier de configuration (plus simple pour changer plus tard) /etc/default/esekeyd.conf (ajout de l'extension .conf).
Le script  (placé dans /usr/local/bin/esekeyd_daemon et rendu exécutable) :

#!/bin/bash

if [ -f /etc/default/esekeyd.conf ]
then
   . /etc/default/esekeyd.conf
else
   exit 1
fi

PATH=/usr/sbin:$PATH

/usr/sbin/esekeyd "$Conf" "$Input"

exit $?


Et le fichier /etc/default/esekeyd.conf contient :

# Fichier de Configuration du service "esekeyd-media.service" pour ESE Key Daemon.
# Nécessite le script /usr/local/bin/esekeyd_daemon

Conf="/home/tawal/.config/esekeyd/esekeyd.conf"
Input="/dev/input/by-id/usb-Microsoft_Comfort_Curve_Keyboard_2000-if01-event-kbd"


Voilà pour les fichiers.
Ensuite, il suffit d'activer le service et de le démarrer avec :

systemctl --user enable esekeyd-media && systemctl start esekeyd-media


Le tout avec la règle udev active smile

Un retour d'activation, démarrage du service (la commande user ci-dessus) suivi de la commande pour stopper le service (systemctl --user stop esekeyd-media), plus quelques contrôles intercalés :

$ systemctl --user enable esekeyd-media && systemctl --user start esekeyd-media
Created symlink /home/tawal/.config/systemd/user/multi-user.target.wants/esekeyd-media.service → /etc/xdg/systemd/user/esekeyd-media.service.
$
$ systemctl --user status esekeyd-media
● esekeyd-media.service - Affecter les touches Médias du clavier à des commandes
     Loaded: loaded (/etc/xdg/systemd/user/esekeyd-media.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-04-15 21:12:34 CEST; 1s ago
    Process: 813328 ExecStart=/usr/local/bin/esekeyd_daemon (code=exited, status=0/SUCCESS)
   Main PID: 813330 (esekeyd)
      Tasks: 1 (limit: 4620)
     Memory: 184.0K
        CPU: 18ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/app.slice/esekeyd-media.service
             └─813330 /usr/sbin/esekeyd /home/tawal/.config/esekeyd/esekeyd.conf /dev/input/by-id/usb-Microsoft_Comfort_Curve_Keyboard_2000-if01-ev>

avril 15 21:12:34 Deb1 systemd[303676]: Starting Affecter les touches Médias du clavier à des commandes...
avril 15 21:12:34 Deb1 esekeyd_daemon[813329]: ESE Key Deamon 1.2.7 (SVN-r63)
avril 15 21:12:34 Deb1 esekeyd[813329]: started key daemon for /dev/input/by-id/usb-Microsoft_Comfort_Curve_Keyboard_2000-if01-event-kbd
avril 15 21:12:34 Deb1 esekeyd[813329]: fail to create /var/run/esekeyd.pid
avril 15 21:12:34 Deb1 systemd[303676]: Started Affecter les touches Médias du clavier à des commandes.
$
$ pgrep esekeyd
813330
$
$ systemctl --user stop esekeyd-media
$ systemctl --user status esekeyd-media
● esekeyd-media.service - Affecter les touches Médias du clavier à des commandes
     Loaded: loaded (/etc/xdg/systemd/user/esekeyd-media.service; enabled; vendor preset: enabled)
     Active: inactive (dead)

avril 15 21:12:34 Deb1 systemd[303676]: Starting Affecter les touches Médias du clavier à des commandes...
avril 15 21:12:34 Deb1 esekeyd_daemon[813329]: ESE Key Deamon 1.2.7 (SVN-r63)
avril 15 21:12:34 Deb1 esekeyd[813329]: started key daemon for /dev/input/by-id/usb-Microsoft_Comfort_Curve_Keyboard_2000-if01-event-kbd
avril 15 21:12:34 Deb1 esekeyd[813329]: fail to create /var/run/esekeyd.pid
avril 15 21:12:34 Deb1 systemd[303676]: Started Affecter les touches Médias du clavier à des commandes.
avril 15 21:13:32 Deb1 systemd[303676]: Stopping Affecter les touches Médias du clavier à des commandes...
avril 15 21:13:32 Deb1 esekeyd[813330]: caught signal 15, exiting...
avril 15 21:13:32 Deb1 systemd[303676]: esekeyd-media.service: Succeeded.
avril 15 21:13:32 Deb1 systemd[303676]: Stopped Affecter les touches Médias du clavier à des commandes.
$
$ pgrep esekeyd
$

et ça fonctionne ... enfin tongue

Edit:
On voit juste, au démarrage, une erreur de création du fichier /var/run/esekeyd.pid, rien de grave, ça fonctionne quand même.
Et puis, stopper le service tue tous les processus esekeyd, donc osef.
Par contre, il faut activer le service pour chaque utilisateur ...

Ah oui, j'ai ajouté une modif au script (un ajout au PATH au cas où).

Dernière modification par Tawal (15-04-2022 20:38:04)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#14 16-04-2022 18:57:01

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : esekeyd , mais volumeicon-alsa c'est mieux

Hello,

Je reviens encore tongue
Car j'ai simplifié le service, plus besoin de /usr/local/bin/esekeyd_daemon.
Et je l'ai modifié pour qu'il soit automatiquement démarré à l'ouverture de session (au login exactement).
Et il y a un moyen d'activer le service pour tous les utilisateurs d'un seul coup wink

Donc, toujours :
   - création du groupe "kbd_media".
   - la règle udev.
   - appartenance des utilisateurs au groupe "kbd_media".
   - création du fichier /etc/default/esekeyd.conf contenant les variables Conf et Input
         (Conf=fichier de configuration touches/commandes, Input=le périphérique concerné)

Le service /etc/systemd/user/esekeyd-media.service (mis à jour suivant les édits ci-dessous) :

[Unit]
Description=Affecter les touches Médias du clavier à des commandes
After=udev.service

[Service]
Type=forking
EnvironmentFile=/etc/esekeyd/esekeyd.conf
ExecStart=/usr/sbin/esekeyd ${Conf} ${Input}
RemainAfterExit=yes
ExecStop=/usr/bin/killall esekeyd
SuccessExitStatus=15

[Install]
WantedBy=default.target



La commande pour activer le service pour tous les utilisateurs :

systemctl  --global  --user  --now   enable   esekeyd-media



Exemple de fichier /etc/default/esekeyd.conf (edit /etc/esekeyd/esekeyd.conf) :

# Fichier de Configuration du service "esekeyd-media.service" pour ESE Key Daemon.
# Conf = fichier de configuration Touches/Commandes.
# Input = le périphérique concerné.

Conf="/etc/esekeyd/esekeyd-commands.conf"
Input="/dev/input/by-id/usb-Microsoft_Comfort_Curve_Keyboard_2000-if01-event-kbd"



Au final : (Edit2: modifié suite à l'Edit1 en dessous)
   - 1 dossier et 4 fichiers à créer :
        /etc/esekeyd (dossier)
        /etc/systemd/user/esekeyd-media.service
        /etc/esekeyd/esekeyd.conf
        /etc/esekeyd/esekeyd-commands.conf
        /etc/udev/rules.d/90-esekeyd.rules
   - 4 (+ autant d'user sup.) commandes à lancer :

addgroup kbd_media

addgroup Nom_Utilisateur  kbd_media

à répéter pour chaque utilisateur, puis

udevadm trigger

systemctl  --global  --user  --now   enable   esekeyd-media



Edit1: J'ai un peu plus "formalisé" la chose.
J'ai créé un dossier /etc/esekeyd, dans lequel j'ai placé les fichiers esekeyd.conf et esekeyd-commands.conf contenant respectivement :

# Fichier de Configuration du service "esekeyd-media.service" pour ESE Key Daemon.
# Conf = fichier de configuration Touches/Commandes.
# Input = le périphérique concerné.

Conf="/etc/esekeyd/esekeyd-commands.conf"
Input="/dev/input/by-id/usb-Microsoft_Comfort_Curve_Keyboard_2000-if01-event-kbd"

#
# ESE Key Deamon 1.2.7 config file
#

#
# example 1: to run mutt in xterm we must set DISPLAY
#            so the command line will be as follows:
#MAIL:/bin/sh -c "DISPLAY=:0 xterm -e mutt"
#
# example 2: turn on/off GPS reciever when lid is open/closed
#RADIO(press):echo 1 >/sys/device/platform/gps/gps_power
#RADIO(release):echo 0 >/sys/device/platform/gps/gps_power
#
# example 3: run nautilus when both left meta and e keys are press
#LEFTMETA+E:nautilus
#

# Précédent
KEY_158(press): /home/tawal/bin/ese_prec
# Suivant
KEY_159(press): /home/tawal/bin/ese_suiv
# Son -
KEY_114(press): /home/tawal/bin/ese_moins
# Son +
KEY_115(press): /home/tawal/bin/ese_plus
# Mute
KEY_113(press): /home/tawal/bin/ese_mute

bon le dernier est personnel wink

Et j'ai aussi modifié la ligne du service /etc/systemd/user/esekeyd-media.service :

EnvironmentFile=/etc/esekeyd/esekeyd.conf



Edit3:
Modification du service, la ligne ExecStart=... devient  :

ExecStart=/usr/sbin/esekeyd ${Conf} ${Input}

afin de bien appréhender les noms de fichiers/dossiers avec des espaces.
Edit4:
Mis à jour du poste entier suivant les édits.

Dernière modification par Tawal (17-04-2022 09:38:39)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#15 17-04-2022 09:16:16

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : esekeyd , mais volumeicon-alsa c'est mieux

Que pensez-vous d'en faire un Wiki-Debian-Facile ?

Edit:
Cela n'a pas encore été dit, mais :
Sous XFCE, j'obtiens le même résultat en configurant les raccourcis claviers.
Menu - Paramètres - Clavier - Onglet Raccourcis - clic sur +=Ajouter raccourci - Saisir la commande - Appuyer sur la touche désirée.

Dernière modification par Tawal (17-04-2022 09:32:05)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

Pied de page des forums