Dodany skrot ctrl + alt + r

This commit is contained in:
2025-12-14 15:29:38 +01:00
parent d056fd0fb5
commit 1c455316fb
2 changed files with 242 additions and 18 deletions

View File

@@ -9,6 +9,7 @@ import sys
import tkinter as tk
from threading import Thread
from pathlib import Path
from pynput import keyboard # Biblioteka do globalnych skrótów
SCRIPT_DIR = Path(__file__).parent
# Ścieżka do modelu
@@ -18,6 +19,7 @@ recognizer = KaldiRecognizer(model, 16000)
listening = False # Flaga stanu nasłuchiwania
emacs_mode = False # Flaga trybu Emacs
root = None # Zmienna globalna dla okna głównego
# Funkcja obsługi danych audio
def callback(indata, frames, time, status):
@@ -79,10 +81,12 @@ def toggle_emacs_mode():
# Aktualizacja stanu przycisków
def update_button_state():
if listening:
toggle_button.config(text="Stop", bg="red", fg="white")
else:
toggle_button.config(text="Start", bg="lightgrey", fg="black")
# Używamy root.after, aby zapewnić bezpieczeństwo wątków przy zmianie GUI z innego wątku (hotkey)
if root:
if listening:
root.after(0, lambda: toggle_button.config(text="Stop", bg="red", fg="white"))
else:
root.after(0, lambda: toggle_button.config(text="Start", bg="lightgrey", fg="black"))
def update_emacs_button_state():
if emacs_mode:
@@ -90,14 +94,28 @@ def update_emacs_button_state():
else:
emacs_button.config(text="Tryb: Standard", bg="lightgrey", fg="black")
# Funkcja obsługi skrótu klawiszowego
# Funkcja obsługi skrótu klawiszowego (lokalnego - F1)
def handle_shortcut(event):
if event.keysym == 'F1': # F1 jako skrót klawiszowy
if event.keysym == 'F1':
toggle_listening()
# Funkcja obsługi skrótu globalnego (Ctrl+Alt+R)
def start_global_hotkeys():
def on_activate():
print("Skrót globalny wykryty!")
# Wywołujemy toggle w głównym wątku, żeby nie zawiesić GUI
if root:
root.after(0, toggle_listening)
# Definicja skrótu
hotkey = keyboard.GlobalHotKeys({
'<ctrl>+<alt>+r': on_activate
})
hotkey.start()
# Tworzenie GUI
def create_gui():
global toggle_button, emacs_button
global toggle_button, emacs_button, root
root = tk.Tk()
root.title("Vosk Rozpoznawanie Mowy")
@@ -112,15 +130,14 @@ def create_gui():
exit_button = tk.Button(root, text="Wyjście", command=root.destroy, width=15)
exit_button.pack(pady=10)
# Dodanie skrótu klawiszowego
# Dodanie skrótu klawiszowego lokalnego
root.bind("<F1>", handle_shortcut)
# Uruchomienie nasłuchiwania globalnych skrótów
start_global_hotkeys()
root.mainloop()
# Uruchomienie GUI
if __name__ == "__main__":
create_gui()