Go Down

Topic: Arduino Micro Hotkeys Tastenkombination (Read 128 times) previous topic - next topic

as2008schl

Nov 22, 2020, 12:47 am Last Edit: Nov 22, 2020, 12:48 am by as2008schl
Hallo zusammen, ich wollte euch mal fragen wie ich eine Tastenkombination bei meinen Variablen hinzufügen kann. zum Beispiel SHIFT LEFT_ALT und dann F13 zum Beispiel.

Ich hoffe ihr könnt mir helfen
Code: [Select]
// ---------------------------------
// Keys für MAC
#define BUTTON_KEY1 KEY_F1
#define BUTTON_KEY2 KEY_F2
#define BUTTON_KEY3 KEY_F3
#define BUTTON_KEY4 KEY_F4
#define BUTTON_KEY5 KEY_F5
#define BUTTON_KEY6 KEY_F6
#define BUTTON_KEY7 KEY_F7
#define BUTTON_KEY8 KEY_F8
#define BUTTON_KEY9 KEY_F9
#define BUTTON_KEY10 KEY_F10
#define BUTTON_KEY11 KEY_F18
#define BUTTON_KEY12 KEY_F16

// Keys für PC
//#define BUTTON_KEY1 KEY_F13
//#define BUTTON_KEY2 KEY_F14
//#define BUTTON_KEY3 KEY_F15
//#define BUTTON_KEY4 KEY_F16
//#define BUTTON_KEY5 KEY_F17
//#define BUTTON_KEY6 KEY_F18
//#define BUTTON_KEY7 KEY_F19
//#define BUTTON_KEY8 KEY_F20
//#define BUTTON_KEY9 KEY_F21
//#define BUTTON_KEY10 KEY_F22
//#define BUTTON_KEY11 KEY_F23
//#define BUTTON_KEY12 KEY_F24

 
// Pin definitions
#define BUTTON_PIN1 2
#define BUTTON_PIN2 3
#define BUTTON_PIN3 4
#define BUTTON_PIN4 5
#define BUTTON_PIN5 6
#define BUTTON_PIN6 7
#define BUTTON_PIN7 8
#define BUTTON_PIN8 9
#define BUTTON_PIN9 10
#define BUTTON_PIN10 16
#define BUTTON_PIN11 14
#define BUTTON_PIN12 15
// ---------------------------------
 
#include "Keyboard.h"
 
class button {
  public:
  const char key;
  const uint8_t pin;
 
  button(uint8_t k, uint8_t p) : key(k), pin(p){}
 
  void press(boolean state){
    if(state == pressed || (millis() - lastPressed  <= debounceTime)){
      return;
    }
 
    lastPressed = millis();
 
    state ? Keyboard.press(key) : Keyboard.release(key);   
    pressed = state;
  }
 
  void update(){
    press(!digitalRead(pin));
  }
 
  private:
  const long debounceTime = 30;
  unsigned long lastPressed;
  boolean pressed = 0;
} ;
 
// Keys orga
button buttons[] = {
  {BUTTON_KEY1, BUTTON_PIN1},
  {BUTTON_KEY2, BUTTON_PIN2},
  {BUTTON_KEY3, BUTTON_PIN3},
  {BUTTON_KEY4, BUTTON_PIN4},
  {BUTTON_KEY5, BUTTON_PIN5},
  {BUTTON_KEY6, BUTTON_PIN6},
  {BUTTON_KEY7, BUTTON_PIN7},
  {BUTTON_KEY8, BUTTON_PIN8},
  {BUTTON_KEY9, BUTTON_PIN9},
  {BUTTON_KEY10, BUTTON_PIN10},
  {BUTTON_KEY11, BUTTON_PIN11},
  {BUTTON_KEY12, BUTTON_PIN12},
};
 
const uint8_t NumButtons = sizeof(buttons) / sizeof(button);
const uint8_t ledPin = 17;
 
void setup() {
  // Safety check. Ground pin #1 (RX) to cancel keyboard inputs.
  pinMode(1, INPUT_PULLUP);
  if(!digitalRead(1)){
    failsafe();
  }
 
 
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, HIGH);
  TXLED0;
 
  for(int i = 0; i < NumButtons; i++){
    pinMode(buttons[i].pin, INPUT_PULLUP);
  }
}
 
void loop() {
  for(int i = 0; i < NumButtons; i++){
    buttons[i].update();
  }
}
 
void failsafe(){
  for(;;){}
}



my_xy_projekt

Variablen hinzufügen kann.
Im Prinzip ist bis jetzt bei PIN 16 (A2) Schluss. Du hättest noch A3-A5 bzw. 17-19 - wenn da nichts weiter dran hängt. Also neue Zeilen einfügen?

Zusätzlich ein define für die Taste und ein define für den PIN dazu - dann in der Keys orga die Zuweisung.

Code: [Select]

// Keys für MAC
#define BUTTON_KEY10 KEY_F10
#define BUTTON_KEY11 KEY_F18
#define BUTTON_KEY12 KEY_F16
// HIER BUTTON_KEY13 [Key_f...]

// Pin definitions
#define BUTTON_PIN10 16
#define BUTTON_PIN11 14
#define BUTTON_PIN12 15
// HIER BUTTON_PIN13 [17] - wäre A3
// ---------------------------------

// Keys orga
button buttons[] = {
  {BUTTON_KEY1, BUTTON_PIN1},
  {BUTTON_KEY2, BUTTON_PIN2},
  {BUTTON_KEY3, BUTTON_PIN3},
  {BUTTON_KEY4, BUTTON_PIN4},
  {BUTTON_KEY5, BUTTON_PIN5},
  {BUTTON_KEY6, BUTTON_PIN6},
  {BUTTON_KEY7, BUTTON_PIN7},
  {BUTTON_KEY8, BUTTON_PIN8},
  {BUTTON_KEY9, BUTTON_PIN9},
  {BUTTON_KEY10, BUTTON_PIN10},
  {BUTTON_KEY11, BUTTON_PIN11},
  {BUTTON_KEY12, BUTTON_PIN12},
// HIER   {BUTTON_KEY13, BUTTON_PIN13},
};
 

as2008schl

Danke dir für deine Antwort :)

Ich glaube ich hab mich etwas doof ausgedrückt , sorry:-/ ich möchte die F13-F24 ersetzen mit einer Tastenkombination wie zum beispiel LEFT_ALT + SHIFT + F13
Nur ich kann ja nicht einfach schreiben

#define BUTTON_KEY1 KEY_LEFT_ALT + KEY_SHIFT + KEY_F13

Ich würde sie gern als in die variablen schon verknüpfen das es flexibel bleibt

my_xy_projekt

Ich glaube ich hab mich etwas doof ausgedrückt , sorry:-/ ich möchte die F13-F24 ersetzen mit einer Tastenkombination wie zum beispiel LEFT_ALT + SHIFT + F13

Ich würde sie gern als in die variablen schon verknüpfen das es flexibel bleibt
Suchst Du das?
For multiple key presses use Keyboard.press()
https://www.arduino.cc/en/Reference/KeyboardModifiers

as2008schl

Ja das schon, nur möchte ich das in die variable an oben im kopf einfach reinschreiben können

my_xy_projekt

Ja das schon, nur möchte ich das in die variable an oben im kopf einfach reinschreiben können
Du musst die Codes doch einzeln auswerten und dann je nach Zusammensetzung weiter verarbeiten.
So denke ich braucht es eine zusätzliche Funktion, die die (Scan-)codes summiert und dann den Wert zurück gibt, sowie die Anlage der entsprechenden Konstante.

Du wirst nicht umhinkommen, dich mit dem Inhalt der keyboard.h https://github.com/arduino-libraries/Keyboard/blob/master/src/Keyboard.h zu beschäftigen, wenn Du das fest verdrahten willst.

Go Up