[ Пред. ] [ Содержание ] [ След. ]

Elgato “Stream Deck”

[ @elgato @stream_deck @python @console ]

 


Клавиатурки с кнопками-экранамим “Stream Deck” от Elgato представлены разными моделями:


Они идеальны для стримеров и для редактирования видео/аудио, когда что-то надо делать часто и быстро, одним движением (нажатием). На кнопки назначаются или клавиатурные шорткаты, или ссылки на многошаговые скрипты, можно добавить/редактировать иконки и названия кнопок. В целом эта штучка притягивает и затягивает.


Обзор: https://youtu.be/5nNGgcOGmtc


Под виндой это всё работает давно и стабильно, а под линуксами какое-то время было сложно, да и сегодня не блеск. Но работает.


В обычном режиме это всё не нужно, потому что один из выходов USB постоянно занят, возникает тактильное привыкание к месту нажатия кнопки, и в качестве игрушки это устройство дороговато. Иногда эти штуки также выходят из строя и нуждаются в замене.


Например, в KDE есть виджет «Просмотр папки» (Common:KDE settings:Оформление:Настроить тулбар:Виджет «Просмотр папки»), который можно поставить на тулбар. Если заполнить отслеживаемый этим виджетом каталог ярлыками на приложения или скрипты, то (это первый сценарий) вызов разных приложений «из одного места» решён чуть менее, чем полностью. Но “Stream Deck” сильна вторым сценарием — использовать управляющие кнопки при работе внутри работающего приложения: при редактировании видео или аудио (не надо зажимать аккорды кнопок на обычной клавиатуре), а также при live-трансляции экрана в “OBS”. Однако я заметил, что чаще использую “Stream Deck” для первого сценария, а там без него можно обойтись влёгкую.


Установка



Нюансы приложения


В окне приложения можно разобраться быстро, если привык к софту Elgato под виндой, но есть нюансы, которые лучше проговорить.


Техническое имя подключённой клавиатуры отображается в якобы выпадающем меню. Если подключено только одно устройство, то и выпадать там нечему.


Справа от этого выпадающего списка с именем есть незаметная кнопка: там настраивается уровень свечения кнопок и таймер их погашения. Тайминги чуть странные:


Выглядит странно, но всё настраивается в json-конфиг-файле вручную: в самом низу параметр "display_timeout":


Настройка кнопок


Уровней вложенности экранов здесь 10, они называются «Page 1, Page 2» и тд.


Каждая кнопка на каждом экране настраивается по-отдельности. Их можно захватывать курсором и перемещать, но невозможно переместить на другие экраны.


Image: png, jpg, bmp. Добавить, удалить.


Размер файла не ограничен, огромное полотно софтина тупо втиснет в размер кнопки и по-дурацкий подрежет. Лучше делать иконки сразу квадратными, 256х256 или 128х128. Можно и меньше — для стандартной модели Stream Deck (на 15 кнопок — 3x5) изначально рекомендуется сделать иконки размером 72х72 пикселей, и таки да, смотрится здорово. Для проверки я сделал иконку 64х64, и если она стоит рядом с её аналогом на 72х72, то разница будет заметна, но только если о ней знать. Если проверочного аналога рядом не будет, то глаз не раздражает.


Для крупной модели Stream Deck XL (на 32 кнопки — 4x8) рекомендую иконки размером 88х88 пикселей, потому что 72х72 на ней воспринимаются как уменьшённые. Всё, что крупнее, будет налезать на края кнопок, а всё, что меньше, будет выглядеть раздражающе миниатюрно. При этом в милимметрах размеры кнопок у обеих моделей идентичны, и казалось бы...


Есть и плюсы в том, чтобы поставить на 32-хкнопочную иконки 72х72 — это как раз тот размер, до которого иконка будет ужата, если на кнопку добавить текст... А если иконка однозначно распознаваема, то текст на кнопке не обязателен, бо текст поджимает иконку снизу, уменьшая её на процентов 15.


Системные иконки можно найти в /usr/share/icons/, есть смысл скопировать их куда-нибудь на постоянное место жительства специально для stream deck.


Что делать, если благородный дон уже отресайзил ВСЕ иконки на уровень 72, а после переключения на крупняк понял, что нужно 88? Да пофигу, идём в тот же Gwenview и ресайзим каждую иконку на 88х88. После её установки в Stream Deck разница не будет заметна.


Можно это дело и автоматизировать, мы же в линуксе (но не факт, что будет всё без шероховатостей):


sudo apt-get install imagemagick


Включить мозг, препарировать копии, а не оригиналы. Ресайз одной картинки:


convert *.png -resize 88x88 *.png


Ресайз всех png-картинок в папке:


for file in *.png; do convert $file -resize 88x88 $file; done


Если хочется получить переделанные файлы отдельно, то можно подтюнить переименование:


for file in *.png; do convert $file -resize 88x88 resized-$file; done


Text: надпись на кнопке. Не больше семи символов, чтобы помещалось.


В винде её можно ещё назначить цвет, размер и положение на кнопке, тут — цвет и шрифт не настраиваются. Можно только нажатием на кнопку рядом с полем Label передвигать надпись с нижнего края кнопки к верхнему.


Еще заметно, что на Stream Deck XL в линуксах этих ваших буквы воспринимаются как мелкие, читаемость хуже, даже если сделать ТЕКСТ капсом.


Command: команды из консоли, любые, как односложные, так и составные в одну строку. От управления звуком до…


Press Keys: названия клавиш вписывать прописными с некоторыми исключениями, вроде «alt+F4».


В приложениях это работает ок, с глобальными хоткеями — нет. Но это же линукс, если что-то можно сделать из консоли, то всё гуд, просто всякие глобальные хоткеи надо вызывать через xdotool — this tool lets you simulate keyboard input and mouse activity, move and resize windows, etc. It does this using X11’s XTEST extension and other Xlib functions.


Пример команды: /usr/bin/xdotool key --delay 60 ctrl+shift+F1. Надо поэкспериментировать и [[https://pynput.readthedocs.io/en/latest/_modules/pynput/keyboard/_base.html#Key|разобраться позже]> с возможными сочетаниями клавиш.


Вписывать адреса сайтов как шорткаты напрямую нельзя, мы же в линуксе, надо так:


firefox https://www.youtube.com/watch?v=bBNHD0bQymE


Switch Page: переключение между страницами/экранами устройства. По-умолчанию 0, ничего не происходит.


Если указать цифру от 1 до 10 (количество определяется автоматически, по количеству кнопок на устройстве), то при нажатии на эту кнопку на клавиатуре Elgato произойдёт переход на соответствующую страницу.


Brightness +/-: рекомендую игнорировать.


Если указать здесь какое-то минусовое значение, то при нажатии на кнопку вся подсветка на устройстве гаснет (будет момент паники). Если указать какое-то плюсовое, то свечение клавиатурки усиливается соответственно. Мин/макс = 99.


Write text: поле для необязательного комментария.


Кнопки для сохранения изменений нет, всё применяется сразу же после перемещения фокуса из поля ввода.


Как запускать консольные скрипты


Предположим, что я закатал многошаговый скрипт для запуска [[ftp]> в исполнямый sh-файл.


А ещё у меня есть разные профили для запуска konsole.


Используется общий принцип запуска чего угодно в Linux:


konsole --profile $profileName -e ~/scripts/q_ftp_start.sh


При запуске всего, что работает в консоли надо учесть, что


Если выполнение происходит быстро, окно просто «мелькнёт». Если нужно посмотреть на результат, надо завершать работу скрипта по нажатию клавиши AnyKey.


Шорткаты из-под кнопок


Они применяются только на окна в фокусе, и в этом есть недостаток. Например, запущен OBS. Внутри него смена сцена происходит по нажатию Ctrl+Shift+F1. Если фокус на OBS — оно работает. Если нет — нет.


Решается через wmctrl — консольная утилита для взаимодействия с X Window Manager. Она была установлена на первых этапах, но если что:



Например, это взаимодействие с obs:


Command: wmctrl -xa obs
Press Keys: ctrl+shift+F1


«wmctrl -lx» выводит список всех открытых окон (-l) и название класса окна (-х), чтобы проще воспринимать их по названию программы-родителя.


Покажи мне окно Krusader…


wmctrl -a krusader.krusader -x


Покажи мне окно Firefox…


wmctrl -a Navigator.Firefox -x


Покажи мне определённое окно из десятка открытых окон Firefox… Это уже сложнее, но можно назначить на кнопку просто урл, и есть же изучить альтернативный способ управления окнами в Linux.


Управление шорткатами через xdtool


В поле 'Press Keys' уже прописано несколько сочетаний клавиш, которые должны работать на системном уровне (alt+f4, ctrl+w, media_volume_up и др). Этого хватит в основе, но дальше надо выкручиваться. Например, у меня уровень звука управляется через ’Alt Shift Up/Down'. Выполнить это сочетание из кнопки Elgato напрямую невозможно, но для этого есть консольная утилита xdotool (надо сперва установить стандартным способом: sudo apt-get install xdotool ).


Пример использования:


/usr/bin/xdotool key --delay 0 alt+shift+Up


Импорт/экспорт настроек


Всё сохраняется в json-файл, название и местоположение которого каждый выбирает самостоятельно.


Рекомендуется экспортировать в этот файл настройки после каждого изменения.


С импортом ранее сохранённых файлов может быть не всё гладко. В таком случае его надо открывать и разбираться с расположением элементов. Linux же.