59 votes

Windows 10: Changer de bureau virtuel tout en étant en mode plein écran bureau à distance

J'ai 3 bureaux virtuels dans Windows 10.
Sur l'un de ces bureaux, j'exécute mstsc en plein écran.

Pour changer de bureau, je peux utiliser windows+ctrl+gauche ou droite.
Mais lorsque je suis en plein écran avec mstsc, cette touche est capturée par mstsc et le changement ne fonctionne pas.
Y a-t-il un moyen de changer ce comportement?

78voto

toka Points 21

J'étais à la recherche d'une solution à ce problème et je viens d'en trouver une!

CTRL + ALT + HOME donne le focus au clavier à l'hôte lorsque vous êtes en Bureau à distance.
Ensuite, vous pouvez faire WIN + CTRL + LEFT ou RIGHT pour basculer entre les bureaux virtuels.
Pas idéal, mais je vais probablement laisser autohotkey gérer ces 2 raccourcis.

14voto

Indika K Points 135

Il s'avère qu'avec le client de bureau à distance, vous devez sélectionner "Uniquement cet ordinateur " lorsqu'il s'agit d'appliquer la combinaison de touches Windows.

Ressources locales du bureau à distance

8voto

electrotype Points 181

Tout d'abord, je voulais que les touches Windows fonctionnent sur l'ordinateur distant (Alt-Tab par exemple), donc j'ai activé l'option "Uniquement en mode plein écran" pour le paramètre "Appliquer les combinaisons de touches Windows".

Ensuite, comme très peu de combinaisons de touches peuvent vous faire sortir du bureau à distance lorsqu'il est en plein écran, vous devez utiliser CTRL-ALT-HOME, ce qui affiche la barre de connexion, mais redonne également le contrôle à l'ordinateur local.

Alors j'ai écrit ce script autohotkey : switchVirtualDesktopWithRD.ahk. Il est entièrement basé sur ce script, donc je n'en prends aucun crédit. Je l'ai simplement modifié pour mes besoins. Vous pouvez l'ajuster selon les vôtres...

Dans mon cas, je n'ai que deux bureaux virtuels : le premier est le principal, et le second est réservé à un client de bureau à distance en plein écran.

Ce que fait le script lorsque j'appuie sur CTRL-ALT-HOME :

  • Si je suis sur le second bureau virtuel, celui où je lance un client de bureau à distance en plein écran, cela affiche d'abord la barre de connexion. Ensuite, j'appuie à nouveau sur la touche HOME (tout en maintenant les touches CTRL et ALT) et je reviens au premier bureau principal. Si aucune session en plein écran n'est en cours sur le second bureau, la première combinaison bascule immédiatement sur le premier bureau.

  • Si je suis sur le premier bureau, cela bascule immédiatement vers le second.

En d'autres termes, j'utilise toujours CTRL-ALT-HOME pour basculer entre les bureaux.

7voto

smperez Points 71

Si vous avez un pavé tactile, vous pouvez essayer le geste des quatre doigts.

De Support Microsoft - Gestes du pavé tactile pour Windows 10

Changer de bureaux virtuels : Placez quatre doigts sur le pavé tactile et balayez vers la droite ou la gauche.

Je travaille avec deux bureaux virtuels dans Windows 10. Sur l'un de ces bureaux, j'accède à un Win 7 via Bureau à distance en mode plein écran.

Je peux basculer entre les deux bureaux virtuels avec ce simple geste. Ça marche pour moi.

6voto

Luke Points 1105

En s'appuyant sur la réponse de electrotype, j'ai un script AHK qui permet d'activer les raccourcis Ctrl+Win+Gauche et Ctrl+Win+Droite pour basculer entre les bureaux sur l'ordinateur local, depuis une session RDP en plein écran, sans sacrifier d'autres touches dans la session RDP - par exemple Alt+Tabulation et autres fonctionnent toujours normalement dans la session RDP.

Comme nous voulons que le raccourci régulier fonctionne sur l'ordinateur distant, vous devez configurer l'option "Uniquement en plein écran" pour le paramètre "Appliquer les combinaisons de touches de la touche Windows" lors du démarrage de la session RDP.

J'ai en fait basé mon script sur un autre script que j'ai trouvé sur les forums AHK.

Ce que ça fait :

  • Exécutez le script sur votre machine locale (pas sur le bureau à distance). J'ai collé le mien dans C:\users\\documents\AutoHotkey.ahk donc il s'exécute quand je démarre AHK sans arguments.
  • Si vous êtes dans une session RDP et que vous appuyez sur Ctrl+Win+(Gauche ou Droite), le script envoie d'abord Ctrl+Alt+Accueil pour mettre le focus sur la barre de titre RDP, puis envoie la combinaison de touches pour réellement basculer entre les bureaux.

Remarque : ça devient un peu bogué lorsque vous utilisez deux bureaux virtuels ou plus (par exemple un bureau virtuel local, deux bureaux virtuels avec une fenêtre RDP en plein écran sur chacun) mais je n'ai pas le temps de travailler dessus pour le moment. Le problème survient lorsque vous passez d'un bureau virtuel distant à un autre, vous devez supprimer puis réinscrire la combinaison de touches et il a du mal à détecter cela (bien que ça ne devrait pas - la barre de titre RDP a une classe de fenêtre différente mais ce n'est pas toujours pris en compte).

Script AHK :

 ;setTimer, windowwatch, 500
#persistant
#usehook
SLEEP_VAL := 500
DEBUG := false
keys_bound := false

while true {
    ;Debug("Waiting")
    sleep, SLEEP_VAL
    keys_bound := WaitBind()
}

WaitBind() {
    WinWaitActive, ahk_class TscShellContainerClass
    Debug("bind")
    hotkey LWin & Left, ctrl_win_left_key, on
    hotkey LWin & Right, ctrl_win_right_key, on
    return true
}

WaitUnbind() {
    WinWaitNotActive, ahk_class TscShellContainerClass
    Debug("unbind")
    hotkey LWin & Left, ctrl_win_left_key, off
    hotkey LWin & Right, ctrl_win_right_key, off
    return false
}

Debug(msg) {
    global DEBUG
    if (DEBUG) {
        tooltip %msg%
        settimer, TooltipClear, 2000
    }
}
return

z_key:
    ; simple script for testing - change the z to 'he'
    send, he
    Debug("done z")
return

j_key:
    ; testing if we can activate the RDP title bar
    send {Ctrl down}{Alt down}{Home}{Alt up}{Ctrl up}
    Debug("done j")
Return

ctrl_win_left_key:
    ; we are intercepting all Win+Left combinations so we have to do Win+Shift+Left and Win+Left manually to preserve them inside the RDP
    GetKeyState, shiftState, Shift
    GetKeyState, ctrlState, Ctrl
    if (shiftState = "D") {
        ; by default in windows Ctrl+Shift+Win+Left will act like Shift+Win+Left - shift takes precedence
        Debug("done shift win left")
        send {Shift down}{LWin down}{Left}{LWin up}{Shift up}
    } else if (ctrlState = "D") {
        Debug("done ctrl win left")
        ; the magic happens here
        send {Ctrl down}{Alt down}{Home}{Alt up}{Ctrl up}
        keys_bound := WaitUnbind()
        ;Sleep, SLEEP_VAL ;give the OS time to focus on the title bar
        send {Ctrl down}{LWin down}{Left}{LWin up}{Ctrl up}
    } else {
        Debug("done win left")
        send {LWin down}{Left}{LWin up}
    }
Return

ctrl_win_right_key:
    ; we are intercepting all Win+Right combinations so we have to do Win+Shift+Right and Win+Right manually to preserve them inside the RDP
    GetKeyState, shiftState, Shift
    GetKeyState, ctrlState, Ctrl
    if (shiftState = "D") {
        ; by default in windows Ctrl+Shift+Win+Left will act like Shift+Win+Left - shift takes precedence
        Debug("done shift win right")
        send {Shift down}{LWin down}{Right}{LWin up}{Shift up}
    } else if (ctrlState = "D") {
        Debug("done ctrl win right")
        ; the magic happens here
        send {Ctrl down}{Alt down}{Home}{Alt up}{Ctrl up}
        keys_bound := WaitUnbind()
        ;Sleep, SLEEP_VAL ;give the OS time to focus on the title bar
        send {Ctrl down}{LWin down}{Right}{LWin up}{Ctrl up}
    } else {
        Debug("done win right")
        send {LWin down}{Right}{LWin up}
    }
Return

TooltipClear:
    ; just a routine to turn off tooltip after x milliseconds
    tooltip
    settimer, TooltipClear, off
Return

windowwatch:
    ifwinactive ahk_class TscShellContainerClass
    {
      Debug("bind")
      hotkey LWin & Left, ctrl_win_left_key, on
      hotkey LWin & Right, ctrl_win_right_key, on
    }
    else
    {
     Debug("unbind")
     hotkey LWin & Left, ctrl_win_left_key, off
     hotkey LWin & Right, ctrl_win_right_key, off
    }
Return

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X