Windows 虚拟桌面。最后循环回到第一个桌面

Cae*_*der 8 desktop productivity autohotkey virtual-desktop windows-10

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

ctrl + windows + left | 对

但是,如果到达终点,有没有办法让它循环回到起点?因此,如果我在桌面 3 上“ctrl + windows + right”会带我到桌面 1?

我知道这可以通过 AutoHotkey 脚本实现。但我不知道如何使它起作用。

我需要它以这种方式工作的原因是因为我打算将此功能映射到我刚购买的鼠标(它有额外的按钮)。目前我需要使用两个按钮,以便我可以在桌面之间来回移动。我宁愿只需要一个按钮。希望这些信息有帮助。

谢谢

小智 0

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

只要脚本正在运行,它就会将活动的虚拟桌面保存在变量中,不一定需要 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  
Run Code Online (Sandbox Code Playgroud)