Mit diesem kleinem Script könnt ihr Systemweit Push2Talk aktivieren. Auch für Apps, die kein Push2Talk anbieten.
Das Script greift auf Systemebene auf das Input Device zu und mutet es so lang die angegebene Taste nicht GEDRÜCKT GEHALTEN wird.
Push2Talk ist, denke ich, jedem geläufig. Du HÄLST eine Taste GEDRÜCKT und kannst, SOLANGE reden bis du sie LOSLÄSST.
Lets go. Das ganz soll ohne venv für den ganzen User installiert werden.
pip3 install evdev==1.7.1 pulsectl==24.12.0 pynput==1.7.7 python-xlib==0.33 six==1.17.0 -U
Kann sein, das es Kompatibilitätsfehler wirft, die kann man beheben, es sollte aber trotzdem laufen.
Nun erstellen wir eine Datei, die wir jedes Mal starten, wenn wir Push2Talk aktiviert haben wollen (Update zum Installieren als Service folgt vielleicht)
import time from pynput import keyboard import pulsectl # Konfiguriere die gewünschte Taste für Push-to-Talk PUSH_TO_TALK_KEY = keyboard.Key.ctrl_l # Beispiel: Linke Strg Taste # Initialisiere PulseAudio-Controller pulse = pulsectl.Pulse('push-to-talk') def get_microphone_source(): """ Holt die aktuelle Mikrofonquelle (default source). """ default_source_name = pulse.server_info().default_source_name source = pulse.get_source_by_name(default_source_name) return source def set_mute(mute: bool): """ Setzt den Mute-Status des Mikrofons. :param mute: True zum Stummschalten, False zum Entstummen """ source = get_microphone_source() if source: pulse.source_mute(source.index, mute) status = "stummgeschaltet" if mute else "entstummt" print(f"Mikrofon {status}.") else: print("Kein Mikrofon gefunden.") class PushToTalk: def __init__(self, key): self.key = key self.is_muted = True # Start im stummen Zustand set_mute(self.is_muted) def on_press(self, key): if key == self.key and self.is_muted: self.is_muted = False set_mute(self.is_muted) def on_release(self, key): if key == self.key and not self.is_muted: self.is_muted = True set_mute(self.is_muted) def run(self): print(f"Push-to-Talk aktiviert. Halte '{self.key}' gedrückt, um zu sprechen.") print("Drücke 'Esc', um das Programm zu beenden.") with keyboard.Listener(on_press=self.on_press, on_release=self.on_release) as listener: listener.join() def main(): push_to_talk = PushToTalk(PUSH_TO_TALK_KEY) try: push_to_talk.run() except KeyboardInterrupt: print("\nProgramm beendet.") finally: # Stelle sicher, dass das Mikrofon stummgeschaltet ist, wenn das Programm beendet wird if not push_to_talk.is_muted: set_mute(True) pulse.close() if __name__ == "__main__": main()
Die Taste wird hier definiert:
PUSH_TO_TALK_KEY = keyboard.Key.ctrl_l
In diesem Fall ist es die Linke Strg Taste eine Liste der anderen Funktionstasten ist unten aufgeführt.
Dann starten wir das ganze.
python3.11 p2t.py Mikrofon stummgeschaltet. Push-to-Talk aktiviert. Halte 'Key.ctrl' gedrückt, um zu sprechen. Drücke 'Esc', um das Programm zu beenden. Mikrofon entstummt. Mikrofon stummgeschaltet. Mikrofon entstummt. Mikrofon stummgeschaltet. Mikrofon entstummt. Mikrofon stummgeschaltet. Mikrofon entstummt. Mikrofon stummgeschaltet. Mikrofon entstummt. Mikrofon stummgeschaltet.
EUER MIKROFON IST NUR AUF 0 GESTELLT VON DER LAUTSTÄRKE SOLLTET IHR PROBLEME HABEN NACH DEM SCRIPT EINFACH DIE LAUTSTÄRKE DES MIKROFONS WIEDER AUF DIE URSPRÜNGLICHE STELLEN UND ES SOLLTE KEINE WEITEREN KOMPLIKATIONEN GEBEN
Ihr wollt "Alt" als Push2Talk Taste dann guckt in der Liste und benutzt den Variablen namen (vor dem =)
alt = KeyCode.from_vk(0)
#: A generic Alt key. This is a modifier. alt = KeyCode.from_vk(0) #: The left Alt key. This is a modifier. alt_l = KeyCode.from_vk(0) #: The right Alt key. This is a modifier. alt_r = KeyCode.from_vk(0) #: The AltGr key. This is a modifier. alt_gr = KeyCode.from_vk(0) #: The Backspace key. backspace = KeyCode.from_vk(0) #: The CapsLock key. caps_lock = KeyCode.from_vk(0) #: A generic command button. On *PC* platforms, this corresponds to the #: Super key or Windows key, and on *Mac* it corresponds to the Command #: key. This may be a modifier. cmd = KeyCode.from_vk(0) #: The left command button. On *PC* platforms, this corresponds to the #: Super key or Windows key, and on *Mac* it corresponds to the Command #: key. This may be a modifier. cmd_l = KeyCode.from_vk(0) #: The right command button. On *PC* platforms, this corresponds to the #: Super key or Windows key, and on *Mac* it corresponds to the Command #: key. This may be a modifier. cmd_r = KeyCode.from_vk(0) #: A generic Ctrl key. This is a modifier. ctrl = KeyCode.from_vk(0) #: The left Ctrl key. This is a modifier. ctrl_l = KeyCode.from_vk(0) #: The right Ctrl key. This is a modifier. ctrl_r = KeyCode.from_vk(0) #: The Delete key. delete = KeyCode.from_vk(0) #: A down arrow key. down = KeyCode.from_vk(0) #: The End key. end = KeyCode.from_vk(0) #: The Enter or Return key. enter = KeyCode.from_vk(0) #: The Esc key. esc = KeyCode.from_vk(0) #: The function keys. F1 to F20 are defined. f1 = KeyCode.from_vk(0) f2 = KeyCode.from_vk(0) f3 = KeyCode.from_vk(0) f4 = KeyCode.from_vk(0) f5 = KeyCode.from_vk(0) f6 = KeyCode.from_vk(0) f7 = KeyCode.from_vk(0) f8 = KeyCode.from_vk(0) f9 = KeyCode.from_vk(0) f10 = KeyCode.from_vk(0) f11 = KeyCode.from_vk(0) f12 = KeyCode.from_vk(0) f13 = KeyCode.from_vk(0) f14 = KeyCode.from_vk(0) f15 = KeyCode.from_vk(0) f16 = KeyCode.from_vk(0) f17 = KeyCode.from_vk(0) f18 = KeyCode.from_vk(0) f19 = KeyCode.from_vk(0) f20 = KeyCode.from_vk(0) #: The Home key. home = KeyCode.from_vk(0) #: A left arrow key. left = KeyCode.from_vk(0) #: The PageDown key. page_down = KeyCode.from_vk(0) #: The PageUp key. page_up = KeyCode.from_vk(0) #: A right arrow key. right = KeyCode.from_vk(0) #: A generic Shift key. This is a modifier. shift = KeyCode.from_vk(0) #: The left Shift key. This is a modifier. shift_l = KeyCode.from_vk(0) #: The right Shift key. This is a modifier. shift_r = KeyCode.from_vk(0) #: The Space key. space = KeyCode.from_vk(0) #: The Tab key. tab = KeyCode.from_vk(0) #: An up arrow key. up = KeyCode.from_vk(0) #: The play/pause toggle. media_play_pause = KeyCode.from_vk(0) #: The volume mute button. media_volume_mute = KeyCode.from_vk(0) #: The volume down button. media_volume_down = KeyCode.from_vk(0) #: The volume up button. media_volume_up = KeyCode.from_vk(0) #: The previous track button. media_previous = KeyCode.from_vk(0) #: The next track button. media_next = KeyCode.from_vk(0) #: The Insert key. This may be undefined for some platforms. insert = KeyCode.from_vk(0) #: The Menu key. This may be undefined for some platforms. menu = KeyCode.from_vk(0) #: The NumLock key. This may be undefined for some platforms. num_lock = KeyCode.from_vk(0) #: The Pause/Break key. This may be undefined for some platforms. pause = KeyCode.from_vk(0) #: The PrintScreen key. This may be undefined for some platforms. print_screen = KeyCode.from_vk(0) #: The ScrollLock key. This may be undefined for some platforms. scroll_lock = KeyCode.from_vk(0)
Bearbeitet von grub2, Gestern, 19:23.