Я только что сделал скрипт для autohotkey, который выполняет это в Windows 10 для 10 рабочих столов.
Как заставить это работать:
Скачайте и установите autohotkey. Скопируйте приведенный ниже код в блокнот и сохраните его с расширением .ahk
Я предлагаю сделать ярлык этого файла в папке автозагрузки, чтобы он запускался при запуске Windows.
Горячие клавиши по умолчанию:
Переключить рабочий стол: WIN+DESKTOP NUMBER (0 = рабочий стол № 10)
Новый рабочий стол: CTRL+WIN+D
Закрыть рабочий стол: CTRL+WIN+F4
Состояние рабочего стола дисплея: WIN+'
ВАЖНЫЙ:
Для того чтобы он работал, вы должны использовать ТОЛЬКО горячие клавиши для открытия, закрытия и смены рабочих столов, поскольку скрипт прослушивает эти горячие клавиши, чтобы узнать текущее и общее количество рабочих столов.
Если вы создадите, закроете или измените рабочие столы с помощью меню WIN+TAB с помощью мыши, скрипт перестанет работать. Чтобы он снова заработал, вам нужно отредактировать первые две строки, чтобы отразить текущее состояние ваших рабочих столов. (Desktopcount /currentdesktop)
Это не означает, что вы не можете использовать экран WIN+TAB в качестве обзора ваших текущих рабочих столов. Вы можете фактически использовать это в комбинации горячих клавиш, чтобы организовать ваши рабочие столы. Да, горячие клавиши по-прежнему работают, когда программа просмотра задач Windows открыта! (WIN+TAB) Просто НЕ используйте мышь !!!
Кроме того, дождитесь загрузки скрипта после запуска Windows, прежде чем создавать новые рабочие столы, иначе он не будет работать. Это может занять некоторое время в зависимости от того, сколько у вас программ запуска.
Хорошо, я добавил еще одну вещь, чтобы упростить повторную синхронизацию сценария с состоянием вашего рабочего стола. Теперь есть горячая клавиша, которая отображает состояние, в котором, по мнению сценария, находятся рабочие столы, поэтому все, что вам нужно сделать, это настроить рабочие столы с помощью мыши, чтобы они соответствовали сценарию, и все будет синхронизировано снова! Для меня со швейцарской клавиатурой это хорошо получилось с '? ключ рядом с 0, и это имеет смысл с? на нем, но на других клавиатурах вы можете изменить это, что можно легко сделать, изменив строку сразу после горячей клавиши на 0/10 (начиная с # ') на любую, какую вам больше нравится.
На самом деле, я только что понял .... если количество рабочих столов правильное, то создание нового рабочего стола будет автоматически синхронизировать значение текущего рабочего стола.
(Строки, начинающиеся с; являются комментариями и не влияют на сценарий)
Код:
#NoTrayIcon
;If the script stops working:
;Change the following values to reflect your current desktop state and reload the script.
;Remember to change them back to 1 after reloading the script if you have it set to start with Windows
desktopcount := 1
currentdesktop := 1
;You can change the hotkeys for creating, closing, and switching desktops bellow.
;The current hotkeys are CTRL+WIN+D for new desktop, CTRL+WIN+F4 to close desktop
;and WIN+NUMBER for switching desktops.
;For example, to change the hotkey for new desktop replace ^#D bellow with the desired hotkey.
;Refer to the autohotkey documentation for a full list of symbols refering to modifier keys,
;as you can see ^ is CTRL and # is WIN key.
;If you wanted to change the switch desktop from WIN key to CTRL for example you would have
;to replace the # before each number to a ^
^#D::NewDesktop()
^#F4::CloseDesktop()
#1::SwitchDesktop(1)
#2::SwitchDesktop(2)
#3::SwitchDesktop(3)
#4::SwitchDesktop(4)
#5::SwitchDesktop(5)
#6::SwitchDesktop(6)
#7::SwitchDesktop(7)
#8::SwitchDesktop(8)
#9::SwitchDesktop(9)
#0::SwitchDesktop(10)
#'::MsgBox Desktop Count = %desktopcount%`nCurrent Desktop = %currentdesktop%
;Do not change anything after this line, unless you know what you are doing ;)
;-----------------------------------------------------------------------------------------------
SwitchDesktop(desktop)
{
global desktopcount
global currentdesktop
desktopdiff := desktop - currentdesktop
if (desktop > desktopcount)
{
return
}
if (desktopdiff < 0)
{
desktopdiff *= -1
Loop %desktopdiff%
{
Send ^#{Left}
}
}
else if (desktopdiff > 0)
{
Loop %desktopdiff%
{
Send ^#{Right}
}
}
currentdesktop := desktop
}
NewDesktop()
{
global desktopcount
global currentdesktop
if (desktopcount > 9)
{
return
}
desktopcount ++
currentdesktop := desktopcount
Send ^#d
}
CloseDesktop()
{
global desktopcount
global currentdesktop
desktopcount --
if (currentdesktop != 1)
{
currentdesktop --
}
Send ^#{f4}
}