Тема: AHK: Перехват нажатия клавиш, Windows 7 x64 и режим совместимости.
Столкнулся со странным поведением AutoHotkey под Windows 7 64-разрядная. Причем так сложилось, что в этот момент в системе произошло несколько изменений и я долго не мог понять почему работавший ранее скрипт вдруг перестал это делать.
Я использую AHK для автоматизации некоторых аспектов World of Wаrсrаft. Я нажимаю одну горячую клавишу, а скрипт анализирует текущее состояние персонажа и выдает в игру команду, активирующую наиболее подходящую в данный момент способность/заклинание.
Под основную горячую клавишу была задействована клавиша тильда/апостроф, а также её комбинация с клавишей Shift. Также задействованы комбинации Ctrl+F7 - Ctrl+F10 для переключения состояния переменных-флагов.
Однажды я обнаружил, что скрипт больше не реагирует на нажатие клавиш "тильда" и Shift+"тильда". При этом комбинации Ctrl+Fn обрабатываются как и раньше. Небольшое исследование показало, что эти клавиши не обрабатываются только если активно окно игры, во всех остальных окнах всё работает как и раньше (скрипт не проверяет какое окно активно, когда он не нужен я его просто выключаю).
Первое подозрение было на установленную в этот день новую беспроводную клавиатуру и софт от беспроводной мыши, которая раньше работала на дефолтных драйверах. Отключил клавиатуру, удалил драйвер мыши, перезагрузился - не помогло. Попробовал подобрать для горячей клавиши другую кнопку, попробовал использовать скан-коды - снова не то. Комбинации с Ctrl или Win перехватываются и обрабатываются, а простые нажатия клавиш - нет.
Как в итоге оказалось это поведение было вызвано тем, что для исполнимого файла игры я за день до этого (пытаясь решить другую проблему) выставил режим совместимости с Windows XP (SP3).
Резюме: При запуске под Windows 7 x64 приложений в режиме совместимости с Windows XP (SP3) скрипты AHK перестают перехватывать нажатия одиночных клавиш. Комбинации клавиш с Ctrl и Win (другие не проверял) обрабатываются как обычно.
Пока для меня использование режима совместимости не критично и я его просто отключил, чтобы вернуть работоспособность скриптов. Но если кто то знает почему AHK так себя ведет и как этого избежать, то поделитесь, пожалуйста, информацией.

