1

Итак, я создал скрипт 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

0