2022-11-21
md
Clavier macro : un projet Arduino et Free Pascal/Lazarus

 

 À Ronald, un collègue et ami, qui dans les années 80
cherchait un clavier avec une touche supplémentaire
pour chaque activité qu'il entreprenait 

Nano and keypad Il est possible de construire un clavier macro élémentaire à un coût presque dérisoire. Le mien est constitué d'un Arduino Nano v3 qui était relégué depuis des années dans un fond de tiroir et un pavé de 16 boutons-poussoirs achetés il n'y a pas longtemps pour obtenir la livraison gratuite. L'ajout d'un câble USB pour relier le clavier à l'ordinateur de bureau complète le dispositif. Sans boîtier, le projet ne paye pas mine, mais c'est suffisant pour vérifier si ce type de périphérique sera véritablement utile.

Du point de vue matériel, ce projet est presque identique à celui de Cristian Bastidas (crixodia) arduino-nano-macro-keypad. La seule différence est dans les connexions entre le clavier et le microcontrôleur. Côté logiciel, la différence entre les projets est bien plus grande. Le language de programmation est Free Pascal / Lazarus plutôt que Python. Cela m'a permis de faire quelque chose de plus flexible en espérant que le clavier macro sera plus utile.

Ce billet est surtout consacré aux logiciels dont l'élaboration a pris considérablement plus de temps que la fabrication du clavier. Outre la valeur de l'expérience d'évaluation, toujours en cours, le projet m'a apporté beaucoup de plaisir alors que je revenais à l'environnent de programmation Free Pascal / Lazarus délaissé dernièrement.

Table des matières

  1. Raison d'être
  2. Fabrication
  3. Croquis Arduino
  4. Installation des binaires de lazmacropad
    1. Préalables
    2. Configuration
  5. Compilation depuis le code source
    1. Compilateur
    2. Préalables et correctifs
  6. Manuel de l'utilisateur
    1. Menu principal
    2. Key Layout (disposition des touches)
    3. Macro Definitions (définitions des macros)
    4. Parameters (paramètres)
    5. Log Window (journal)
  7. Manuel de référence
    1. Syntaxe des macros
    2. Commandes pour coller depuis le presse-papiers
    3. Restrictions dans Windows
  8. Références

Raison d'être toc

Dans la plupart des projets semblables que j'ai examinés, le microcontrôleur s'affiche comme un périphérique USB d'interface humain adhérant au protocole HID (Human Interface Device). Voir Classe de périphérique d'interface humaine USB pour plus de détails. En d'autres mots, le microcontrôleur agit comme un clavier USB qui fonctionne en parallèle avec le clavier classique de l'ordinateur. En principe, on peut simuler l'entrée de plusieurs touches d'un clavier classique. La vidéo de Brian Lough, The Simplest DIY Macro Keypad with Arduino (voir aussi le référentiel arduino-switcheroonie sur GitHub), typique de cette approche est aussi simple que le projet de Cristian Bastidas du point de vue matériel. Cependant, le microcontrôleur est un Atmega32U4, plus puissant que le Atmega328P du Nano, qui implémente matériellement la pile USB 2.0. Plus récemment, des microcontrôleurs comme le SAMD21 ou le RP2040, qui ont la même capacité, sont utilisés. Or il n'est pas nécessaire d'avoir un microcontrôleur aussi avancé. Craig Gardner (LeafCutterLabs) a créé un mini clavier macro avec 4 touches basé sur le Attiny85. La pile USB 2.0 est une bibliothèque d'émulation provenant de Digistump pour la carte Digispark.

Une bonne proportion de ces projets se contente d'émettre des raccourcis clavier pour contrôler des applications telles OBS prisée des YouTubers. D'ailleurs, Cristian Bastidas a décidé d'utiliser une connexion série plutôt que d'émuler une pile USB, mais son programme de service injecte des codes de clavier virtuels dans le processus de saisie par clavier ce qui est l'équivalent d'utiliser une connexion USB HID.

Pour des raisons qui seront bientôt présentées, je veux éviter le recours à la simulation d'un clavier par injection d'entrée le plus possible. Comme le dit le titre de ce billet, ce sont des chaines d’un ou plusieurs caractères que je veux insérer en appuyant sur une seule touche du clavier macro. La solution adoptée ici est de copier les chaînes associées aux touches du clavier macro dans le presse-papiers. Après, un raccourci clavier (la combinaison de touches Ctrl+V par exemple) est injecté dans le programme ayant le focus pour y coller le contenu du presse-papiers. Évidemment, cette approche est moins universelle, car il se peut que des logiciels ne prennent pas en charge le presse-papiers ou que la fonctionnalité copier-coller soit désactivée dans certains modes. En pratique cela ne devrait pas causer de problèmes majeurs, mais c'est quelque chose qu'il faudra évaluer. Ceci étant dit, lazmacropad peut simuler la saisie par clavier en injectant des séquences d'évènements clavier.

fenêtre de définition des macros

Les macros 0 et 1, dont les définitions sont visibles sur la capture d'écran ci-dessus, font exactement la même chose, à savoir, elles insèrent la chaîne Hello. On peut tout de suite voir qu'il est bien plus facile de spécifier directement la chaîne de 5 caractères que de saisir 10 définitions d'évènement clavier. Cette différence est un premier argument valable à mes yeux pour l'utilisation du presse-papiers. Deuxième argument: comment simuler la séquence d'évènements clavier qui produirait la chaîne août ou plus précisément le u avec accent circonflexe? La prise en charge de la touche rémanente [^¨] du clavier ISO FR (AZERTY) est loin d'être évidente. C'est tellement plus simple de saisir û dans une chaîne à être copié vers le presse-papiers que je ne prévois pas déployer le moindre effort additionnel pour y arriver par une autre méthode. Vive la recherche de l'effort minimum découlant d'un paresse toute naturelle.

Fabrication toc

Le clavier est un dispositif très simple composé de 16 boutons-poussoirs disposés sur quatre rangées et quatre colonnes. Quand activé, chaque bouton ferme un circuit entre un tracé colonne et un tracé rangé.

key matrixkeypad and Nano

Il faut connecter huit broches entrée-sortie du microcontrôleur aux quatre signaux colonnes et quatre rangés du pavé. Les premières expériences utilisant des connexions Dupont d'environ 25 cm entre le pavé et le microcontrôleur ont été décevantes. Il y avait trop de signaux parasitaires entre ces fils de telle sorte qu'activer un bouton engendrait de nombreux faux contacts d'autres boutons. Alors, comme on peut voir, le Nano a été directement soudé sur les plots du clavier. On note que le Nano est sens dessus dessous, car un câble USB orienté vers la droite était plus pratique étant donné la position de l'ordinateur auquel est branché le clavier supplémentaire.

Il est fort probable qu'un microcontrôleur programmable dans l'EDI Arduino ou l'équivalent pourrait remplacer le Arduino Nano. Un ATTiny85 est suffisant si le pavé ne contient que 4 touches. Les logiciels élaborés pour ce projet peuvent prendre en charge jusqu'à 36 touches pour autant que le microcontrôleur possède 12 broches entrée/sortie pour des connexions directes aux signaux lignes et colonnes du clavier. L'utilisation d'un module I²C d'extension de ports E/S pourrait suppléé à un manque de broches E/S, mais il faudrait modifier le logiciel du microcontrôleur en conséquence.

Croquis Arduino toc

Le Nano balaye en continu le pavé de boutons poussoir. Lorsqu'il détecte qu'une touche a été enfoncée, il envoie un message à l'ordinateur de bureau ou portable via la connexion série (USB). Le message ne contient qu'une lettre ('0', '1', '2', ...) qui identifie la touche activée. C'est le programme lazmacropad, qui est un service roulant en arrière-plan sur l'ordinateur de bureau qui en charge la traduction de ces messages en macros puis les injecte dans l'application active sur l'ordinateur. Donc, le croquis Arduinoest relativement simple et ne fait appel qu'à une seule bibliothèque supplémentaire: Keypad de Mark Stanley et Alexander Brevig. Elle est facilement intégrée dans l'EDI Arduino avec le gestionnaire de bibliothèque de ce dernier. La source est disponible sur GitHub.

Le croquis Arduino pour le Nano est disponible depuis le référentiel du projet : https://raw.githubusercontent.com/sigmdel/lazmacropad/main/nanoMacroPad/nanoMacroPad.ino.

key pad connexion Si exactement le même clavier orienté dans la même direction qu'illustré dans la section précédente est fabriqué, le croquis peut être téléversé tel quel sur le Nano. Les étiquettes sur la clavier identifiant les boutons-poussoirs ne correspondent pas l'ordre souhaité. J'ai du modifier l'affectation des broches E/S pour que les messages ('0' à 'F') correspondent à l'ordre désiré.

// Digital pins for the keypad rows and cols // Correspondance with silkscreen: // S4 -- '0', ... S16 -- '3' // S3 -- '4', ... S15 -- '7' // S2 -- '8', ... S16 -- 'B' // S1 -- 'C', ... S15 -- 'F' // C4 C3 C2 C1 byte rowPins[ROWS] = {2, 3, 4, 5}; // // R1 R2 R3 R4 byte colPins[COLS] = {6, 7, 8, 9}; // Character for each key that will be transmitted over UART const char hexaKeys[ROWS][COLS] = { {'0', '1', '2', '3'}, {'4', '5', '6', '7'}, {'8', '9', 'A', 'B'}, {'C', 'D', 'E', 'F'} }

Un ajustement de ces valeurs s'imposera si un autre clavier ou un autre microcontrôleur sont utilisés. D'ailleurs des modifications seraient nécessaires avec le même matériel qu'on voudrait orienter différemment. Inutile de rentrer dans les détails. Avec un petit peu d'expérimentation, on trouvera facilement les ajustements à faire. De plus, il est fort probable qu'il sera nécessaire d'ajuster les valeurs des paramètres DebounceTime et HoldTime sans la fonction setup.

void setup() { Serial.begin(9600); customKeypad.setDebounceTime(40); customKeypad.setHoldTime(2000); }

encore là, c'est en expérimentant qu'on découvrira les bonnes valeurs.

Installation des binaires de lazmacropad toc

Il serait préférable de télécharger la source du projet et de le compiler avec une version récente de Lazarus. Toutefois, si l'on veut simplement tester lazmacropad pour rapidement l'évaluer, on peut télécharger un des fichiers binaires exécutables pour les architectures x86_64 et i386 sont disponibles dans la section Releases du même référentiel sur GitHub.

Si l'on désire utiliser le programme sur un autre système ou avec une autre bibliothèque d'interface graphique, il faut obtenir le code source.

Préalables toc

En principe les binaires sont complets et devraient fonctionner sans l'installation de bibliothèques supplémentaires. C'est le cas pour Windows, mais une bibliothèque externe peut causer des difficultés dans Linux. La bibliothèque Xtst est requise. Il est probablement qu'elle soit incluse dans la plupart des distributions. Il y a plusieurs façons de tester si une bibliothèque est installée. En voici une qui fonctionne avec le gestionnaire de paquet apt de Debian et ses dérivée.

michel@hp:~$ apt list --installed | grep xtst WARNING: apt does not have a stable CLI interface. Use with caution in scripts. libxtst6/focal,now 2:1.2.3-1 amd64 [installé] michel@hp:~$

Si la bibliothèque est manquante, elle peut être installée de la manière habituelle, notant que son nom est libxtst6 dans les récentes versions de Debian.

michel@hp:~$ apt install libxtst6

Configuration toc

Quand lazmacropad est lancé pour la première fois, il crée un fichier de configuration par défaut qui correspond à mon environnement.

[serial] device=/dev/ttyUSB0 baud=9600 [keypad] cols=4 rows=4 [log] level=1 size=256 [macros] filename=/home/michel/.config/sigmdel/lazmacropad/default.macros

Dans Windows, deux paramètres seront différent: device=COM4 et filename=C:\Users\michel\AppData\Local\sigmdel\lazmacropad\options.ini. De plus, qu'importe le système, il est presque certain que le nom d'utilisateur sera différent. On peut modifier ces valeurs et les autres avec l'éditeur de paramètres décrit ci-dessous. En particulier il est préférable d'ajuster le nombre de colonnes et de rangés de boutons dès le début si l'on utilise un pavé de dimension autre que 4x4.

Compilation depuis le code source toc

Le code source de lazmacropad se trouve dans référentiel du même nom sur GitHub. On peut obtenir le code source avec git

michel@hp:~$ git clone https://github.com/sigmdel/lazmacropad.git

ou en téléchargeant une archive.

michel@hp:~$ wget https://github.com/sigmdel/lazmacropad/archive/refs/heads/main.zip

On obtient ainsi la plus récente version de la source.

Compilateur toc

Le programme a été développé dans Linux Mint 20.1 Mate en utilisant la version 2.3.0 (rev main-2_3-1602-gdb285860e3) de l'EDI Lazarus basé sur la version 3.3.1 du compilateur Free Pascal. C'est dans cet environnent que la version binaire pour Linux utilisant la bibliothèque d'interfaces graphiques GTK 2 a été créée. Le même code source a été compilé avec la bibliothèque d'interfaces graphiques Qt5 en utilisant une version un peu plus récente de l'EDI Lazarus. Les résultats semblaient probants. Enfin, les versions pour Windows ont été compilées dans Windows 10 avec Lazarus 2.3.0 (rev main-2_3- 2734-g2f18817fd8).

Il faut utiliser des versions très récentes, dites trunk, des compilateurs. Il y a des problèmes cosmétiques dans l'éditeur des macros si le programme est compilé avec la version stable Lazarus 2.2.4 / FPC 3.2.2 sur Windows. Puisqu'il n'est pas particulièrement facile d'installer ces versions de l'EDI, j'utilise l'utilitaire fpcupdeluxe pour y arriver. On est presque certain de trouver un fichier binaire exécutable adéquat parmi les 34 dans la page Releases. Les versions pcupdeluxe-x86_64-linux et pcupdeluxe-x86_64-win64.exe ont bien fonctionné dans Mint 20.1 et Windows 10 respectivement. On trouve des instructions sur le Wiki de Free Pascal.

Inspecteur de projet

Préalables et correctifs toc

Le programme utilise l'unité MouseAndKeyInput pour simuler l'activation des touches d'un clavier. Cette unité se trouve dans le paquet lazmouseandkeyinput.lpk qui est inclus avec les autres composants du LCL, mais qui n'est pas compilé lors de l'installation du compilateur. Le wiki contient des instructions au sujet de l'installation du composant au début de la section Comment faire. J'ajouterais à ces instructions qu'il est préférable d'inclure le paquet à la fin de la liste des paquets requis dans l'inspecteur de projet (Menu: Projet/Inspecteur de projet...).

Malgré tous ces préparatifs, il se peut que l'erreur suivante s'affiche lors de la compilation de la source dans Linux du moins dans Mint 20.1.

Error: /usr/bin/ld : ne peut trouver -lXtst lazmacropad.lpr(29,1) Error: Error while linking

C'était un message inattendu puisque la bibliothèque est installée.

michel@hp:~$ locate libXtst /usr/lib/x86_64-linux-gnu/libXtst.so.6 /usr/lib/x86_64-linux-gnu/libXtst.so.6.1.10 ...

Pensant que -LXtst était probablement traduit en libXtst.so, j'ai ajouté un lien symbolique de ce nom vers la bibliothèque et cela a réglé le problème.

michel@hp:~$ cd /usr/lib/x86_64-linux-gnu michel@hp:/usr/lib/x86_64-linux-gnu$ sudo ln -s libXtst.so.6.1.0 libXtst.so michel@hp:/usr/lib/x86_64-linux-gnu$ sudo updatedb

Le répertoire dans lequel sont stockées les bibliothèques système n'est pas nécessaire appelé /usr/lib/x85_64-linux-gnu. Il faudra ajustez ce qui précède conformément à la sortie obtenue à partir de la commande locate. Certains installe le paquet de développement libxtst-dev dans le but d'ajouter le lien symbolique manquant, mais ce n'est pas nécessaire. Il n'est pas nécessaire de mettre à jour la base de données pour la commande locate avec updatedb, mais c'est une bonne pratique de le faire.

Il y a de fortes chances qu'avec ces correctifs le programme pourra être enfin compilé. Malheureusement, dans certaines distributions plus anciennes, une séquence sans fin d'événements de touches enfoncées est générée lorsqu'une macro est collée. Ces événements virtuels continueront jusqu'à ce qu'une touche du clavier physique soit enfoncée et relâchée. Les distributions Mint 20.1 sortie en janvier 2021 (une version LTS valable jusqu'en 2025) et Mint 21 tout récemment sortie font partie de ces distributions plus anciennes. La solution à ce problème est de changer le type de l'argument is_press dans la fonction XTestFakeKeyEvent en Boolean32 au lieu de Boolean. La fonction se trouve dans le fichier $(lazarus)/components/mouseandkeyinput/xkeyinput.pas. Le problème et la solution ont été fournis par bytesbites dans un message de forum

du 16 août 2016. Voir les problèmes 27819 et 39964 dans le référentiel de Lazarus.

La bibliothèque Xtst n'est pas utilisée dans la version pour Windows, alors il est impossible d'y entreprend les des démarches à son sujet.

Manuel de l'utilisateur toc

Puisque la traduction du programme vers le français, et eventuellement vers d'autres langues, ne sera entreprise que lorsque le developement actif du programme sera plus ou moins terminée, on doit composer avec la configuration en anglais actuellement.

Menu principal toc

menu contextuel

La plupart du temps, le service lazmacropad fonctionne en arrière plan. Pour modifier le comportement du service, on active le menu contextuel en cliquant avec le bouton droit de la souris sur son icône dans la barre d'état. L'icône est monochrome si la connexion avec le clavier macro n'est pas en établie. L'icône est polychrome quand la connexion avec le clavier est en place. Malheureusement, il se peut que l'icône soit mal affichée. Le bureau Mate de Linux Mint indique un problème d'affichage avec une icône représentant un panneau d'interdiction.

Le menu donne accès à quatre fenêtres qui peuvent être affichées indépendamment.

Quand un choix dans le menu est coché, c'est que la fenêtre correspondante est visible, mais elle peut être cachée sous d'autres fenêtres. On ferme une fenêtre visible en activant son bouton de fermeture ou en cliquant sur le nom de la fenêtre dans le menu contextuel de lazmacropad. On peut rammener à l'avant-plan toutes les fenêtres visibles en cliquant sur le choix Montrer les fenêtres (Show Windows.

La fenêtre À propos... (About...) affiche la version du programme et des liens vers le référentiel du projet et vers ce billet. Il faut fermer cette fenêtre explicitement pour l'éliminer de l'avant plan.

Le dernier choix Quitter (Close) arrête lazmacropad.

Le menu sera fermé sans compléter d'opérations si le bouton gauche de la souris est activé en cliquant à l'extérieur du menu.

Key Layout (disposition des touches) toc

disposition des touches Cette fenêtre est affichée au bas et complètement à la droite de l'écran principal. Quand visible, elle est toujours en avant plan. La fenêtre peut être déplacée, mais sa nouvelle position sera perdue au prochain redémarrage du service.

La fenêtre est une représentation graphique du clavier macro.Il s'agit d'un aide-mémoire, car la macro associée à une touche sera affichée si l'on place la souris au-dessus d'elle. Depuis la version 0.6.4, il est devenu possible de coller une macro en cliquant sur le bouton virtuel de la fenêtre montrant la disposition des touches. Son implémentation bancale, le fait qu'elle ne fonctionne pas dans Windows et n'a même pas été testée avec les bibliothèques d'interfaces graphiques autre que GTK2 sont des raisons pour qu'elle soit éliminée à l'avenir. Cependant elle permet de tester lazmacropad dans Linux sans compiler le programme.

Macro Definitions (définitions des macros) toc

La définition et la gestion des macros se fait dans cette fenêtre.

Fenêtre de défintion et gestion des macros

Le nom du fichier contenant les definitions de macros est affiché en haut de la fenêtre. Le nom complet est affiché dans la notification conseil qui surgit quand le curseur de la souris survole le nom pendant quelques seconde. Si un * est visible avant le nom, c'est qu'une des définitions a été modifiées. Le bouton à la droite du nom affiche un menu pour la gestion des fichiers. Les opérations suivantes sont possibles depuis ce menu.

Comme on peut voir les macros sont affichées dans la colonne du centre et que la colonne de droite affiche le raccourci clavier pour coller le contenu du presse-papiers après que la macro y est été copiée. Il y a cinq choix.

Par défaut la commande personnalisée est Maj+Ctrl+V, mais on peut la modifier comme expliqué précédemment. Si aucune (none) est sélectionnée, alors le contenu du presse-papiers n'est pas coller. Le dernier choix identifie une macro constituée d'une séquence d'évènenements de clavier. Puisque ces macros sont injectées directement dans la pile de traitement du clavier de l'ordinateur, le presse-papiers n'est pas utilisé.

Une macro est sélectionnée en cliquant sur sa définition une seule fois avec le bouton gauche de la souris. Un cadre rouge est dessiné autour de la macro sélectionnée. Si l'on clique avec le bouton droit de la souris quand une macro est sélectionnée, un menu contextuel surgit.

menu contextuel de l'éditeur des macros

La fonction de chaque choix dans ce menu devrait être assez claire. Cependant, voici quelques conseils supplémentaires. Si l'on insère une macro, alors la dernière macro est perdue sans avertissement. La fonction Erase remplace la macro sélectionnée par une macro vide alors que la fonction Delete élimine la macro sélectionnée, déplace toutes la macros suivantes d'une touche vers le haut, et ajoute une macro vide à la fin de la liste. Les fonctions Delete all et Reload all remplacent toutes les macros sans avertissement. De plus puisque Delete all change le nom du fichier, on ne peut pas utiliser Reload all pour renverser l'action.

Puisqu'il y a deux types de macros, il y a deux éditeurs pour les macros.

Éditeur de macros chaînes

L'éditeur pour les macros constituées de chaînes de caractères devant être collées dans le presse-papiers est très simple. On peut toutefois insérer des fins de lignes et des tabulations dans le texte directement. La conversion vers la bonne syntaxe sera faite quand la macro est acceptée. Puisque la touche Tabulation est utilisée pour inséré le caractère dans la macro, on peut utiliser la touche de tabulation en combinaison avec la touche Ctrl pour activé les boutons en bas de la fenêtre.

L'éditeur des macros constituées d'évènements clavier est plus complexe.

Éditeur de macros d'évènement de clavier

Les éléments qui consituent un évènement clavier sont

Il doit y avoir un relâchement de chaque enfoncement d'une touche, sinon le code émit lors de l'enfoncement de la touche sera répété sans cesse. Si l'option relâchement automatique (Auto release event) est activée, la modification (Modfiy), l'insertion (Insert) ou l'addition (Add) d'une enfoncement de touche engendre la correction ou l'ajout d'un relâchement correspondant. Il n'est pas nécessaire qu'un relâchement d'une touche suive immédiatement son enfoncement. Voir la macro 3 dans la section Raison d'être où la chaîne de cinq lettres majuscules HELLO n'exige qu'un seul enfoncement et un seul relâchement de la touche Maj.

Avec les boutons (aussi nommés turboboutons) à gauche de la liste d'événements constituants la macro, on peut déplacer ou effacer un évènement clavier. On peut aussi effacer tous les évènements. Enfin le dernier de ces boutons lance une vérification de la macro. Elle ne vérifie que le nombre d'enfoncements correspond au nombre de relâchement. Puisque ce compte n'est que global sans égard à l'identité des touches, cette vérification n'est que partielle.

Parameters (paramètres) toc

Éditeur des paramètres

Le choix du périphérique en série (Serial device) connecté au clavier macro ainsi que la vitesse de la communication, mesurée en bauds, peuvent être fait dans cette fenêtre. Si l'on veut modifier la vitesse de la connexion il en faire autant dans le croquis Arduino du micrcontrolleur du clavier. On peut aussi interrompre la connexion ou la rétablir depuis cette fenêtre. En principe l'apparence de l'icône reflête l'état de la connexion, mais comme expliqué auparavent ce n'est pas toujours le cas. Quand l'état de la connexion bascule deux fois trop rapidement, il est presque assuré que l'icône sera déphasé dans mon système.

On peut fixer la priorité des messages affichés dans le journal (Log Level). Le niveau devrait être information ou erreurs seulement presque toujours, le niveau deboggage étant utile lorsqu'on teste des modifications à la source du programme. La taille du journal (Log Size) specified le nombre maximum de messages qui sont visible dans le journal. Quand cette limite est atteinte, les plus vieux messages sont effacés.

Normallement, on ajuste les nombres de colonnes et de rangés de boutons qu'une fois, à la première utilisation du logiciel. Je suggère d'afficher la disposition des touches pour voir comment lazmacropad prend en charge des deux valeurs. En outre, le nombre de colonne et de rangés n'a aucun impact tant que le bouton d'initialisation (Set) n'est pas activé. Le bouton de réinitialisation (Reset) renverse l'initialisation antérieures.

Les changements apportés aux paramètres prennent effet immédiatement. Toutefois, ces changements seront perdu si la configuration n'est pas sauvegarder en appuyant sur le bouton Save Configuration. Quand on quitte lazmacropad un rappel demandant si il faut sauvegarder tout changement apporté à la configuration avant de quitter l'application.

Tant qu'une configuration modifiée n'a pas été sauvegardée, on peut revenir à celle qui était enregistrée et chargée au lancement du programme en appuyant sur le bouton restaurer (Restore Configuration).

Log Window (journal) toc

C'est le journal du programme. Selon le niveau de priorité, on peut voir tous les messages, ce qui peut être utile lorsqu'on cherche la source des bogues, les messages d'information et d'erreurs seulement ou les messages d'erreur uniquement.

Manuel de références toc

Le programme est simple et ce manuel de référence ne contient que trois rubriques.

Syntaxe des macros toc

Les macros sont des chaînes de caractères (UTF-8), mais 3 séquences d'échappement sont définies :

Il est donc possible de créer des macros qui s'étendent sur plus d'une ligne et d'y inclure des caractères de tabulation. L'éditeur multiligne des macros chaînes prend en charge la conversion des fins de lignes, tabulations et barres obliques inversées. L'éditeur imbriqué des macros chaînes ne gère pas les caractères spéciaux et il faudra saisir la bonne séquence d'échappement à leur place.

Commandes pour coller depuis le presse-papiers toc

Il y a deux mécanismes de copier-coller dans Linux.

  1. le presse-papiers où le raccourci clavier Ctlr+C copie explicitement le texte sélectionné (ou les images ou autres données) dans une mémoire tampon et où Ctrl+V colle le contenu du tampon au niveau du curseur
  2. la sélection primaire qui est tout texte sélectionné avec la souris. Ce texte n'est pas copié dans le presse-papiers. Cette sélection est collée au niveau du curseur avec un clic du bouton central de la souris ou avec la combinaison de touches Maj+Ins.

À l'instar des applications Geany, VSCodium (et probablement VS Code), GNote, LibreOffice Writer et l'éditeur de l'EDI Lazarus, lazmacropad copie toute macro de caractères dans la sélection primaire en plus de la copier dans le presse-papiers. Il est donc possible d'insérer les macros lors la saisie dans le terminal en choisissant le bon raccourci de clavier. L'émulateur de terminal GNOME et ses fourches dont le terminal MATE ne prennent pas en charge les combinaisons de touches Ctrl+C et Ctrl+V, ce qui est logique puisque Ctrl+C est utilisé pour annuler un programme en cours d'exécution. En revanche, il est possible de coller la sélection primaire dans le terminal avec Maj+Ins ou Ctrl+Maj+V.

Si une macro se termine avec la séquence '\n' et que la combinaison Maj+Ins est utilisée pour l'opération collage alors la macro sera traitée comme commande si elle est insérée à l'invite d'un terminal. Un programme pourrait être lancé ou un script pourrait être exécuté en activant une seule touche. Cependant, il faut faire attention quand on lance des programmes, car certains, tels que l'IDE Arduino, peuvent s'accaparer le port série utilisé par le clavier macro et, par conséquent, lazmacropad se fige.

Restrictions dans Windows toc

La version Windows de l'unité Serial ne possède pas une variable d'état de connexion série. Par conséquent, il n'y aura pas de message de journal concernant une connexion perdue lors de l'exécution sous Windows. De même, l'icône dans la barre de tâches ne changera pas pour indiquer l'état de la connexion série.

Avec un clavier physique on peut coller le contenu du presse papier avec les raccourcis clavier Ctrl+V et Maj+Ins. Or choisir ce dernier dans lazmacropad ne fonctionne pas.

Avec la version 0.6.4, il est devenu possible de coller une macro en cliquant sur le bouton virtuel de la fenêtre montrant la disposition des touches. Cette fonctionnalité ne fonctionne pas dans Windows et a été testée dans Linux seulement qu'avec GTK 2. En plus, la méthode pour arriver à ce résultat n'est pas très solide et résulte dans un clignotement déconcertant de la fenêtre. Pour ces raisons, elle pourrait être éliminée à l'avenir.

Références toc

Les informations ne manquent pas sur toutes sortes de claviers macro plus ou moins sophistiqués. La vidéo de Brian Lough, The Simplest DIY Macro Keypad with Arduino, et son référentiel correspondant sur GitHub arduino-switcheroonie se distingue par sa simplicité, mais ce projet est basé sur un Arduino Pro Micro. Le référentiel GitHub de Cristian Bastidas (crixodia) arduino-nano-macro-keypad a montré comment obtenir quelque chose de très similaire avec un simple Nano et en utilisant un script Python sur le bureau. Ce dernier projet est clairement le modèle de lazmacropad.

Dustin Watts propose une version bien plus avancée où le clavier est remplacé par un écran tactile : FreeTouchDeck (voir aussi les vidéos sur la chaîne YouTube de l'auteur). C'est une solution évidente au problème qu'essaie de contourner la fenêtre de disposition du clavier dans lazmacropad. De même Electnoobs vient tout juste de présenter une vidéo sur le même sujet, Amazing Stream Deck - Homemade With Touchscreen, Arduino + RGB basé sur un écran différent.