Windows 虚拟桌面:结束时循环回到第一个桌面

Windows 虚拟桌面:结束时循环回到第一个桌面

假设我有三个虚拟桌面。我知道我可以使用以下方式浏览它们:

ctrl + windows + left | right

但是,如果我到达末尾,有没有办法让它循环回到开头?这样,如果我在桌面 3 上,“ctrl + windows + right”会带我到桌面 1?

我知道使用 AutoHotkey 脚本可以实现这一点。但我不知道如何实现它。

我之所以需要这样工作,是因为我打算将此功能映射到我刚买的鼠标上(它有额外的按钮)。目前我需要使用两个按钮,这样我就可以在桌面之间来回移动。我宁愿只需要一个按钮。

谢谢

答案1

这只是一个尝试和适应的想法...尚未测试过。

只要脚本正在运行,它只会将活动虚拟桌面保存在变量中,并不一定需要 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  

答案2

另一个选择是使用Finestra 虚拟桌面默认情况下执行此循环并且热键是可配置的。

在此处输入图片描述

相关内容