diff --git a/START.lnk b/DISCORD.lnk similarity index 100% rename from START.lnk rename to DISCORD.lnk diff --git a/colors.py b/colors.py new file mode 100644 index 0000000..b7c2222 --- /dev/null +++ b/colors.py @@ -0,0 +1,18 @@ +import keyboard +import time +import serial.tools.list_ports as list_ports +import pygetwindow as gw +import pyautogui + +while True: + if keyboard.is_pressed('m'): + x, y = pyautogui.position() + time.sleep(1) + color = pyautogui.screenshot().getpixel((x, y)) + print(f"Coordinates: ({x}, {y}), Color: {color}") + if keyboard.is_pressed('d'): + x2, y2 = pyautogui.position() + time.sleep(1) + color2 = pyautogui.screenshot().getpixel((x2, y2)) + print(f"Coordinates: ({x2}, {y2}), Color: {color2}") + time.sleep(0.1) \ No newline at end of file diff --git a/deafen_screenshot.png b/deafen_screenshot.png new file mode 100644 index 0000000..93af050 Binary files /dev/null and b/deafen_screenshot.png differ diff --git a/main.py b/main.py index 67963ba..68eeab7 100644 --- a/main.py +++ b/main.py @@ -2,6 +2,11 @@ import serial import time import keyboard import serial.tools.list_ports as list_ports +import pygetwindow as gw +import pyautogui +import mss +import numpy as np + def get_serial_port(): ports = list(list_ports.comports()) @@ -14,6 +19,43 @@ def get_serial_port(): choice = int(input("Select a port by number: ")) return ports[choice].device +x = -1772 +y = 1059 +x2 = -1745 +y2 = 1064 +width = 1 +height = 1 +expected_r = 242 +expected_g = 63 +expected_b = 67 + +def get_discord_status(): + with mss.mss() as sct: + # Define the region where the mute and deafen icons are located + mute_region = {"top": y, "left": x, "width": width, "height": height} + deafen_region = {"top": y2, "left": x2, "width": width, "height": height} + + # Capture the screen region + mute_screenshot = sct.grab(mute_region) + deafen_screenshot = sct.grab(deafen_region) + + # Convert the screenshots to numpy arrays + mute_image = np.array(mute_screenshot) + deafen_image = np.array(deafen_screenshot) + + # Save the screenshots to files + mss.tools.to_png(mute_screenshot.rgb, mute_screenshot.size, output="mute_screenshot.png") + mss.tools.to_png(deafen_screenshot.rgb, deafen_screenshot.size, output="deafen_screenshot.png") + + # Check the pixel color at (0, 0) + mute_status = (mute_image[0, 0, 2] == expected_r and + mute_image[0, 0, 1] == expected_g and + mute_image[0, 0, 0] == expected_b) + deafen_status = (deafen_image[0, 0, 2] == expected_r and + deafen_image[0, 0, 1] == expected_g and + deafen_image[0, 0, 0] == expected_b) + return mute_status, deafen_status + def main(): port = get_serial_port() if not port: @@ -24,6 +66,10 @@ def main(): time.sleep(2) # Wait for the connection to initialize print("Listening for commands...") + last_mute_status, last_deafen_status = get_discord_status() + print(f"Mute: {last_mute_status}, Deafen: {last_deafen_status}") + ser.write(f"Mute: {last_mute_status}, Deafen: {last_deafen_status}\n".encode('utf-8')) + while True: try: if ser.in_waiting > 0: @@ -34,9 +80,18 @@ def main(): keyboard.send('ctrl+shift+f16') elif line == "deafen": keyboard.send('ctrl+shift+f15') + elif line == "status": + mute_status, deafen_status = get_discord_status() + ser.write(f"Mute: {mute_status}, Deafen: {deafen_status}\n".encode('utf-8')) else: print(f"Unknown command: {line}") + current_mute_status, current_deafen_status = get_discord_status() + if current_mute_status != last_mute_status or current_deafen_status != last_deafen_status: + ser.write(f"Mute: {current_mute_status}, Deafen: {current_deafen_status}\n".encode('utf-8')) + print(f"Mute: {current_mute_status}, Deafen: {current_deafen_status}") + last_mute_status, last_deafen_status = current_mute_status, current_deafen_status + time.sleep(0.1) except KeyboardInterrupt: print("Exiting program.") diff --git a/main/main.ino b/main/main.ino index e10fc57..d8da66d 100644 --- a/main/main.ino +++ b/main/main.ino @@ -1,7 +1,12 @@ +#define MUTE_PIN 18 +#define DEAFEN_PIN 19 + void setup() { - pinMode(16, INPUT_PULLUP); // D16 for "mute" button + pinMode(16, INPUT_PULLUP); // D16 for "mute" button pinMode(17, INPUT_PULLUP); // D17 for "deafen" button + pinMode(MUTE_PIN, OUTPUT); + pinMode(DEAFEN_PIN, OUTPUT); Serial.begin(115200); } @@ -18,4 +23,29 @@ void loop() Serial.println("deafen"); delay(200); // Debounce delay } + + if (Serial.available() > 0) + { + String input = Serial.readStringUntil('\n'); + if (input == "Mute: True, Deafen: False") + { + digitalWrite(MUTE_PIN, HIGH); + digitalWrite(DEAFEN_PIN, LOW); + } + else if (input == "Mute: True, Deafen: True") + { + digitalWrite(MUTE_PIN, HIGH); + digitalWrite(DEAFEN_PIN, HIGH); + } + else if (input == "Mute: False, Deafen: False") + { + digitalWrite(MUTE_PIN, LOW); + digitalWrite(DEAFEN_PIN, LOW); + } + else if (input == "Mute: False, Deafen: True") + { + digitalWrite(MUTE_PIN, LOW); + digitalWrite(DEAFEN_PIN, HIGH); + } + } } diff --git a/mute_screenshot.png b/mute_screenshot.png new file mode 100644 index 0000000..27b738e Binary files /dev/null and b/mute_screenshot.png differ