Last active
July 31, 2023 17:48
-
-
Save ctgPi/6e39650d7f64dce5f8822fb34de9ca67 to your computer and use it in GitHub Desktop.
StreamDeckPedal patch
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Command: amixer -D pulse sset Capture 100% | |
Release: amixer -D pulse sset Capture 0% |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- display_grid.py | |
+++ .local/lib/python3.8/site-packages/streamdeck_ui/display/display_grid.py | |
@@ -41,7 +41,10 @@ | |
self.streamdeck = streamdeck | |
# Reference to the actual device, used to update icons | |
- self.size = streamdeck.key_image_format()["size"] | |
+ if streamdeck.is_visual(): | |
+ self.size = streamdeck.key_image_format()["size"] | |
+ else: | |
+ self.size = (72, 72) | |
self.serial_number = streamdeck.get_serial_number() | |
self.pages: Dict[int, Dict[int, Pipeline]] = {} | |
@@ -158,7 +161,8 @@ | |
# FIXME: This will be unbounded, old frames will need to be evicted | |
if hashcode not in frame_cache: | |
- image = PILHelper.to_native_format(self.streamdeck, image) | |
+ if self.streamdeck.is_visual(): | |
+ image = PILHelper.to_native_format(self.streamdeck, image) | |
frame_cache[hashcode] = image | |
else: | |
image = frame_cache[hashcode] | |
--- api.py | |
+++ .local/lib/python3.8/site-packages/streamdeck_ui/api.py | |
@@ -373,6 +373,16 @@ | |
"""Returns the command set for the specified button""" | |
return self._button_state(deck_id, page, button).get("command", "") | |
+ def set_button_command_release(self, deck_id: str, page: int, button: int, command_release: str) -> None: | |
+ """Sets the command_release associated with the button""" | |
+ if self.get_button_command_release(deck_id, page, button) != command_release: | |
+ self._button_state(deck_id, page, button)["command_release"] = command_release | |
+ self._save_state() | |
+ | |
+ def get_button_command_release(self, deck_id: str, page: int, button: int) -> str: | |
+ """Returns the command_release set for the specified button""" | |
+ return self._button_state(deck_id, page, button).get("command_release", "") | |
+ | |
def set_button_switch_page(self, deck_id: str, page: int, button: int, switch_page: int) -> None: | |
"""Sets the page switch associated with the button""" | |
if self.get_button_switch_page(deck_id, page, button) != switch_page: | |
--- gui.py | |
+++ .local/lib/python3.8/site-packages/streamdeck_ui/gui.py | |
@@ -219,6 +219,16 @@ | |
api.set_page(deck_id, switch_page - 1) | |
if _deck_id(ui) == deck_id: | |
ui.pages.setCurrentIndex(switch_page - 1) | |
+ else: | |
+ kb = Controller() | |
+ page = api.get_page(deck_id) | |
+ | |
+ command_release = api.get_button_command_release(deck_id, page, key) | |
+ if command_release: | |
+ try: | |
+ Popen(shlex.split(command_release)) | |
+ except Exception as error: | |
+ print(f"The command '{command_release}' failed: {error}") | |
def _deck_id(ui) -> str: | |
@@ -253,6 +263,12 @@ | |
api.set_button_command(deck_id, _page(ui), selected_button.index, command) | |
+def update_button_command_release(ui, command_release: str) -> None: | |
+ if selected_button: | |
+ deck_id = _deck_id(ui) | |
+ api.set_button_command_release(deck_id, _page(ui), selected_button.index, command_release) | |
+ | |
+ | |
def update_button_keys(ui, keys: str) -> None: | |
if selected_button: | |
deck_id = _deck_id(ui) | |
@@ -393,6 +409,7 @@ | |
enable_button_configuration(ui, True) | |
ui.text.setText(api.get_button_text(deck_id, _page(ui), button_id)) | |
ui.command.setText(api.get_button_command(deck_id, _page(ui), button_id)) | |
+ ui.command_release.setText(api.get_button_command_release(deck_id, _page(ui), button_id)) | |
ui.keys.setCurrentText(api.get_button_keys(deck_id, _page(ui), button_id)) | |
ui.write.setPlainText(api.get_button_write(deck_id, _page(ui), button_id)) | |
ui.change_brightness.setValue(api.get_button_change_brightness(deck_id, _page(ui), button_id)) | |
@@ -406,6 +423,7 @@ | |
def enable_button_configuration(ui, enabled: bool): | |
ui.text.setEnabled(enabled) | |
ui.command.setEnabled(enabled) | |
+ ui.command_release.setEnabled(enabled) | |
ui.keys.setEnabled(enabled) | |
ui.write.setEnabled(enabled) | |
ui.change_brightness.setEnabled(enabled) | |
@@ -421,6 +439,7 @@ | |
""" | |
ui.text.clear() | |
ui.command.clear() | |
+ ui.command_release.clear() | |
ui.keys.clearEditText() | |
ui.write.clear() | |
ui.change_brightness.setValue(0) | |
@@ -713,6 +732,7 @@ | |
ui = main_window.ui | |
ui.text.textChanged.connect(partial(queue_update_button_text, ui)) | |
ui.command.textChanged.connect(partial(update_button_command, ui)) | |
+ ui.command_release.textChanged.connect(partial(update_button_command_release, ui)) | |
ui.keys.currentTextChanged.connect(partial(update_button_keys, ui)) | |
ui.write.textChanged.connect(partial(update_button_write, ui)) | |
ui.change_brightness.valueChanged.connect(partial(update_change_brightness, ui)) | |
--- ui_main.py | |
+++ .local/lib/python3.8/site-packages/streamdeck_ui/ui_main.py | |
@@ -208,10 +208,20 @@ | |
self.formLayout.setWidget(2, QFormLayout.FieldRole, self.command) | |
+ self.label_4 = QLabel(self.groupBox) | |
+ self.label_4.setObjectName(u"label_4") | |
+ | |
+ self.formLayout.setWidget(3, QFormLayout.LabelRole, self.label_4) | |
+ | |
+ self.command_release = QLineEdit(self.groupBox) | |
+ self.command.setObjectName(u"command_release") | |
+ | |
+ self.formLayout.setWidget(3, QFormLayout.FieldRole, self.command_release) | |
+ | |
self.label_5 = QLabel(self.groupBox) | |
self.label_5.setObjectName(u"label_5") | |
- self.formLayout.setWidget(3, QFormLayout.LabelRole, self.label_5) | |
+ self.formLayout.setWidget(4, QFormLayout.LabelRole, self.label_5) | |
self.keys = QComboBox(self.groupBox) | |
self.keys.addItem(u"") | |
@@ -233,12 +243,12 @@ | |
self.keys.setObjectName(u"keys") | |
self.keys.setEditable(True) | |
- self.formLayout.setWidget(3, QFormLayout.FieldRole, self.keys) | |
+ self.formLayout.setWidget(4, QFormLayout.FieldRole, self.keys) | |
self.label_8 = QLabel(self.groupBox) | |
self.label_8.setObjectName(u"label_8") | |
- self.formLayout.setWidget(4, QFormLayout.LabelRole, self.label_8) | |
+ self.formLayout.setWidget(5, QFormLayout.LabelRole, self.label_8) | |
self.switch_page = QSpinBox(self.groupBox) | |
self.switch_page.setObjectName(u"switch_page") | |
@@ -246,28 +256,28 @@ | |
self.switch_page.setMaximum(10) | |
self.switch_page.setValue(0) | |
- self.formLayout.setWidget(4, QFormLayout.FieldRole, self.switch_page) | |
+ self.formLayout.setWidget(5, QFormLayout.FieldRole, self.switch_page) | |
self.label_7 = QLabel(self.groupBox) | |
self.label_7.setObjectName(u"label_7") | |
- self.formLayout.setWidget(5, QFormLayout.LabelRole, self.label_7) | |
+ self.formLayout.setWidget(6, QFormLayout.LabelRole, self.label_7) | |
self.change_brightness = QSpinBox(self.groupBox) | |
self.change_brightness.setObjectName(u"change_brightness") | |
self.change_brightness.setMinimum(-99) | |
- self.formLayout.setWidget(5, QFormLayout.FieldRole, self.change_brightness) | |
+ self.formLayout.setWidget(6, QFormLayout.FieldRole, self.change_brightness) | |
self.label_6 = QLabel(self.groupBox) | |
self.label_6.setObjectName(u"label_6") | |
- self.formLayout.setWidget(6, QFormLayout.LabelRole, self.label_6) | |
+ self.formLayout.setWidget(7, QFormLayout.LabelRole, self.label_6) | |
self.write = QPlainTextEdit(self.groupBox) | |
self.write.setObjectName(u"write") | |
- self.formLayout.setWidget(6, QFormLayout.FieldRole, self.write) | |
+ self.formLayout.setWidget(7, QFormLayout.FieldRole, self.write) | |
self.horizontalLayout_3 = QHBoxLayout() | |
self.horizontalLayout_3.setObjectName(u"horizontalLayout_3") | |
@@ -373,6 +383,7 @@ | |
self.removeButton.setText("") | |
self.label_2.setText(QCoreApplication.translate("MainWindow", u"Label:", None)) | |
self.label_3.setText(QCoreApplication.translate("MainWindow", u"Command:", None)) | |
+ self.label_4.setText(QCoreApplication.translate("MainWindow", u"Release:", None)) | |
self.label_5.setText(QCoreApplication.translate("MainWindow", u"Press Keys:", None)) | |
self.label_8.setText(QCoreApplication.translate("MainWindow", u"Switch Page:", None)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment