@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 мне подсказывал, когда у меня не срабатывал один скрипт. Но тут уже по ситуации.