69 lines
1.7 KiB
Python
69 lines
1.7 KiB
Python
from talon import actions
|
|
from talon import Module, actions, imgui, scripting, app
|
|
from talon.microphone import manager
|
|
from talon.lib import cubeb
|
|
from talon import scripting
|
|
|
|
ctx = cubeb.Context()
|
|
mod = Module()
|
|
|
|
|
|
def devices_changed(device_type):
|
|
update_microphone_list()
|
|
|
|
|
|
microphone_device_list = []
|
|
|
|
|
|
def update_microphone_list():
|
|
global microphone_device_list
|
|
microphone_device_list = []
|
|
for device in ctx.inputs():
|
|
if str(device.state) == "DeviceState.ENABLED":
|
|
microphone_device_list.append(device)
|
|
|
|
|
|
@imgui.open()
|
|
def gui(gui: imgui.GUI):
|
|
gui.text("Select a Microphone")
|
|
gui.line()
|
|
for index, item in enumerate(microphone_device_list, 1):
|
|
if gui.button("{}. {}".format(index, item.name)):
|
|
actions.user.microphone_select(index)
|
|
|
|
|
|
@mod.action_class
|
|
class Actions:
|
|
def microphone_selection_toggle():
|
|
""""""
|
|
if gui.showing:
|
|
gui.hide()
|
|
else:
|
|
gui.show()
|
|
|
|
def microphone_select(index: int):
|
|
"""Selects a micropohone"""
|
|
# print(str(index) + " " + str(len(microphone_device_list)))
|
|
if 1 <= index and index <= len(microphone_device_list):
|
|
microphone = microphone_device_list[index - 1].name
|
|
for item in manager.menu.items:
|
|
# print(item.name + " " + microphone)
|
|
if microphone in item.name:
|
|
# manager.menu_click(item)
|
|
actions.speech.set_microphone(item.name)
|
|
app.notify("Activating {}".format(item.name))
|
|
|
|
break
|
|
|
|
gui.hide()
|
|
|
|
|
|
ctx.register("devices_changed", devices_changed)
|
|
|
|
|
|
def on_ready():
|
|
update_microphone_list()
|
|
|
|
|
|
app.register("ready", on_ready)
|
|
|