septembre 28, 2020

Comment Utiliser AutoHotkey pour changer de bureau virtuel dans Windows 10

L’une des meilleures fonctionnalités de Windows 10 est la vue des tâches, que vous pouvez utiliser pour créer des bureaux virtuels. Ces bureaux sont un excellent moyen de distribuer et d’organiser les fenêtres de vos applications ouvertes. Vous pouvez appuyer sur Win + Tab (maintenez la touche Windows enfoncée et appuyez sur Tab) pour les voir dans la vue des tâches.

 

Cependant, une fonctionnalité non fournie par Microsoft est la possibilité de basculer instantanément vers un bureau virtuel spécifique avec un raccourci clavier. Par exemple, si vous êtes sur le bureau 2 et que vous souhaitez passer au bureau 6, vous devez maintenir Win + Ctrl enfoncé et appuyer quatre fois sur la flèche droite. Il serait beaucoup plus facile d’avoir un raccourci qui passe automatiquement au bureau numéro 6, quel que soit le bureau que vous utilisez.

Ce didacticiel vous montre comment créer des raccourcis clavier pour basculer directement vers n’importe quel bureau virtuel par numéro. Nous accomplirons cela en utilisant l’utilitaire Windows gratuit, AutoHotkey.

 

Création du script

  1. Le programme d’installation se ferme et un nouveau fichier texte s’ouvre dans le Bloc-notes. Le fichier sera notre script. (Un script est un fichier en texte brut qui contient une série de commandes à exécuter par un autre programme, dans ce cas, AutoHotkey.)

RemarqueLe script de cette page est basé sur Windows Desktop Switcher, un script open source hébergé sur GitHub

  1. Copiez et collez le script suivant dans votre document Bloc-notes:
; Globals
DesktopCount = 2 ; Windows starts with 2 desktops at boot
CurrentDesktop = 1 ; Desktop count is 1-indexed (Microsoft numbers them this way)
;
; This function examines the registry to build an accurate list of the current virtual desktops and which one we're currently on.
; Current desktop UUID appears to be in HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\1\VirtualDesktops
; List of desktops appears to be in HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VirtualDesktops
;
mapDesktopsFromRegistry() {
 global CurrentDesktop, DesktopCount
 ; Get the current desktop UUID. Length should be 32 always, but there's no guarantee this couldn't change in a later Windows release so we check.
 IdLength := 32
 SessionId := getSessionId()
 if (SessionId) {
 RegRead, CurrentDesktopId, HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\%SessionId%\VirtualDesktops, CurrentVirtualDesktop
 if (CurrentDesktopId) {
 IdLength := StrLen(CurrentDesktopId)
 }
 }
 ; Get a list of the UUIDs for all virtual desktops on the system
 RegRead, DesktopList, HKEY_CURRENT_USER, SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VirtualDesktops, VirtualDesktopIDs
 if (DesktopList) {
 DesktopListLength := StrLen(DesktopList)
 ; Figure out how many virtual desktops there are
 DesktopCount := DesktopListLength / IdLength
 }
 else {
 DesktopCount := 1
 }
 ; Parse the REG_DATA string that stores the array of UUID's for virtual desktops in the registry.
 i := 0
 while (CurrentDesktopId and i < DesktopCount) {
 StartPos := (i * IdLength) + 1
 DesktopIter := SubStr(DesktopList, StartPos, IdLength)
 OutputDebug, The iterator is pointing at %DesktopIter% and count is %i%.
 ; Break out if we find a match in the list. If we didn't find anything, keep the
 ; old guess and pray we're still correct :-D.
 if (DesktopIter = CurrentDesktopId) {
 CurrentDesktop := i + 1
 OutputDebug, Current desktop number is %CurrentDesktop% with an ID of %DesktopIter%.
 break
 }
 i++
 }
}
;
; This functions finds out ID of current session.
;
getSessionId()
{
 ProcessId := DllCall("GetCurrentProcessId", "UInt")
 if ErrorLevel {
 OutputDebug, Error getting current process id: %ErrorLevel%
 return
 }
 OutputDebug, Current Process Id: %ProcessId%
 DllCall("ProcessIdToSessionId", "UInt", ProcessId, "UInt*", SessionId)
 if ErrorLevel {
 OutputDebug, Error getting session id: %ErrorLevel%
 return
 }
 OutputDebug, Current Session Id: %SessionId%
 return SessionId
}
;
; This function switches to the desktop number provided.
;
switchDesktopByNumber(targetDesktop)
{
 global CurrentDesktop, DesktopCount
 ; Re-generate the list of desktops and where we fit in that. We do this because
 ; the user may have switched desktops via some other means than the script.
 mapDesktopsFromRegistry()
 ; Don't attempt to switch to an invalid desktop
 if (targetDesktop > DesktopCount || targetDesktop < 1) {
 OutputDebug, [invalid] target: %targetDesktop% current: %CurrentDesktop%
 return
 }
 ; Go right until we reach the desktop we want
 while(CurrentDesktop < targetDesktop) {
 Send ^#{Right}
 CurrentDesktop++
 OutputDebug, [right] target: %targetDesktop% current: %CurrentDesktop%
 }
 ; Go left until we reach the desktop we want
 while(CurrentDesktop > targetDesktop) {
 Send ^#{Left}
 CurrentDesktop--
 OutputDebug, [left] target: %targetDesktop% current: %CurrentDesktop%
 }
}
;
; This function creates a new virtual desktop and switches to it
;
createVirtualDesktop()
{
 global CurrentDesktop, DesktopCount
 Send, #^d
 DesktopCount++
 CurrentDesktop = %DesktopCount%
 OutputDebug, [create] desktops: %DesktopCount% current: %CurrentDesktop%
}
;
; This function deletes the current virtual desktop
;
deleteVirtualDesktop()
{
 global CurrentDesktop, DesktopCount
 Send, #^{F4}
 DesktopCount--
 CurrentDesktop--
 OutputDebug, [delete] desktops: %DesktopCount% current: %CurrentDesktop%
}
; Main
SetKeyDelay, 75
mapDesktopsFromRegistry()
OutputDebug, [loading] desktops: %DesktopCount% current: %CurrentDesktop%
; User config!
; This section binds the key combo to the switch/create/delete actions
LWin & 1::switchDesktopByNumber(1)
LWin & 2::switchDesktopByNumber(2)
LWin & 3::switchDesktopByNumber(3)
LWin & 4::switchDesktopByNumber(4)
LWin & 5::switchDesktopByNumber(5)
LWin & 6::switchDesktopByNumber(6)
LWin & 7::switchDesktopByNumber(7)
LWin & 8::switchDesktopByNumber(8)
LWin & 9::switchDesktopByNumber(9)
;CapsLock & 1::switchDesktopByNumber(1)
;CapsLock & 2::switchDesktopByNumber(2)
;CapsLock & 3::switchDesktopByNumber(3)
;CapsLock & 4::switchDesktopByNumber(4)
;CapsLock & 5::switchDesktopByNumber(5)
;CapsLock & 6::switchDesktopByNumber(6)
;CapsLock & 7::switchDesktopByNumber(7)
;CapsLock & 8::switchDesktopByNumber(8)
;CapsLock & 9::switchDesktopByNumber(9)
;CapsLock & n::switchDesktopByNumber(CurrentDesktop + 1)
;CapsLock & p::switchDesktopByNumber(CurrentDesktop - 1)
;CapsLock & s::switchDesktopByNumber(CurrentDesktop + 1)
;CapsLock & a::switchDesktopByNumber(CurrentDesktop - 1)
;CapsLock & c::createVirtualDesktop()
;CapsLock & d::deleteVirtualDesktop()
; Alternate keys for this config. Adding these because DragonFly (python) doesn't send CapsLock correctly.
;^!1::switchDesktopByNumber(1)
;^!2::switchDesktopByNumber(2)
;^!3::switchDesktopByNumber(3)
;^!4::switchDesktopByNumber(4)
;^!5::switchDesktopByNumber(5)
;^!6::switchDesktopByNumber(6)
;^!7::switchDesktopByNumber(7)
;^!8::switchDesktopByNumber(8)
;^!9::switchDesktopByNumber(9)
;^!n::switchDesktopByNumber(CurrentDesktop + 1)
;^!p::switchDesktopByNumber(CurrentDesktop - 1)
;^!s::switchDesktopByNumber(CurrentDesktop + 1)
;^!a::switchDesktopByNumber(CurrentDesktop - 1)
;^!c::createVirtualDesktop()
;^!d::deleteVirtualDesktop()
  1. Enregistrez le fichier.
  1. Ce script, AutoHotkey.ahk, se trouve dans votre dossier Documents. Ouvrez une nouvelle fenêtre de l’Explorateur de fichiers (clavier: Win + E) et accédez à Documents.
  1. Exécutez le script en double-cliquant sur le fichier. Vous ne verrez rien se produire, mais AutoHotkey exécute maintenant le script.

Comment ça marche?

Le script fonctionne en gardant une trace du bureau virtuel que vous utilisez actuellement. Maintenez la touche Windows enfoncée et appuyez sur un nombre compris entre 1 et 9 pour basculer automatiquement vers la gauche ou la droite le nombre correct de fois pour accéder au bureau souhaité. (Si vous appuyez sur le numéro d’un bureau qui n’existe pas encore, rien ne se passera.)

Test de vos nouveaux raccourcis clavier

Pour le tester, créez d’abord un nouveau bureau virtuel. Pour ce faire, cliquez sur l’icône Affichage des tâches dans votre barre des tâches (ou appuyez sur Win + Tab), puis cliquez sur + Nouveau bureau. Ou utilisez le raccourci clavier Win + Ctrl + D.

Faites-le une fois pour chaque nouveau bureau virtuel que vous souhaitez créer. Chaque bureau supplémentaire sera orienté à droite du précédent.

Maintenant, vous pouvez basculer vers l’un de ces bureaux à l’aide des raccourcis clavier définis dans le script. Maintenez Win et appuyez sur un nombre entre 1 et 9, et vous basculerez automatiquement sur ce bureau numéroté. Par exemple, appuyez sur Win + 3 pour basculer vers le troisième bureau virtuel à partir de la gauche.

 

Arrêt du script

Pour arrêter d’utiliser le script, accédez à votre barre d’état système et cliquez avec le bouton droit sur l’icône AutoHotkey, qui ressemble à un grand « H » vert pour afficher le menu de notification Windows AutoHotkey.

Remarque Si vous ne voyez pas l’icône, utilisez le bouton caret ^ pour afficher les icônes cachées.

 

Dans ce menu, vous pouvez suspendre les raccourcis clavier, suspendre le script ou quitter complètement AutoHotkey. Chacune de ces actions ramène vos raccourcis à la normale.

Exécution automatique de votre script au démarrage de Windows

Pour exécuter le script automatiquement à chaque démarrage de Windows, déplacez le script dans votre dossier de démarrage.

Sous Windows 10, le dossier de démarrage se trouve à l’emplacement suivant:

 

[Votre dossier personnel] \ AppData \ Roaming \ Microsoft \ Windows \ Menu Démarrer \ Programmes \ Démarrage

Ce dossier est normalement masqué, vous ne pouvez donc y accéder que dans l’Explorateur de fichiers si vous sélectionnez Affichage → Afficher les fichiers cachés en haut de la fenêtre de l’Explorateur.

Cependant, vous pouvez également accéder directement au dossier de démarrage en entrant le chemin d’accès complet au répertoire dans la zone Exécuter. Appuyez sur Win + R pour ouvrir la zone Exécuter, puis tapez le chemin d’accès complet au répertoire. Vous pouvez utiliser la variable d’environnement% APPDATA% pour remplir automatiquement le début du nom du chemin. Par exemple, vous pouvez saisir ceci dans la zone Exécuter:

% APPDATA% \ Microsoft \ Windows \ Menu Démarrer \ Programmes \ Démarrage

Lorsque vous appuyez sur Entrée, ce dossier s’ouvre dans une nouvelle fenêtre de l’Explorateur de fichiers.

Déplacez maintenant votre script dans ce dossier. Si votre dossier Documents est toujours ouvert dans une autre fenêtre, faites glisser et déposez AutoHotkey.ahk dans le dossier Démarrage.

Si vous décidez de ne pas exécuter le script automatiquement à chaque démarrage de Windows, ouvrez à nouveau ce dossier et déplacez le script ailleurs. Vous pouvez toujours l’exécuter manuellement en double-cliquant dessus, peu importe où il se trouve sur votre ordinateur.

Notes complémentaires

Ce script remplace les raccourcis Windows par défaut pour Win + (Number), qui ouvrent normalement les éléments de votre barre des tâches (Win + 1 ouvre le premier élément, etc.). Cependant, certaines applications Windows intégrées telles que Paramètres ou Store ignorent le script d’AutoHotkey.

Si vous êtes sur l’une de ces fenêtres lorsque vous essayez des raccourcis clavier, il utilise le comportement des raccourcis clavier Windows et ouvre quelque chose à partir de votre barre des tâches au lieu d’un nouveau bureau. Une autre chose à garder à l’esprit est que AutoHotkey bascule rapidement de gauche à droite entre vos bureaux virtuels, un par un. S’il tombe sur un bureau virtuel où l’une de ces applications spéciales est ouverte, il arrêtera de basculer et restera sur ce bureau.

Malheureusement, les raccourcis Windows par défaut ne peuvent pas être désactivés, ce qui n’est pas pratique, mais à moins que l’une de ces fenêtres d’application ne soit ouverte, le script AutoHotkey fonctionne correctement. Vous constaterez que le script fonctionne parfaitement avec 95% de vos autres programmes.

Cependant, si vous préférez, vous pouvez modifier votre script AutoHotkey pour utiliser une combinaison de touches différente.

 

Modification de votre script AutoHotkey

Ouvrez le Bloc-notes (Démarrer → Accessoires Windows → Bloc-notes).

Dans le Bloc-notes, ouvrez le fichier AutoHotkey. Si le dossier Démarrage est déjà ouvert, vous pouvez faire glisser et déposer l’icône sur la fenêtre du Bloc-notes pour ouvrir le fichier.

Ou, vous pouvez l’ouvrir en allant dans Fichier → Ouvrir dans le bloc-notes et en entrant le nom de fichier% APPDATA% \ Microsoft \ Windows \ Menu Démarrer \ Programmes \ Démarrage \ AutoHotkey.ahk.

Lorsque le fichier est ouvert, vous pouvez apporter des modifications au script en fonction de vos besoins. Par exemple, si vous préférez utiliser la combinaison de touches de raccourci CapsLock + (Number), recherchez ces lignes dans le script:

 

LWin & 1::switchDesktopByNumber(1)
LWin & 2::switchDesktopByNumber(2)
LWin & 3::switchDesktopByNumber(3)
LWin & 4::switchDesktopByNumber(4)
LWin & 5::switchDesktopByNumber(5)
LWin & 6::switchDesktopByNumber(6)
LWin & 7::switchDesktopByNumber(7)
LWin & 8::switchDesktopByNumber(8)
LWin & 9::switchDesktopByNumber(9)

In these lines, change LWin to CapsLock:

CapsLock & 1::switchDesktopByNumber(1)
CapsLock & 2::switchDesktopByNumber(2)
CapsLock & 3::switchDesktopByNumber(3)
CapsLock & 4::switchDesktopByNumber(4)
CapsLock & 5::switchDesktopByNumber(5)
CapsLock & 6::switchDesktopByNumber(6)
CapsLock & 7::switchDesktopByNumber(7)
CapsLock & 8::switchDesktopByNumber(8)
CapsLock & 9::switchDesktopByNumber(9)

Enregistrez vos modifications et double-cliquez sur le script pour le mettre à jour dans AutoHotkey. Si vous avez fait des erreurs dans votre script, AutoHotkey ne l’exécutera pas et vous donnera un message d’erreur. Sinon, il vous demandera si vous souhaitez mettre à jour le script déjà en cours d’exécution:

Choisissez Oui pour que vos nouvelles modifications prennent effet.

Si vous avez une idée pour une combinaison de touches de raccourci différente, vous pouvez la remplacer par n’importe quelle combinaison de touches de raccourci qui n’est pas déjà utilisée.

 

Choisir une combinaison de touches

AutoHotkey a ses propres mots et caractères spéciaux qu’il utilise pour représenter les touches du clavier dans ses scripts. Par exemple, la touche Ctrl est représentée par un point d’exclamation. Pour utiliser Ctrl + (Number) comme combinaison de raccourcis clavier, vous pouvez remplacer « CapsLock & » par « ! » dans votre script. Ensuite, les lignes ressembleraient à ceci:

!1::switchDesktopByNumber(1)
!2::switchDesktopByNumber(2)
!3::switchDesktopByNumber(3)
!4::switchDesktopByNumber(4)
!5::switchDesktopByNumber(5)
!6::switchDesktopByNumber(6)
!7::switchDesktopByNumber(7)
!8::switchDesktopByNumber(8)
!9::switchDesktopByNumber(9)

Notez que lorsque vous utilisez un symbole plutôt qu’un mot, vous ne devez pas utiliser « & » dans la syntaxe du script. Cette règle est l’une des règles spéciales qu’AutoHotkey utilise dans son langage de script.

Vous pouvez trouver une liste complète de tous les mots et symboles spéciaux pour les scripts AutoHotkey  autohotkey.com/docs/KeyList.htm.

Une réflexion sur « Comment Utiliser AutoHotkey pour changer de bureau virtuel dans Windows 10 »

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *