Итак, я создал скрипт AutoHotKey, чтобы легко переключаться на 9 разных рабочих столов с помощью цифровой клавиатуры (воспринимайте это как сетку 3х3, вроде того). Проблема в том, что я также хочу иметь горячие клавиши для перемещения окон на другой рабочий стол, а пункты меню всегда пропускают текущий рабочий стол (см. Последнюю горячую клавишу в примере кода). Пока у меня есть Win-Tab, затем AppsKey, затем M, который вызывает меню, чтобы переместить текущее окно куда-нибудь. На данный момент, если бы все рабочие столы были перечислены, я мог бы просто перейти на некоторое количество. Однако текущий рабочий стол всегда опускается, что делает это невозможным - я могу сойти с одной ошибки.
То, что у меня есть сейчас, вполне сносно (одна клавиша, которая вызывает меню, а остальное оставляет мне), но я бы хотела пойти дальше, не прибегая к написанию тонны кода.
Поскольку я не знаю, какой пункт меню выбрать, я не могу закончить это. Есть ли простой способ справиться с этой проблемой? Например, может быть, есть способ перейти вниз на N пунктов, затем проверить, что представляет собой текст текущего пункта меню, и отрегулировать на 1?
Вот мой пример кода. Это только последняя горячая клавиша в списке, которая действительно имеет значение, но остальные пока иллюстрируют мои настройки.
Основной вопрос заключается в следующем: как я могу иметь уникальную горячую клавишу, например Win-Shift-Numpad3, для перемещения текущего окна на рабочий стол 3, но иметь уникальные горячие клавиши от 1 до 9?
; Windows+Number pad keys = Windows 10 desktop switching.
; number pad to match a 3x3 desktop
#Numpad1::
#NumpadEnd::
Send, {LWin down}{Ctrl down}{Right 9}{Left 2}{Ctrl up}{LWin up}
return
#Numpad2::
#NumpadDown::
Send, {LWin down}{Ctrl down}{Right 9}{Left 1}{Ctrl up}{LWin up}
return
#Numpad3::
#NumpadPgDn::
Send, {LWin down}{Ctrl down}{Right 9}{Ctrl up}{LWin up}
return
#Numpad4::
#NumpadLeft::
Send, {LWin down}{Ctrl down}{Left 9}{Right 3}{Ctrl up}{LWin up}
return
#Numpad5::
#NumpadClear::
Send, {LWin down}{Ctrl down}{Left 9}{Right 4}{Ctrl up}{LWin up}
return
#Numpad6::
#NumpadRight::
Send, {LWin down}{Ctrl down}{Right 9}{Left 3}{Ctrl up}{LWin up}
return
#Numpad7::
#NumpadHome::
Send, {LWin down}{Ctrl down}{Left 9}{Ctrl up}{LWin up}
return
#Numpad8::
#NumpadUp::
Send, {LWin down}{Ctrl down}{Left 9}{Right 1}{Ctrl up}{LWin up}
return
#Numpad9::
#NumpadPgUp::
Send, {LWin down}{Ctrl down}{Left 9}{Right 2}{Ctrl up}{LWin up}
return
; Bring up the "move this window to desktop..." menu. Since the menu is always different, don't operate on it. Just leave it at that.
#!Numpad0::
#!NumpadIns::
#+Numpad0::
#+NumpadIns::
#Numpad0::
#NumpadIns::
Send, {LWin down}{Tab}{LWin up}
Sleep, 400
Send, {AppsKey}M
return