Отключить функциональность ALT после того, как приложение начинает использовать AutoHotKey

340
Bruno Augusto

Я искал способ отключить altфункцию, которая подготавливает мнемоническое меню для использования с клавиатурой, ожидая нажатия буквы, но, по-видимому, это не возможно самой Windows, по крайней мере, не Windows 7 ( Я не знаю других).

Проблема заключается только в Adobe Premiere, в котором alt, помимо прочего, используется для увеличения и уменьшения масштаба времени / последовательности, и я часто это делаю, потому что я делаю покадровую синхронизацию губ.

Дело в том, что когда я отпускаю altклавишу, иногда остаются связанные с меню функциональные возможности и немедленное использование клавиш со стрелками для перемещения ... курсора? во временной шкале / последовательности вместо навигации по видеокадрам я перемещаюсь по меню.

Несмотря на разочарование, altснова нажав сразу после остановки прокрутки вверх / вниз колесико мыши, я могу поддерживать непрерывный рабочий процесс. Это просто на миллисекунду, но просто экстраполируем это на очень трудоемкую задачу, в которой 2-3 минуты могут занять 2-3 часа, чтобы закончить.

Во всяком случае ... При поиске альтернативного подхода я нашел кого-то с такой же проблемой, но с Adobe Photoshop, и кто-то еще предложил как приложение под названием apssistant, к сожалению, это только для Photoshop, но и решение с AutoHotKey.

Я всегда старался избегать AHK, потому что мне никогда не нравились программы, работающие в фоновом режиме, и, в данном конкретном случае, каждый бит памяти и / или вычислительной мощности жизненно важен, учитывая, что у меня нет аппаратной конфигурации высшего уровня. В прошлый раз мой компьютер несколько раз останавливался из-за сложности проекта, когда Premiere потребляла более 7 ГБ ОЗУ.

Но я дал ему шанс объединить оригинальное предложение:

#NoEnv ; #Warn ; ~LAlt:: KeyWait, LAlt return  ~LAlt Up:: Send,  return 

Я уверен, что это работает, потому что я тестировал в окне Windows Explorer и, хотя меню мигает, он не срабатывает.

с возможностью запуска Premiere -AND- полностью запустить скрипт:

#NoEnv ; #Warn ;#Persistent ;Script will not Exit when no hotkeys exist.  Run, "C:\Program Files\Adobe\Adobe Premiere Pro CC 2017\Adobe Premiere Pro.exe"  SetTitleMatchMode, 2 ;Program Title can be portions of the title instead of the full title SetTimer, CheckPrograms, 1000 ;Run CheckPrograms subroutine every 1 second return  CheckPrograms: IfWinExist, Premiere { Run, DisableALTFunctionality.ahk ;PremiereTrack = 1 } IfWinNotExist, Premiere ;PremiereTrack = 0 Exitapp return 

Но, насколько я могу судить, это не сработало, потому что, когда Premiere наконец загрузился (здесь еще нет SSD), я открыл свой последний проект, и функциональность ALT все еще работала.

Я запускаю второй сценарий с помощью ярлыка на рабочем столе, оба сценария находятся в одном каталоге, и файлы AHK правильно настроены для запуска с AutoHotScript x64 вручную (переносная версия) - значок на панели задач показывает, что сценарий действительно запущен DisableALTFunctionality.ahk.

Но даже увеличив время ожидания до 5 минут, я не добился успеха.

0
Ваш вопрос будет опущен - он расплывчатый и содержит много ненужной информации. Если вам нужна помощь, я бы посоветовал вам сделать это: запустите только этот скрипт AHK (это всего лишь одна строка): `~ LAlt :: return` и проверьте, как это влияет на приложения и ваши функции Premiere. Опишите точно, что работает или нет. Затем попробуйте запустить только этот скрипт AHK: `~ LAlt up :: return` и снова опишите, что происходит. И не запускайте несколько скриптов одновременно. пожалуйста, оставьте вопрос коротким и точным, насколько возможно Mikhail V 5 лет назад 0

1 ответ на вопрос

1
user3419297

Вы можете использовать директиву #If или #IfWinActive для отключения функции ALT в этой программе:

#NoEnv ; #Warn ;#Persistent ; Script will not Exit when no hotkeys exist.  SetTitleMatchMode, 2 ; Program Title can be portions of the title instead of the full  #IfWinActive, Premiere  LAlt:: RAlt:: return ; do nothing  !WheelDown:: Send, ; ! means Alt  !WheelUp:: Send,    #IfWinActive ; turn off context sensitivity 

Попробуйте также:

#NoEnv ; #Warn ;#Persistent ; Script will not Exit when no hotkeys exist.  SetTitleMatchMode, 2 ; Program Title can be portions of the title instead of the full  #IfWinActive, Premiere  LAlt up:: If (A_PriorKey = "LAlt") ; If LAlt was pressed alone return ; do nothing return  ; In this case its necessary to define a custom combination by using "LAlt &" or "<!"  ; to avoid that LAlt loses its original function as a modifier key: <!F4:: Send ; <! means LAlt   #IfWinActive ; turn off context sensitivity 
Это полностью отключит Alt. Кажется, OP все еще нуждается в функциональности, с которой он конфликтует. Mikhail V 5 лет назад 0
Да. И на самом деле, я даже не учел это, когда писал сценарий, потому что он должен прерывать короткие нажатия. Комбо, которое я использую больше всего: удерживайте ALT и колесико мыши. Есть ли способ отличить их? Bruno Augusto 5 лет назад 0
Попробуйте мой отредактированный ответ. user3419297 5 лет назад 0
Первый код блокирует клавишу ALT, но удержание ALT и последующая прокрутка вверх / вниз ничего не делает, например, если вообще не было нажато ни одной клавиши ALT, которая в Premiere просто управляет панелью поиска вместо увеличения / уменьшения. Кроме того, он блокирует и другие «нормальные» комбинации ALT, такие как ALT + TAB (>. <). Не могли бы вы объяснить второй код? Поскольку «мнемонический триггер» все еще существует, и они работают, если я нажимаю связанные с ними клавиши, однако я попытался повторить рабочий процесс реального варианта использования (у меня сегодня выходной), и меню не открылось случайно. Bruno Augusto 5 лет назад 0
Второй код отключает левую функциональность ALT, только если левая клавиша ALT была нажата одна (она не подготавливает меню для использования с клавиатурой). Все остальные комбинации клавиш ALT + остаются без изменений. user3419297 5 лет назад 0
Что ж, мне придется протестировать дальше, когда я заставлю другое видео работать (вероятно, только на следующих выходных). До тех пор все, что я могу сказать, это спасибо за ваше время. Bruno Augusto 5 лет назад 0
Как и было обещано, сегодня я проверил ваше решение, и второй код сработал так же, как «проблема», оказавшая на меня влияние. Увеличение и уменьшение масштаба и быстрая навигация по кадрам теперь намного быстрее и плавнее. Большое спасибо :) Bruno Augusto 5 лет назад 0