Это просто идея для чего-то, что можно попробовать и адаптировать ... не проверено.
Пока скрипт выполняется, он просто сохраняет активный виртуальный рабочий стол в переменной, не обязательно, чтобы INI-файл.
Сценарий должен быть запущен с активным виртуальным рабочим столом # 1 или принудительно синхронизироваться. Функция форсирования предполагает, что вы можете нажимать ctrl+win+left столько раз, сколько захотите, и она не будет проходить мимо первого виртуального рабочего стола, когда попадет туда.
Сочетания клавиш запускаются на клавишах Windows по умолчанию, но не фиксируют их (т. Е. Тильда ~ позволяет проходить нажатию клавиш). Таким образом, он будет отслеживать клавиатуру, если вы используете клавиатуру, и если вы используете мышь, вы можете назначить мышь для одной клавиши быстрого доступа или другой.
Вы также можете добавить собственный дубликат ярлыка для одного или обоих направлений ... показывая это как ctrl+alt+F8, например, в том случае, если для переключения между рабочими столами необходимо, чтобы кнопка мыши была назначена чему-то другому, чем стандартные клавиши Windows.
#NoEnv
#Persistent
numDesktops := 3 ; set to match number of virtual desktops
if forceSyncAtStartup := True ; set to False to disable sync on startup
SendInput % "^#{Left" (numDesktops-1) "}"
vDesktop := 1 ; this must match the virtual desktop active when program starts if a sync isn't forced
return
^!F8:: ; random/custom shortcut for the mouse if desired
~^#Left::
vDesktop -= 1
if (vDesktop=0) {
vDesktop := numDesktops
sleep 20 ; optional for better reliability
; use this if no delay needed for reliable operation
SendInput % "^#{Right " (numDesktops-1) "}
; use this type of setup if a delay is needed
; Loop, % (numDesktops-1) {
; SendInput ^#{Right}
; sleep 100 ; adjust for reliability
; }
}
return
~^#Right::
vDesktop += 1
sleep 20
if (vDesktop=(numDesktops+1)) {
vDesktop := 1
SendInput % "^#{Left" (numDesktops-1) "}"
}
return