Je ne me souvenais pas de l'activation / désactivation de l'IME, j'ai donc décidé de me fier à la machine. Obtenez le statut IME en Python et dites à Arduino via une communication série.
Python Utilisez les modules supplémentaires ci-dessous. Veuillez installer avec pip etc.
python.py
from ctypes import *
from time import sleep
import win32gui
import win32con
import win32api
import serial
imm32 = WinDLL("imm32")
while True:
     hWnd1 = win32gui.GetForegroundWindow()
     hWnd2 = imm32.ImmGetDefaultIMEWnd(hWnd1)
     #0x005 ci-dessous est IMC_Indique GET OPEN STATUS.
     IMEStatus = win32api.SendMessage(hWnd2 ,  win32con.WM_IME_CONTROL, 0x005, 0)
     
     #Changez COM7 en fonction du port série auquel se connecter.
     ser = serial.Serial('COM7',9600)
     if IMEStatus == 0:
          ser.write(b"b")
     else:
          ser.write(b"a")
     ser.close()
     sleep(0.05)  #Secondes (=50ms)
Arduino Il le reçoit en série et juge si la LED est allumée ou éteinte.
arduino.ino
const int PinLED = 13;
int responseDelay = 10;  //Millimètres
char input_char;
pinMode(PinLED, OUTPUT);
Serial.begin(9600);
void loop() {
if (Serial.available() >0){
    input_char = Serial.read(); 
    if(input_char == 'a'){
      digitalWrite(PinLED, HIGH); 
    }else{
      digitalWrite(PinLED, LOW);
    }
 delay(responseDelay);
}
        Recommended Posts