Vérifier le statut du pavé numérique avec un script

Bonjour à tous

j’ai un clavier sans led pour afficher le statut du pavé numérique (ainsi que pour la touche majuscule)

j’avais pensé créer un fichier bash contenant :

#!/bin/bash

sudo numlockx status

avec comme propriété : « autoriser l’execution du fichier comme un programme »
quand je double-clique, il me demande si je veux le lancer dans un terminal, je dis oui mais rien ne se fait

comment faire pour obtenir rapidement cette information ? (ainsi que celle des majuscules) : c’est utile pour la saisie des mots de passe où l’on ne voit pas ce qui est saisi

Le plus simple me semble être de tout bêtement ouvrir un terminal, et y entrer (sans le sudo) :

numlockx status

Je ne suis pas sûr que le passage par un script apporte grand chose ici.


Une alternative pour avoir l’info en permanence serait d’appeler cette commande dans un conky ou autre outil similaire s’affichant sur le bureau.

Dans le monde de Gnome il existe une extension dédiée

ça fonctionne très bien

Sous Buster, j’ai trouvé kylin-display-swich, qui ne semble pas restreint au monde du Nain.
mais pour l’activer man explique qu’ il faut faire:
Super_L + P/F3/F7
qui ressemble pour moi plus à une partie de bataille navale qu’à une commande . Je suis resté très enfant, enfin je le redeviens…

bonjour josephtux

Super correspond à la touche « windows », par contre, je ne comprend pas ce qu’il faut faire en plus

En outre, avec Raspberry Os en xfce, dès qu’on appuie sur la touche « super », le menu apparaît 'ce qui est stupide car il suffit juste de cliquer sur la framboise avec la souris pour l’activer
donc il faudrait commencer par désactiver la touche super
Sur Raspberry OS on peut retourner sur le bureau en cliquant sur Super+alt+D, mais c’est très difficile pour moi d’appuyer simultanément sur 3 touches avec une seule main valide (avec linuxmint cinamon amd64 il suffit d’appuyer sur super+D
c’est pour cela que je cherche un système par clic ou en appyuant sur seulement 2 touches

merci didierf,
Super=touche fenêtre: je me sens un peu moins bête.

Chez moi ces combinaisons de touche mettent l’ordi en veille bizarre (écran noir), puis un écran de login graphique.

Bonjour

J’avais bidouillé un script pour faire afficher un voyant Num - Caps
à chaque fois que l’on appuie sur la touche VerNum ou VerMaj :

Merci MicP,
très intéressant,
reste à rendre cet affichage permanent (avec mise à jour de l’état du clavier).
(peut être dans une boucle while de bash)

Merci Micp pour ta réponse
je n’ai pas pu l’étudier plus tôt à causes de problèmes familiaux
j 'ai suivi tes instructions, mais je tombe sur un message d’erreur:

notify-send command introuvable

je précise que je suis sur raspberry OS vers 1.4 (arm)

Bonjour

Ce script est prévu pour fonctionner sur un système debian,
et avec un environnement de bureau XFCE.

Mais, comme la question était posée dans la rubrique Support debian
je n’avais pas fait attention au fait que tu utilises un système raspberry OS vers 1.4 (arm)
et je ne sais pas s’il est possible d’y installer un système de notification équivalent,
ni si les commandes xset et xdotools existent sur ce système.


Si xset et xdotools et zenity sont installés ton système,
essaye en suivant les indications contenues dans les lignes commentées
du script suivant :

#!/bin/bash

# # # # # # # # # # # # # # # # # # # # # # # # # 
# Affiche un message de notification présentant l’état
#  des voyants du clavier "Num" et "Cap"
# 
# Ce script utilise les commandes suivantes :
# xdotools
# xset
# zenity
#
#
# Si nécessaire, installez le paquetage "xdotool"
#  en lançant la ligne de commandes suivante :
# su -c "apt install xdotool"
#
# Depuis votre compte utilisateur,
#  créez un fichier nommé :
# ~/.capsNumLock.sh
#  dans lequel vous copierez
#  l’intégralité de ce script.
#
# Rendez ce fichier script exécutable
#  en lançant la ligne de commande suivante :
# chmod u+x ~/.capsNumLock.sh
#
# Cliquez sur "Applications" -> "Paramètres" -> "Clavier" ->  Onglet "Raccourcis d'applications"
#  et cliquez sur le bouton "+ Ajouter"
#
# Entrez la ligne de commande à exécuter avec son paramètre :
# /home/michel/.capsNumLock.sh Caps_Lock 
#  et appuyez sur la touche "ver Maj"
#
# Entrez la ligne de commande à exécuter avec son paramètre :
# /home/michel/.capsNumLock.sh Num_Lock 
#  et appuyez sur la touche "ver Num"
#
# Cliquez sur le bouton "X Fermer"
# # # # # # # # # # # # # # # # # # # # # 
#
#

tempo=2   # Durée d'affichage du message (en secondes)
ledOn="●"
ledoff="○"
labNum="Num"
labCap="Caps"

xdotool key $1
case $(($(xset q | awk 'NR==2{print $NF}')*1)) in
    0)
       num="$ledoff"
       cap="$ledoff"
       ;;
    1)
       num="$ledoff"
       cap="$ledOn"
       ;;
    2)
       num="$ledOn"
       cap="$ledoff"
       ;;
    3)
       num="$ledOn"
       cap="$ledOn"
       ;;
esac
zenity --info --title="Voyants clavier :" --text="$num $labNum
$cap $labCap"  --timeout=$tempo

merci Micp

je venais juste d’installer emmabuntu DE4 xfce sur une machine virtuelle AMD64 pour tester et ça marchait, donc le problème venait bien du ARM

j’ai donc remplacé le script par le nouveau
j’avais déjà installé Xdotools, Zenity était installé d’office, par contre xset n’était pas installable et éait remplacé par x11-xserver-utils, lui aussi installé d’office
le script fonctionne. La procédure pour le mettre dans les applications est différente, mais j’ai pu le mettre en tête dès que je clique sur la framboise !
ça fonctionne même mieux car sur emmabuntu, quand je le lance pour voir le statut, il le change, donc j’aurais du appuyer 2 fois au cas où le réglage était bon. Là, je ne fais que vérifier le statut (et je le change au besoin)
pour moi c’est donc une bonne affaire résolue, merci beaucoup !

Merci pour le retour :grinning:

Pour ceux qui passeront par là et qui auront le même type de machine que la tienne,
ça serait bien que tu postes un petit topo
en décrivant le contexte : les références de ta machine + le système d’exploitation utilisé,
puis le script que tu as créé et ce que tu as fait pour qu’il fonctionne.

Merci.

c’est une bonne idée, je vais le faire, mais où poste-on un topo ? dans trucs et astuces ?

Tu peux le poster dans ce fil de discussion,
ne t’embête pas pour la mise en forme,
poste les copié/collés directement dans ton prochain message
et ne t’inquiètes pas de l’apparence que ça prendra,
je referai la mise en forme de tes messages après.


D’autre part, la commande xset fait partie du paquetage x11-xserver-utils

TUTORIEL

METTRE EN PLACE DES TEMOINS DE STATUT DES TOUCHES MAJUSCULES ET PAVE NUMERIQUE

But recherché : Pour les claviers ne disposant pas de leds affichant les majuscules ou le pavé numérique, créer un petit programme permettant de savoir à tout instant le statut de ces deux touches, afin de pouvoir entrer les mots de passe (caractères remplacés par des gros points) sans problème.

Matériel utilisé : Raspberry PI 4 modèle B rev 1,4 2GB ram

OS : Raspberry OS (Rasbian GNU/Linux 10 (buster) armv 7l (donc basé sur Debian)

Gestionnaire de fichiers : LXPanel


Pré-requis
Ce script utilise les commandes suivantes :

xdotools, xset (inclus dans x11-xserver-utils), zenity

Si nécessaire, installez le paquetage xdotools
en lançant la ligne de commandes suivante avec le terminal:

su -c "apt install xdotool"

(nécessite mot de passe root)

ou :

sudo apt install xdotool

(avec mot de passe session administrateur)


CREATION DU FICHIER

a) Méthode par le terminal

Depuis votre compte utilisateur,

  • Créez un fichier nommé : ~/.capsNumLock.sh
    dans lequel vous copierez l’intégralité du script.
  • Rendez ce fichier script exécutable en lançant la ligne de commande suivante depuis le terminal:
    chmod u+x ~/.capsNumLock.sh

b) Méthode avec le gestionnaire de fichiers

gestionnaire fichiers

Cliquez sur Fichier/New File

new file

cliquer sur le fichier, puis propriétés, de manière à avoir les paramétrages suivants :

propriété fichier1

propriété fichier2


REMPLISSAGE DU FICHIER

Ouvrez le fichier avec Geany, et copiez dedans le script suivant :

#!/bin/bash

tempo=5 # Durée d'affichage du message (en secondes)

ledOn="●"
ledoff="○"
labNum="Num"
labCap="Caps"

xdotool key $1
case $(($(xset q | awk 'NR==2{print $NF}')*1)) in

    0)
        num="$ledoff"
        cap="$ledoff"
    ;;

    1)
        num="$ledoff"
        cap="$ledOn"
    ;;

    2)
        num="$ledOn"
        cap="$ledoff"
    ;;

    3)
        num="$ledOn"
        cap="$ledOn"
    ;;
esac

zenity --info --title="Voyants clavier :" --text="$num $labNum
$cap $labCap" --timeout=$tempo

puis enregistrez.


INTEGRATION DU SCRIPT DANS LE MENU DES APPLICATIONS

Cliquez sur la framboise jusqu’ « Main Menu Editor »

main menu editor

puis cliquez sur « nouvel élément »

nouvel élément

puis renseignez le chemin du fichier .CapsNumLock.sh
launcher properties

puis validez.

On se retrouve avec le Main Menu Editor suivant :
main menu editor2

Numlock est tout en bas, on va cliquer dessus pour cliquer sur « Monter » de manière à l’avoir tout en haut.
main menu editor3


Maintenant, quand on clique sur la framboise, il se trouve juste en dessous, et il suffit de cliquer sur l’icone ‘Numlock’ pour avoir le statut des touches :
témoin statuts

j’ai fait un modop en dotx avec des images écrans, je doute qu’on les voit bien en copier coller

il faudrait pouvoir l’envoyer par email (fichier joint dotx non autorisé), mais le mail que j’ai reçu est un « noreply »

J’ai un peu retouché ton message en ce qui concerne les lignes de commandes et le contenu du script.

Si tu ré-édite ton message, tu verras la ligne que j’ai ajoutée avant et celle après chaque bloc de lignes de commandes.

Tu pourras facilement joindre à ton message
des images au format png

Mais d’ici, les images qui sont dans ton répertoire /tmp nous sont inacessibles

Merci pour ton boulot, et les images passent très bien. :grinning:

Un grand merci pour l’aide que tu m’as apporté, c’était normal que, à mon tour, je puisse apporter quelque chose aux utilisateurs futurs

Merci à tous,
tout cela est très instructif, très utile et intéressant donc.

Cependant, d’un point de vue pratique, j’ai fini par résoudre cette question en installant gkrellm

Avec ma configuration il affiche une icone avec 2 carrés, qui affichent le statut le la touche correspondante (VerrShift et VerrNum) avec couleur et marque
En plus (sous Buster), à chaque frappe de cette touche, il affiche (4 secondes) un cadenas en surimpression au milieu de l’écran, soit blanc intense (mode verrou) soit gris clair (mode déverrouillage) qui signale la situation. Très utile quand les gros doigts maladroits débordent!