Differing return values for os.execute when called directly from Lua or from LuaTeX
But if I run the LuaTeX code with «luatex» I still get the assert error:
lualatex foo.tex This is LuaTeX, Version 1.10.0 (TeX Live 2019/Debian) restricted system commands enabled. (./foo.tex LaTeX2e luaotfload | main : initialization completed in 0.086 seconds (/usr/share/texlive/texmf-dist/tex/latex/base/article.cls Document Class: article 2018/09/03 v1.4i Standard LaTeX document class (/usr/share/texlive/texmf-dist/tex/latex/base/size12.clo)) (/usr/share/texlive/texmf-dist/tex/latex/filecontents/filecontents.sty) LaTeX Warning: Overwriting file `./foo.lua'. LaTeX Warning: Overwriting file `./x.tex'. (./foo.aux)./foo.lua:7: assertion failed! stack traceback: [C]: in function 'assert' ./foo.lua:7: in main chunk [C]: in function 'require' [\directlua]:1: in main chunk. l.19 \directlua
However, if I use «luatex -shell-escape» I don’t get the assert error.
lualatex -shell-escape foo.tex This is LuaTeX, Version 1.10.0 (TeX Live 2019/Debian) system commands enabled. (./foo.tex LaTeX2e luaotfload | main : initialization completed in 0.094 seconds (/usr/share/texlive/texmf-dist/tex/latex/base/article.cls Document Class: article 2018/09/03 v1.4i Standard LaTeX document class (/usr/share/texlive/texmf-dist/tex/latex/base/size12.clo)) (/usr/share/texlive/texmf-dist/tex/latex/filecontents/filecontents.sty) LaTeX Warning: Overwriting file `./foo.lua'. LaTeX Warning: Overwriting file `./x.tex'. (./foo.aux)Latexmk: This is Latexmk, John Collins, 25 October 2018, version: 4.61. Latexmk: All targets (x.dvi) are up-to-date (./foo.aux)) 384 words of node memory still in use: 2 hlist, 1 vlist, 1 rule, 2 glue, 3 kern, 1 glyph, 5 attribute, 44 glue_spec , 5 attribute_list, 2 write nodes avail lists: 2:7,3:1,4:1,5:4,7:1,9:1 warning (pdf backend): no pages of output. Transcript written on foo.log.
I don’t understand the reason for this behavior. If I replace the assert line with
assert(os.execute([[ foobar ]]) == 0)
for example, I see the assert error either way. EDIT: I figured out that the reason is that os.execute returns different values, depending on whether -shell-escape is passed to LuaTeX or not. This is probably documented somewhere, but was surprising to me. So, what’s the reason for that, and where is it documented, if anywhere? For the record, I obtained the values with
x, y, z = os.execute([[ latexmk x.tex ]]) print(string.format("execute return values are %s, %s, %s", x, y, z))
and they appear to be (without -shell-escape )
execute return values are nil, Command execution disabled via shell_escape=’p’, nil
and with -shell-escape
execute return values are 0, nil, nil
The values directly from Lua are
execute return values are true, exit, 0
Звук Lua в фоновом режиме
Для участия в обсуждениях и оформления подписки на новые сообщения форума вам необходимо зарегистрироваться.
Страницы: 1
Cообщений на странице:
Звук Lua в фоновом режиме
Пользователь
Сообщений: 136 Регистрация: 08.05.2020
09.05.2020 11:58:16
Тема звука в фоновом режиме по прежнему актуальна.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Пользователь
Сообщений: 136 Регистрация: 08.05.2020
09.05.2020 13:44:32
Нашел на форуме » start /i /min /b «:
os.execute ('start /i /min /b C:\\VideoLAN\\VLC\\vlc.exe -I dummy --dummy-quiet C:\\windows\\media\\tada.wav');
Но хотелось бы также что бы можно было остановить звук.
То получается могут проигрываться два параллельны звука.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Пользователь
Сообщений: 136 Регистрация: 08.05.2020
09.05.2020 13:46:12
os.execute ( 'start /i /min /b C:\\VideoLAN\\VLC\\vlc.exe -I dummy --dummy-quiet C:\\windows\\media\\tada.wav' );
-- /i Передает начальные установки среды интерпретатора Cmd.exe в новое окно командной строки. -- /min Запускает новое окно командной строки в свернутом виде. -- /b Запускает приложение без открытия нового окна командной строки. Обработка комбинации клавиш CTRL+C не производится, пока приложение не разрешит обработку CTRL+C. Для прерывания приложения следует использовать CTRL+BREAK.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Пользователь
Сообщений: 1359 Регистрация: 21.08.2015
09.05.2020 14:01:40
Вот держите . Положить луа и длл в одну папку с вашим скриптом, включить файл qPlaySound через require, вызывать функцию qPlaySound(filename). Пример
require "qPlaySound" local run = true function main() while run do sleep(3000) qPlaySound("c:\\windows\\media\\tada.wav") end end function OnStop() run = false end
Пользователь
Сообщений: 136 Регистрация: 08.05.2020
09.05.2020 14:15:58
Пример очень хороший, но посмотреть бы что внутри этой dll-библиотеки, т.к. не нашел в сети иинформации по ней.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Пользователь
Сообщений: 1359 Регистрация: 21.08.2015
09.05.2020 14:24:13
Цитата |
---|
Иван написал: не нашел в сети иинформации по ней. |
И не найдете, я ее только что спешл фор ю слепил. Что внутри можно посмотреть дизасмом, ежли паранойка. Там очень мало чего.
Пользователь
Сообщений: 136 Регистрация: 08.05.2020
09.05.2020 14:29:01
Цитата |
---|
Иван написал: не нашел в сети иинформации по ней. |
Можно пожалуйста сюда исходный код выложить.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Пользователь
Сообщений: 136 Регистрация: 08.05.2020
09.05.2020 14:33:43
Цитата |
---|
Anton написал: qPlaySound(«c:\\windows\\media\\tada.wav») |
69: attempt to call a nil value «package.loadlib(getScriptPath() .. «\\qPlaySound.dll», «qload»)();»
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Пользователь
Сообщений: 1359 Регистрация: 21.08.2015
09.05.2020 14:41:55
Версия квика меньше 8.5, полагаю? Собрано под 8.5, с новым луа.
Пользователь
Сообщений: 1359 Регистрация: 21.08.2015
09.05.2020 14:48:50
Пользователь
Сообщений: 1359 Регистрация: 21.08.2015
09.05.2020 14:56:27
Цитата |
---|
Иван написал: исходный код |
Всегда забавляет, когда люди внимательно изучают сорцы на гитхабе, а потом скачивают готовый бинарник с какого-то левого сайта. Почему они считают, что бинарник собран именно из тех сорцев, что им показали, для меня загадка. Впечатляющий прорыв творческой мысли, не правда ли?
static int qPlaySound(lua_State * s)
Пользователь
Сообщений: 136 Регистрация: 08.05.2020
09.05.2020 15:14:19
Да это забавно — согласен.
Речь была не про это — а про то, что бы посмотреть. У меня он так и не запустился.
Единственная библиотека которую я смог запустить для звуков это w32.dll.
Торговый привод на Lua: https://github.com/iv-litovchenko/Quik-Enter-Trade
Пользователь
Сообщений: 1359 Регистрация: 21.08.2015
09.05.2020 15:19:38
Цитата |
---|
Иван написал: У меня он так и не запустился. |
Так а версию квика-то назовите, может у вас вообще седьмая какая-нибудь. Скрипт qPlaySound.lua должен лежать рядом с вашим скриптом и рядом же должна лежать qPlaySound.dll.
Lua как os execute свернуто
Neophyte
Сообщений: 15
Регистрация: 16.10.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 14.162
Возраст: 40
Идёт сканирование окна на цвет.
В зависимости от цвета срабатывает условие и в командную строку шлётся команда. Вспрывающий терминал перекрывает окно
Есть ли техническая возможность (без правки реестра) запускать командную строку в свёрнутом или минимизированном по размерам виде (exec / execandwait / os.execute).
Игры с cmd/start ни к чему не привели. Они срабатывают в уже открытом окне
16.2.2022, 11:14
Elder
Сообщений: 3.471
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 25671
Пользователь №: 16.971
Возраст: 29
--lua
local h = io.popen([[cmd.exe /c start calc.exe]]) -- запустить cmd и отправить команду открыть калькулятор
h:close()
16.2.2022, 11:35
Neophyte
Сообщений: 15
Регистрация: 16.10.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 14.162
Возраст: 40
Цитата(cirus @ 16.2.2022, 11:14)
--lua
io.popen([[cmd.exe /c start calc.exe]]) -- запустить cmd и отправить команду открыть калькулятор
тоже выскакивает окно.
Механика вот такая. И пока единственным способом иметь стабильный счётчик — это расположение окна в нижнем правом углу. Что дико неудобно. Хочу это обойти. На видео видно что счётчик сбоит пропуская когда вылазит черное окно
16.2.2022, 12:13
Elder
Сообщений: 3.471
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 25671
Пользователь №: 16.971
Возраст: 29
--lua
local ffi = require("ffi")
local shell = ffi.load('Shell32.dll')
local SW_HIDE = 0
ffi.cdef[[int ShellExecuteA(int hwnd, const char* lpOperation, const char* lpFile, const char* lpParameters, const char* lpDirectory, int nShowCmd);]]
shell.ShellExecuteA(0, 'open', 'cmd.exe', 'start /c calc.exe', '', SW_HIDE)
16.2.2022, 12:57
Neophyte
Сообщений: 15
Регистрация: 16.10.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 14.162
Возраст: 40
Цитата(cirus @ 16.2.2022, 12:13)
--lua
local ffi = require("ffi")
local shell = ffi.load('Shell32.dll')
local SW_HIDE = 0
ffi.cdef[[int ShellExecuteA(int hwnd, const char* lpOperation, const char* lpFile, const char* lpParameters, const char* lpDirectory, int nShowCmd);]]
shell.ShellExecuteA(0, 'open', 'cmd.exe', 'start /c calc.exe', '', SW_HIDE)
Я так понял вызов shell работает асинхронно. Что рождает новые вопросы.
1. возможно ли получить ответ в переменную выполнение командной строки через shell.ShellExecuteA минуя clipboard
2. ожидать завершения выполнения.
в моём случае запрос выглядит так:
shell.ShellExecuteA(0, ‘open’, ‘cmd.exe’, ‘start /c netsh advfirewall firewall show rule name=RAID | clip’, », SW_HIDE)
s = clipboard ()
Lua как os execute свернуто
Post by Lukas » Thu Sep 16, 2021 8:18 pm
(Edited topic subject and first post to solution)
Download link:
- LK_Render
Does anyone start their command line renders through a lua script from inside Moho?
I’ve made a script so everything is always rendered the same and at the correct location etc. and when I paste the created command in MacOS Terminal or Windows Command Prompt it renders as a background process just fine. So the command seems ok.
But if I let the lua script run it with os.execute() on MacOS it will keep Moho occupied until the render is done, so you can’t work on another file during the rendering. And on Windows it won’t render at all. But if I copy paste the exact same command in Command Prompt it renders fine. (Both on MacOS and Windows manually pasting the command renders in the background, even if Moho is already open)
Is there a way to start a command line render as a background process trough os.execute() in a Lua mohoscript?
[. ] local mohopath local render = moho.document:Path() if FO_Utilities:getOS(moho) == "win" then -- **************** -- *** Windows: *** -- **************** mohopath = "C:/Program Files/Moho/Moho.exe" mohopath = "\""..string.gsub(mohopath, "/", "\\").."\"" render = "\""..string.gsub(render, "/", "\\").."\"" self.output = "\""..string.gsub(self.output, "/", "\\").."\"" else -- ************** -- *** MacOS: *** -- ************** mohopath = "/Applications/Moho.app/Contents/MacOS/Moho" mohopath = string.gsub(mohopath, " ", "\\ ") render = string.gsub(render, " ", "\\ ") self.output = string.gsub(self.output, " ", "\\ ") end [. ] local command = mohopath.." -r "..render.." -o "..self.output.." -f "..self.format.." -start "..self.start.." -end "..self.stop.." -halfsize "..halfsize.." -multithread "..multiThread os.execute(command)
Last edited by Lukas on Fri Sep 15, 2023 12:52 pm, edited 1 time in total.
- @ClubBaboo on YouTube
- clubbaboo.com
- lukaskrepel.nl
- LK_MohoScripts
hayasidist Posts: 3398 Joined: Wed Feb 16, 2011 8:12 pm Location: Kent, England
Re: Start background commandline render from Lua script?
Post by hayasidist » Thu Sep 16, 2021 9:07 pm
This from stackoverflow:
Not tried it, so can’t vouch for it working.
Lukas Posts: 1277 Joined: Fri Apr 09, 2010 9:00 am Location: Netherlands Contact:
Re: Start background commandline render from Lua script?
Post by Lukas » Thu Sep 16, 2021 10:29 pm
hayasidist wrote: ↑ Thu Sep 16, 2021 9:07 pm This from stackoverflow:
Not tried it, so can’t vouch for it working.
os.execute(‘command&’) didn’t work, but a comment at the same page suggested io.popen(«command») and that runs it in the background on MacOS! Will test Windows tomorrow. Thank you, this is really going to help in production!
- @ClubBaboo on YouTube
- clubbaboo.com
- lukaskrepel.nl
- LK_MohoScripts
SimplSam Posts: 931 Joined: Thu Mar 13, 2014 5:09 pm Location: London, UK Contact:
Re: Start background commandline render from Lua script?
Post by SimplSam » Fri Sep 17, 2021 3:13 am
I don’t quite use that workflow — but do use a Stream Deck keyboard to drive batch renders, which is huge time/lifesaver when repeatedly rendering content for given projects.
Another approach is to use a simple queuing system — where the to-be-rendered Moho project details would be saved to an onfile render queue, and then those queue items would get picked up by a batch render processor — which could also be running on another workstation/server.
Moho 14 / 13.5 » Win 11 Pro 64GB » NVIDIA GTX 1080ti 11GB
Moho 14 / 13.5 » Mac mini 2012 8GB » macOS 10.15 Catalina
Tube: SimplSam
Sam
Lukas Posts: 1277 Joined: Fri Apr 09, 2010 9:00 am Location: Netherlands Contact:
Re: Start background commandline render from Lua script?
Post by Lukas » Fri Sep 17, 2021 8:06 am
SimplSam wrote: ↑ Fri Sep 17, 2021 3:13 am I don’t quite use that workflow — but do use a Stream Deck keyboard to drive batch renders, which is huge time/lifesaver when repeatedly rendering content for given projects.
How exactly do you use it with Moho? It looks nice.
SimplSam wrote: ↑ Fri Sep 17, 2021 3:13 am Another approach is to use a simple queuing system — where the to-be-rendered Moho project details would be saved to an onfile render queue, and then those queue items would get picked up by a batch render processor — which could also be running on another workstation/server.
Yeah, we do use a custom render queue system at the studio. Recently there’s more remote working because of covid and freelancers that work from home because they live far away, and they are now also able to sent their shots to the queue which is great. The queue checks if files are synced before it renders and even changes image paths etc if necessary.
But, I’m actually building this local render button because I find it also very useful to just be able to render exactly what I need right now without relying on a server. Especially close to a deadline. So our moho-render-script now asks if you want to render locally or sent it to the queue.
We recently switched from .png sequences to .jpg sequences because its faster and smaller (unless we need the alpha channel of course), but I’m noticing quite ugly jpg artifacts. So I’m considering switching back to png. What format do you guys prefer for image sequences?
- @ClubBaboo on YouTube
- clubbaboo.com
- lukaskrepel.nl
- LK_MohoScripts
Lukas Posts: 1277 Joined: Fri Apr 09, 2010 9:00 am Location: Netherlands Contact:
Re: Start background commandline render from Lua script?
Post by Lukas » Fri Sep 17, 2021 9:40 am
Lukas wrote: ↑ Thu Sep 16, 2021 10:29 pm os.execute(‘command&’) didn’t work, but a comment at the same page suggested io.popen(«command») and that runs it in the background on MacOS! Will test Windows tomorrow.
Hmm, both os.execute(command..»&») and io.popen(command) don’t seem to work on Windows. Even though copy pasting that exact command to the Command Prompt renders it fine.
- @ClubBaboo on YouTube
- clubbaboo.com
- lukaskrepel.nl
- LK_MohoScripts
hayasidist Posts: 3398 Joined: Wed Feb 16, 2011 8:12 pm Location: Kent, England
Re: Start background commandline render from Lua script?
Post by hayasidist » Fri Sep 17, 2021 12:07 pm
I have no idea if you can get powershell to run by using os.execute, but looking at the windows online documentation I found that powershell has an invoke command that is designed to be synchronous: https://docs.microsoft.com/en-us/powers . nt-actions
If that helps in any way .
[edit: the initial post above was wrong: Invoke is sync; start is async. updated]
Last edited by hayasidist on Sat Sep 18, 2021 10:27 am, edited 1 time in total.
SimplSam Posts: 931 Joined: Thu Mar 13, 2014 5:09 pm Location: London, UK Contact:
Re: Start background commandline render from Lua script?
Post by SimplSam » Fri Sep 17, 2021 2:23 pm
After about a million tests the following appears to work (with a tiny blip of a DOS screen popup).
os.execute(' "start "any title" "C:\\Program Files\\Lost Marble\\Moho 13.5\\Moho.exe" -r "w:\\zombies.moho" -f PNG -o "R:\\\\_out\\\\zombies\\\\" " ')
— I have spaced out some of the quotes so you can see them more clearly.
— «any title» can be anything — even empty «», but must be there.
p.s. AE’s LUA Console was an absolute life-saver for this (i.e. Running/Rerunning LUA commands from within the Moho GUI): https://mohoscripts.com/script/ae_lua_console
Moho 14 / 13.5 » Win 11 Pro 64GB » NVIDIA GTX 1080ti 11GB
Moho 14 / 13.5 » Mac mini 2012 8GB » macOS 10.15 Catalina
Tube: SimplSam
Sam
Lukas Posts: 1277 Joined: Fri Apr 09, 2010 9:00 am Location: Netherlands Contact:
Re: Start background commandline render from Lua script?
Post by Lukas » Fri Sep 17, 2021 3:41 pm
SimplSam wrote: ↑ Fri Sep 17, 2021 2:23 pm After about a million tests the following appears to work (with a tiny blip of a DOS screen popup).
os.execute(' "start "any title" "C:\\Program Files\\Lost Marble\\Moho 13.5\\Moho.exe" -r "w:\\zombies.moho" -f PNG -o "R:\\\\_out\\\\zombies\\\\" " ')
— I have spaced out some of the quotes so you can see them more clearly.
— «any title» can be anything — even empty «», but must be there.
p.s. AE’s LUA Console was an absolute life-saver for this (i.e. Running/Rerunning LUA commands from within the Moho GUI): https://mohoscripts.com/script/ae_lua_console
AH! It works! Thanks so much. I need to clean up the script a bit, but it’s rendering on both MacOS and Windows now. I’ll also try to rip out our studio specific code and upload the script if anyone’s interested.
- @ClubBaboo on YouTube
- clubbaboo.com
- lukaskrepel.nl
- LK_MohoScripts
hayasidist Posts: 3398 Joined: Wed Feb 16, 2011 8:12 pm Location: Kent, England
Re: Start background commandline render from Lua script?
Post by hayasidist » Fri Sep 17, 2021 3:48 pm
Lukas wrote: ↑ Fri Sep 17, 2021 3:41 pm . I’ll also try to rip out our studio specific code and upload the script if anyone’s interested.
yes please — just the ability to get something to run asynchronously could be very valuable
hayasidist Posts: 3398 Joined: Wed Feb 16, 2011 8:12 pm Location: Kent, England
Re: Start background commandline render from Lua script?
Post by hayasidist » Fri Sep 17, 2021 3:57 pm
SimplSam wrote: ↑ Fri Sep 17, 2021 2:23 pm After about a million tests the following appears to work (with a tiny blip of a DOS screen popup).
os.execute(' "start "any title" "C:\\Program Files\\Lost Marble\\Moho 13.5\\Moho.exe" -r "w:\\zombies.moho" -f PNG -o "R:\\\\_out\\\\zombies\\\\" " ')
Stan Posts: 198 Joined: Sun Apr 19, 2009 3:22 pm
Re: Start background commandline render from Lua script?
Post by Stan » Fri Sep 17, 2021 3:59 pm
Lukas wrote: ↑ Fri Sep 17, 2021 3:41 pm if anyone’s interested.
You’ll be surprised how many people find it useful!
________________________________________________________________________
https://mohoscripting.com/ — Unofficial Moho Lua scripting documentation
https://mohoscripts.com/ — The best place to publish and download scripts for Moho
SimplSam Posts: 931 Joined: Thu Mar 13, 2014 5:09 pm Location: London, UK Contact:
Re: Start background commandline render from Lua script?
Post by SimplSam » Sat Sep 18, 2021 4:57 am
hayasidist wrote: ↑ Fri Sep 17, 2021 3:57 pm there’s a «/b» switch that might stop the popup: https://docs.microsoft.com/en-us/window . ands/start
Unfortunately not. Apparently on Windows os.execute and io.popen encapsulate the supplied command string with cmd /c at the C program level, so I think there is no getting away from the popup window. Just need to try and make it as short as possible.
Moho 14 / 13.5 » Win 11 Pro 64GB » NVIDIA GTX 1080ti 11GB
Moho 14 / 13.5 » Mac mini 2012 8GB » macOS 10.15 Catalina
Tube: SimplSam
Sam
hayasidist Posts: 3398 Joined: Wed Feb 16, 2011 8:12 pm Location: Kent, England
Re: Start background commandline render from Lua script?
Post by hayasidist » Sat Sep 18, 2021 10:18 am
SimplSam wrote: ↑ Sat Sep 18, 2021 4:57 am Unfortunately not. Apparently on Windows os.execute and io.popen encapsulate the supplied command string with cmd /c at the C program level, so I think there is no getting away from the popup window. Just need to try and make it as short as possible.
ah well! thanks for looking and for the research.
SimplSam Posts: 931 Joined: Thu Mar 13, 2014 5:09 pm Location: London, UK Contact:
Re: Start background commandline render from Lua script?
Post by SimplSam » Wed Sep 22, 2021 7:17 am
Lukas wrote: ↑ Fri Sep 17, 2021 8:06 am
SimplSam wrote: ↑ Fri Sep 17, 2021 3:13 am . but do use a Stream Deck keyboard to drive batch renders .
How exactly do you use it with Moho? It looks nice.
I have multiple (and expanding) uses:
1. Launching/Switching Windows apps (via taskbar shortcuts). Pressing the SD Key either launches the app or switches to it (same as clicking the taskbar link)
2. Send Keys (simple): Send a key combo — like [Shift left-arrow] (goto frame 0) -or- Simply replace a mouse / keyboard click -or- Send any of the wacky key combos to show/hide panels and run Buttons/Tools etc.
3. Send Keys (sequence — simple use): like [Ctrl-C .. Ctrl-V] to duplicate with a single key press. Or [tool button shortcut .. Enter] to run a popup Tool with default/current settings accepted
4. Send Keys (sequence — complex use): I use a lot when developing scripts to save the script then reload & optionally run in Moho. (see Multi-Action Sequence below). Or perform a Moho PNG render, Comp in Resolve and then View the output with VLC
5. Send Keys (super macro): Use macro script to drive any sequence of keyboard/mouse actions. Dynamically Read/Write variables from/to files. Also lets you Repeat key/sequence sends whilst SD key held or latched until SD key pressed again or for a defined number of repeats.
6. Start any program executable or Launch URLs in browser — like Lost Marble !!
7. Toggle keys (send different keys for state 1 and 2) — with associated icons. i.e. Mute / Unmute system audio. Or toggle/send seperate key sequences.
8. You can have mini-status displays. Ancillary things like Clock/Time. CPU usage. Or custom.
9. It also has the ability to move mouse cursor to specific locations and press/send clicks etc. You could even draw & create shapes with this. (Window & target locations need to be predictable for this to work well)
I now have 2 devices. A 15 button and 32 button version — used in combination with profile and folder switching.
Some favourite features:
— Custom button/status icons + text for each button — which can be dependent on file content, app or hardware status. + tactile feedback (real buttons)
— Can automatically detect the current focussed Windows app and switch to a profile specific to that app — so you get the keys relevant to that app
— Really easy to use / customize
— Using folders — you can dedicate a button setup to a particular project
— When using multiple devices, you can use one SD to switch profiles on another
— Lots of plugins for integration with third party apps and tools (particularly for audio/video, streaming/streamers, and home/office automation)
— Super macro is super powerful. I have yet to really exploit it.
— Programmable via SDK. With lots of dev community activity & support
There are also mobile app versions if you want to try without the hardware — Apple looks OK (4.8 *), but Android has mixed reviews mainly due to operational reliability (2.4 *). Used to be be free — but now $3/mo (30 day free trial)
Multi-action sequence:
Switch to VisualStudioCode (make sure its the active app). Pause. Save. Pause. Switch to Moho. Pause. Reload scripts. . in some sequences I also then run the updated tool script
Moho 14 / 13.5 » Win 11 Pro 64GB » NVIDIA GTX 1080ti 11GB
Moho 14 / 13.5 » Mac mini 2012 8GB » macOS 10.15 Catalina
Tube: SimplSam