Acabo de crear un script para autohotkey que logra esto en Windows 10 para hasta 10 escritorios.
Cómo hacerlo funcionar:
Descargue e instale autohotkey . Copie y pegue el siguiente código en el bloc de notas y guárdelo con la extensión de archivo .ahk
Sugiero hacer un acceso directo de este archivo en su carpeta de inicio para que se ejecute cuando se inicie Windows.
HOTKEYS POR DEFECTO:
Cambiar escritorio: WIN + NÚMERO DE ESCRITORIO (0 = número de escritorio 10)
Nuevo escritorio: CTRL + WIN + D
Cerrar escritorio: CTRL + WIN + F4
Mostrar estado del escritorio: WIN + '
IMPORTANTE:
Para que funcione, SOLO debe usar teclas de acceso rápido para abrir, cerrar y cambiar escritorios porque el script escucha estas teclas de acceso rápido para conocer el número actual y total de escritorios.
Si crea, cierra o cambia los escritorios a través del menú WIN + TAB con el mouse, el script dejará de funcionar. Para que vuelva a funcionar, deberá editar las dos primeras líneas para reflejar el estado actual de sus escritorios. (desktopcount / currentdesktop)
Esto no significa que no pueda usar la pantalla WIN + TAB como una descripción general de sus escritorios actuales. En realidad, puede usarlo en combinación con las teclas de acceso rápido para organizar sus escritorios. Sí, las teclas de acceso rápido aún funcionan cuando el visor de tareas de Windows está abierto. (WIN + TAB) Simplemente NO use el mouse !!!
Además, espere a que la secuencia de comandos se cargue después del inicio de Windows antes de crear nuevos escritorios o no funcionará. Esto podría tomar un momento dependiendo de cuántos programas de inicio tenga.
Ok, agregué una cosa más para que sea más fácil volver a sincronizar el script con el estado de su escritorio. Ahora hay una tecla de acceso rápido que mostrará el estado en el que el script cree que están los escritorios, por lo que todo lo que tiene que hacer es ajustar sus escritorios con el mouse para que se ajuste al script y todo se sincronizará nuevamente. Para mí, con un teclado suizo, funcionó muy bien tener el '? tecla junto a 0 y tiene sentido con un? en él, pero en otros teclados es posible que desee cambiar esto, lo que se puede hacer fácilmente cambiando la línea justo después de la tecla de acceso rápido para 0/10 (comenzando con # ') a lo que desee.
En realidad, me acabo de dar cuenta ... siempre y cuando el Conteo del escritorio sea correcto, la creación de un nuevo escritorio volverá a sincronizar automáticamente el valor del Escritorio actual.
(Las líneas que comienzan con; son comentarios y no afectan el guión)
Código:
#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}
}