Macro commandes usb pour PC, comment régler le volume?

Bonjour,
Je tente de créer de petits boitiers de commande en usb pour lancer des "Macros" sous windows10.
Des commandes simples, pour lancer des applications, les fermer et ainsi éviter l'utilisation du clavier (école maternelle).
Pour les commandes, j'utilise de gros boutons style "arcade" et un arduino pro micro. Tout fonctionne (même si mon code est simpliste et répétitif) avec une bibliothèque Keyboard.h.

Je coince sur une fonction essentielle : Le réglage du volume. Comment attribuer une commande VOLUME+ et VOLUME- sur 2 boutons? Il faudrait une combinaison FN + F7 ou FN + F8. Mais je ne trouve aucune commande Keyboard.press pour la touche FN
Une idée?
Merci d'avance.
Mon code

[code]
#include <Keyboard.h>



void setup() {
  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);
  pinMode(4, INPUT_PULLUP);
  pinMode(5, INPUT_PULLUP);
  pinMode(6, INPUT_PULLUP);
  pinMode(7, INPUT_PULLUP);
  Keyboard.begin();
}

void loop() {
  // lettres au hasard pour le moment.
  // je les remplacerai plus tard par des combinaisons.

  if (digitalRead(2) == LOW) {
    Keyboard.press('a');
    Keyboard.releaseAll();
  }
  if (digitalRead(3) == LOW) {
    Keyboard.press('z');
    Keyboard.releaseAll();
  }
  if (digitalRead(4) == LOW) {
    Keyboard.press('e');
    Keyboard.releaseAll();
  }
  if (digitalRead(5) == LOW) {
    Keyboard.press('q');
    Keyboard.releaseAll();
  }
  if (digitalRead(6) == LOW) {
    Keyboard.press('s');
    Keyboard.releaseAll();
  }
  if (digitalRead(7) == LOW) {
    Keyboard.press('d');
    Keyboard.releaseAll();
  }
  delay(100);
}

[/code]

Bonsoir,
Regarde cette librairie

La doc se trouve dans le wiki

Bonjour, as tu essayé ce qui est indiqué dans la documentation de la librairie Keyboard?

Tu peut appeler plusieurs fois la fonction 'press' avec les touches appuyées simultanément.

Oui, c'est avec des combinaisons que je crée mes raccourcis. Mais la touche FN n'est pas répertoriée dans Keyboard.h

Merci !!!!!!!!!!!!
Ca fonctionne !
J'ai juste un message "using default ASCII..." mais tout tourne.
Voyez-vous des erreurs ? Des modifications utiles ?

#include <HID-Project.h>
#include <HID-Settings.h>


void setup() {
  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);
  pinMode(4, INPUT_PULLUP);
  pinMode(5, INPUT_PULLUP);
  pinMode(6, INPUT_PULLUP);
  pinMode(7, INPUT_PULLUP);
  Consumer.begin();

}

void loop() {


  if (digitalRead(4) == LOW) {
    Consumer.write(MEDIA_VOLUME_UP);
  }  if (digitalRead(5) == LOW) {
    Consumer.write(MEDIA_VOLUME_DOWN);
  }  if (digitalRead(2) == LOW) {
    Keyboard.write('a');
  }  if (digitalRead(3) == LOW) {
    Keyboard.write('z');
  } if (digitalRead(6) == LOW) {
    Keyboard.write('q');
  } if (digitalRead(7) == LOW) {
    Keyboard.press(KEY_RIGHT_SHIFT);
    Keyboard.press('s');
    Keyboard.releaseAll();
  }
  delay(100);
}

Désolé, j'ai lu trop vite!
Je crois que la touche Fn, n'existe pas réellement, il faudrait que tu arrive à intercepter les touches envoyés par un clavier.

essaye toujours les code 0x80 et 0x81, on ne sait jamais :slight_smile:

Ca fonctionne avec la librairie HID Project.
Juste un message lors du téléversement :
#pragma message: Using default ASCII layout for keyboard modules

Ce message est juste une information parce qu'on peut définir d'autres types de claviers. Si tu regardes dans le répertoire où est installée la librairie tu verras que tu as le choix entre 14 configurations de clavier différentes.

Oui mais comment en sélectionner un seul ? le "ImprovedKeylayoutsBE" dans mon cas.
En supprimant les autres ?

C'est expliqué dans le Wiki

Avec le LAYOUT ?
Je l'utilise mal certainement...

[code]
#include <HID-Project.h>
#include <HID-Settings.h>
#define HID_CUSTOM_LAYOUT
#define LAYOUT_FRENCH

void setup() {
  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);
  pinMode(4, INPUT_PULLUP);
  pinMode(5, INPUT_PULLUP);
  pinMode(6, INPUT_PULLUP);
  pinMode(7, INPUT_PULLUP);
  Consumer.begin();

}

void loop() {


  if (digitalRead(5) == LOW) {
    Consumer.write(MEDIA_VOLUME_UP);
  }  if (digitalRead(4) == LOW) {
    Consumer.write(MEDIA_VOLUME_DOWN);
  }  if (digitalRead(2) == LOW) {
    Keyboard.write('a');
  }  if (digitalRead(3) == LOW) {
    Keyboard.write('z');
  } if (digitalRead(6) == LOW) {
    Keyboard.write('q');
  } if (digitalRead(7) == LOW) {
    Keyboard.press(KEY_RIGHT_SHIFT);
    Keyboard.press('s');
    Keyboard.releaseAll();
  }
  delay(100);
}
[/code]

Je confirme.
Dans le Wiki il est indiqué d'ajouter

AVANT d'inclure la lib HID
Donc ça devrait se présenter comme ceci

#define HID_CUSTOM_LAYOUT
#define LAYOUT_FRENCH
#include <HID-Project.h>
#include <HID-Settings.h>

Ah oui !
Merci.
Pas logique de définir le LAYOUT avant d'inclure la lib, mais bon, ça marche !!!!!!!!!
Encore merci !

Je vais me lancer sur la même réalisation en version "pédales"

Il faut définir le layout en amont parce que la librairie teste si il est déjà défini.

  • s'il n'y a pas de déclaration alors un layout est défini par défaut
  • sinon le layout que tu as proposé est appliqué

Ah ok .
Merci encore.
100% fonctionnel. J'ai ajouté une petit modulateur pour un effet "chenillard" sur les led des boutons. J'aurais pu le faire avec l'arduino je pense mais il me restait de bons vieux composants (555 - 4017)

Envoyé: samedi 20 août 2022 à 21:49

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.