@belovw, я делал себе такие контекстные скрипты. Пользовался следующим способом.
В начале скрипта -
Код:
window, segment, details = reaper.BR_GetMouseCursorContext()
Вся информация по этой функции -
https://www.extremraym.com/cloud/reascript-doc/#BR_GetMouseCursorContext
Выглядит это примерно так:
Код:
window, segment, details = reaper.BR_GetMouseCursorContext()
if window == "tcp"
and segment == "track" then
(действие. которое хотим)
elseif window == "arrange"
and segment == "track"
and details == "item" then
(действие. которое хотим)
end
Так можно перечислить сколько угодно контекстных зон.
"Действие, которое мы хотим" - это может быть или function(), которая уже была описана и задана(или же прямо тут по месту), или
ссылка на экшены/скрипты, имеющиеся в action list:
reaper.Main_OnCommand(ххххх,0) - ссылка на штатный экшн, ID которого состоит просто из цифр (вписать вместо ххххх),
reaper.Main_OnCommand(reaper.NamedCommandLookup("ххххххххх"),0) - ссылка на любой другой экшн, ID которого выглядит уже как длинный список разных букв и цифр.
Ну вот, вкратце, как-то так. Опытные скриптописатели исправят, если я что не так объяснил.
Нюансы могут быть связаны с тем, что не всегда контекст нормально снимается. То есть, иногда нужны дополнительные действия.
Это Archie мне подсказывал, когда у меня не срабатывал один скрипт. Но тут уже по ситуации.