Dodany skrot ctrl + alt + r
This commit is contained in:
41
voskpl.py
41
voskpl.py
@@ -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()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user