Posicionamiento con ventanas

¡Hola a todos!
Tengo un Arduino Leonardo que interactúa con un codificador rotatorio.
¿Hay alguna manera de que Arduino sepa en qué ventana se encuentra y ejecute un comando determinado en función de esto?
Por ejemplo, si se encuentra en Chrome, que envíe la combinación de teclas Ctrl + Tab al girar a la derecha, para ir navegando entre pestañas.

Este es mi código:
C:
#include <HID-Project.h>


// Rotary Encoder Inputs

#define inputCLK 1

#define inputDT 2

#define inputSW 3


int currentStateCLK;

int previousStateCLK;

int mode = 1;

int maxModes = 3;


void setup() {

  // Set encoder pins as inputs

  pinMode (inputCLK,INPUT);

  pinMode (inputDT,INPUT);

  pinMode(inputSW, INPUT_PULLUP);


  // Setup Serial Monitor

  Serial.begin (9600);

  Consumer.begin();

  Keyboard.begin();


  // Read the initial state of inputCLK

  // Assign to previousStateCLK variable

  previousStateCLK = digitalRead(inputCLK);

}


void loop() {

  // Read the current state of inputCLK

  currentStateCLK = digitalRead(inputCLK);


  // If the previous and the current state of the inputCLK are different then a pulse has occured

  if (currentStateCLK != previousStateCLK){

    // If the inputDT state is different than the inputCLK state then

    // the encoder is rotating counterclockwise

    if (digitalRead(inputDT) != currentStateCLK) {

      rotateRight();

    } else {

      rotateLeft();

    }

  }

  // Update previousStateCLK with the current state

  previousStateCLK = currentStateCLK;

 

  if(!digitalRead(inputSW)){

    changeMode();

    delay(300);

    }

}


void changeMode(){

  mode = (mode % maxModes)+ 1;

  }



void rotateRight() {

  switch(mode){

    case 1:

    //Ctrl + Tab

    Keyboard.press(KEY_LEFT_CTRL);

    Keyboard.press(KEY_TAB);

    Keyboard.releaseAll();

    break;

    case 2:

    //Desplazarse entre pestañas de IntelliJ/Webstorm

    Keyboard.press(KEY_LEFT_ALT);

    Keyboard.press(KEY_RIGHT_ARROW);

    Keyboard.releaseAll();

    break;

    case 3:

    //Desplazarse en YT

    Keyboard.write(KEY_RIGHT_ARROW);

    break;

    }

}


void rotateLeft() {

  switch(mode){

    case 1:

    //Ctrl + SHIFT + Tab

    Keyboard.press(KEY_LEFT_CTRL);

    Keyboard.press(KEY_LEFT_SHIFT);

    Keyboard.press(KEY_TAB);

    Keyboard.releaseAll();

    break;

    case 2:

    //Desplazarse entre pestañas de IntelliJ/Webstorm

    Keyboard.press(KEY_LEFT_ALT);

    Keyboard.press(KEY_LEFT_ARROW);

    Keyboard.releaseAll();

    break;

    case 3:

    //Desplazarse en YT

    Keyboard.write(KEY_LEFT_ARROW);

    break;

}

}

    }

}
 
El Arduino NO interactua con el sistema operativo, no tiene la capacidad.
Para eso, deberas crear un programa para PC que identifique la ventana al frente y la envie al Arduino.
Ya con el mismo programa, es que interactua con lo que quieras, y luego lo comandas con el Arduino u otra placa de desarrollo
 
Atrás
Arriba