Table des matières:

Clavier programmable : 5 étapes (avec images)
Clavier programmable : 5 étapes (avec images)

Vidéo: Clavier programmable : 5 étapes (avec images)

Vidéo: Clavier programmable : 5 étapes (avec images)
Vidéo: J'apprends à taper rapidement sur un clavier [100 Mots Par Minute en 1 semaine] 2024, Juillet
Anonim
Clavier programmable
Clavier programmable
Clavier programmable
Clavier programmable

Dans ce projet, je montrerai comment créer un clavier programmable relativement simple et peu coûteux pour mapper vos raccourcis clavier, applications et plus encore les plus utilisés.

Ce clavier est détecté comme clavier dans tous les principaux systèmes d'exploitation, aucun pilote supplémentaire n'est nécessaire.

Fournitures

  • Codeur rotatif.
  • Beaucoup de boutons poussoirs (selon vos besoins).
  • Arduino Pro Micro, Arduino Leonardo ou toute autre carte de développement avec MCU Atmega32U4.
  • Fil, soudure, fer à souder, etc.
  • (Facultatif) Une base lourde pour empêcher le clavier de glisser, j'utilise un ancien disque dur 3,5"

Étape 1: Circuit électrique

Circuit électrique
Circuit électrique

J'ai choisi d'utiliser la carte de développement Arduino Pro Micro avec le MCU Atmega32U4 qui dispose de 18 broches numériques utilisables.

Les broches pour connecter les boutons poussoirs et l'encodeur rotatif ont été sélectionnées sans ordre particulier, mais certaines choses sont à noter:

  1. Toutes les broches capables de lecture numérique ont des pull-ups internes qui permettent d'atténuer les résistances de pull-down externes. Bien sûr, le code doit être mis à jour en conséquence, car il s'attend à ce que l'état de la broche passe de bas à haut lorsque les boutons-poussoirs sont enfoncés.
  2. Dans l'exemple de la bibliothèque encoder.h, il est noté que les meilleures performances de l'encodeur sont atteintes lorsque les deux broches sont connectées aux broches capables d'interrompre le MCU. La plupart des broches analogiques d'Atmega32U4 n'ont pas de capacité d'interruption.
  3. Les valeurs exactes de la résistance pull-down n'ont pas beaucoup d'importance, tout ce qui va de 1 kΩ à 100 kΩ fonctionnera bien. Des valeurs de résistance plus élevées permettent une dissipation de puissance plus faible, mais entraînent une réponse plus lente des broches aux changements de tension. Choisissez simplement les résistances de valeur que vous avez le plus.
  4. Les codeurs mécaniques ne sont pas les choses les plus fiables en raison de l'usure des contacts et des rebonds. C'est pourquoi une bonne solution anti-rebond est nécessaire. Les valeurs de condensateur et les temps de retard que j'ai choisis dans le code ne vous fourniront probablement pas les meilleurs résultats. Un peu d'expérimentation est donc nécessaire. Ou passez à quelque chose comme un encodeur optique, mais son prix est nettement plus élevé.

Étape 2: Assemblage

Assemblée
Assemblée
Assemblée
Assemblée
Assemblée
Assemblée
Assemblée
Assemblée

Je voulais rendre le clavier aussi propre que possible, j'ai donc soudé tous les composants à l'arrière de la carte prototype. J'ai pensé que le clavier serait plus ergonomique s'il était utilisé surélevé à petit angle. C'est pourquoi j'ai soudé Arduino Pro Micro sur une carte séparée et connecté toutes les broches numériques avec du fil aux boutons-poussoirs. Il est plus pratique de connecter le câble USB de cette façon.

J'ai trouvé un vieux disque dur de 3,5 à utiliser comme base pour le clavier, il est assez lourd et empêche la forme de la carte de glisser sur le bureau lors du fonctionnement (les patins antidérapants aident aussi). Il a également des trous de vis de 3 mm dans lesquels j'ai vissé des entretoises en laiton et fixe la planche à un léger angle.

Étape 3: Programmation

Le code est écrit avec Arduino IDE. Vous devrez installer 2 bibliothèques:

  • Encodeur par Paul Stoffregen
  • Clavier par Arduino

Pour compiler pour Atmega32U4, vous devez également installer le fichier de carte Arduino Pro Micro, Sparkfun propose un excellent tutoriel pour le faire.

Une chose à noter à l'avance est de faire attention à ne pas laisser "touches enfoncées" dans votre code. Cela m'est arrivé et MCU spammait constamment une combinaison de touches. La seule façon dont je sais comment résoudre ce problème est de graver à nouveau le chargeur de démarrage sur MCU. Si vous finissez comme moi, vous pouvez suivre ce guide pour graver le chargeur de démarrage, vous aurez besoin d'une autre carte arduino à utiliser en tant que programmeur.

Dans la boucle principale, le MCU lit d'abord l'état de chaque bouton-poussoir, si un changement d'état de BAS à HAUT est détecté, la fonction keyboard_shortcut(i) est exécutée. La variable i est un identifiant du bouton enfoncé, le nombre total de boutons-poussoirs est défini par ALL_BUTTONS (dans mon cas 15). Lorsqu'il est exécuté, keyboard_shortcut(i) envoie CTRL+SHIFT puis une lettre qui est mappée sur l'identifiant du bouton: 1->A, 2->B, 3->C etc. Certaines combinaisons comme CTRL+SHIFT+N sont omises car elles sont déjà utilisé dans Windows10 par défaut (dans ce cas pour créer un nouveau dossier). Voici la liste de tous les raccourcis Windows par défaut. Après un court délai, le MCU envoie un signal pour relâcher toutes les touches et la fonction revient à la boucle principale.

Une fois tous les boutons vérifiés, le MCU vérifie si la position de l'encodeur rotatif a changé et si c'est le cas, keyboard_shortcut(i) est exécuté avec un identifiant unique.

Appuyez sur le bouton de l'encodeur pour inverser la variable booléenne encoderButtonFlag. Lorsque l'encodeur est tourné, un raccourci différent est envoyé au PC, en fonction du sens de rotation et de la valeur encoderButtonFlag.

Si debugFlag est défini sur 1, les messages de débogage sont envoyés via UART au moniteur série.

Étape 4: Configuration des raccourcis

Configuration des raccourcis
Configuration des raccourcis
Configuration des raccourcis
Configuration des raccourcis

Ce que chaque raccourci fait est aussi pour vous, nous avons tous des préférences différentes. Je vais fournir les raccourcis que j'ai configurés pour moi-même à titre d'exemple. J'utilise Linux Mint 19.3 avec le gestionnaire de bureau xfce4, donc mes exemples impliquent principalement des scripts bash, mais je montrerai également quelques exemples de base pour Windows10.

Dans la première image, vous pouvez voir quels scripts j'ai mappés à quels raccourcis. Cela se fait à partir du menu des paramètres xfce, le processus est simple. Vous pouvez trouver ces scripts dans mon référentiel GitHub

Les 6 boutons-poussoirs plus petits en bas permettent de démarrer des applications telles qu'un navigateur Web ou un gestionnaire de fichiers. Certaines de ces applications sont appelées à partir du script start_only_one_app.sh, qui obtient tous les noms d'applications démarrées et recherche l'application que vous souhaitez démarrer. Si la fenêtre d'application existe déjà, elle obtient le focus, sinon une nouvelle instance d'une application est démarrée.

Autres scripts:

  • 2nd_display_control.sh - active/désactive le deuxième moniteur.
  • moon_lamp.sh - allume/éteint ma lampe lunaire.
  • pc_load.sh - crée une bulle de notification avec l'utilisation et les températures actuelles du processeur et du processeur graphique.
  • shutdown.sh - initialise l'arrêt du PC avec un délai de 1 minute et crée une bulle de notification dans laquelle le temps restant est affiché.
  • spec_vpn.sh - se connecte à un serveur OpenVPN spécifique ou si la connexion existe déjà, se déconnecte du serveur.
  • short_controll.sh - prend la commande (plus, moins, tabulation, fermeture) comme argument, détecte quelle fenêtre est maintenant focalisée et si une application spécifique est trouvée active, exécute l'action de contrôle. Par exemple, pour ouvrir un nouvel onglet dans l'éditeur de texte sublime, le raccourci par défaut est "CTRL+N" et dans le terminal xfce - "CTRL+T", donc ce script permet d'ouvrir un nouvel onglet dans sublime et terminal avec le même bouton poussoir.

La première fonction de l'encodeur rotatif est de contrôler le volume, la deuxième fonction est de contrôler le zoom de la fenêtre active via le raccourci_controll.sh.

Pour le système d'exploitation Windows, vous pouvez mapper des raccourcis vers des applications via la fenêtre des propriétés du programme, comme indiqué dans la deuxième image. Pour toute autre chose, vous voudrez utiliser AutoHotkey. C'est un langage de script d'automatisation pour Windows.

Quelques exemples simples de syntaxe AHK:

;Contrôle du volume

^+t::Envoyer {Volume_Up}

revenir

^+v:: Envoyer {Volume_Down}

revenir

;Fermer la fenêtre active

^+h::WinGetTitle, Titre, A

Message Post, 0x112, 0xF060,,, %Titre%

revenir

;Éteindre le PC

^+b::Exécuter l'arrêt /s

Étape 5: Améliorations

Améliorations
Améliorations

Quelques améliorations possibles:

  • Boutons poussoirs de meilleure qualité.
  • Le prototype de PCB fléchit beaucoup lorsque les boutons sont enfoncés.
  • Éclairage RVB pour changer de couleur en fonction de la fonction sur laquelle l'encodeur rotatif est réglé.
  • Plus de boutons (utiliser IO expander IC).
  • Meilleur encodeur rotatif (ou meilleure solution anti-rebond).

Conseillé: