59 votes

Windows 10 : changer de bureau virtuel en mode bureau à distance plein écran

J'ai 3 bureaux virtuels sous Windows 10.
Sur l'un de ces bureaux, je lance mstsc fullscreen.

Pour changer de bureau, je peux utiliser Windows+ctrl+gauche ou droite.
Mais lorsque je suis dans un mstsc plein écran, cette touche est capturée par le mstsc et la commutation ne fonctionne pas.
Existe-t-il un moyen de modifier ce comportement ?

78voto

toka Points 21

Je cherchais une solution à ce problème et je viens d'en trouver une !

CTRL + ALT + HOME redonne le focus clavier à l'hôte lorsqu'il est dans le bureau à distance.
Alors vous pouvez faire WIN + CTRL + LEFT o RIGHT pour passer d'un bureau virtuel à l'autre.
Ce n'est pas idéal, mais je vais probablement demander à autohotkey de s'occuper de ces deux raccourcis.

14voto

Indika K Points 135

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

Remote Desktop Local Resources

8voto

electrotype Points 181

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

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

Alors j'ai écrit ceci autohotkey script : switchVirtualDesktopWithRD.ahk . Il est entièrement basé sur ce script donc je n'en prends pas le crédit. Je l'ai simplement modifié pour mes besoins . Vous pouvez l'ajuster à la vôtre...

Dans mon cas, je n'ai que deux bureaux virtuels : le premier est le bureau principal, et le second est celui où j'exécute un client de bureau à distance en plein écran.

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

  • Si je suis sur le deuxième bureau virtuel, celui où j'exécute un client de bureau à distance en plein écran, le premier affiche la barre de connexion. J'appuie ensuite sur le bouton HOME (avec CTRL y ALT toujours pressé) et je suis de retour au premier bureau principal. Si aucune session plein écran n'est en cours sur le deuxième bureau, la première combinaison bascule immédiatement sur le premier bureau.

  • Si je suis sur le premier bureau, il passe immédiatement au second.

En d'autres termes, j'utilise toujours CTRL-ALT-HOME pour passer d'un bureau à l'autre.

7voto

smperez Points 71

Si vous disposez d'un pavé tactile, vous pouvez essayer le geste des quatre doigts.

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

Changez de bureau virtuel : Placez quatre doigts sur le pavé tactile et faites glisser vers la droite ou la gauche.

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

Je peux passer d'un bureau virtuel à l'autre d'un seul geste. Cela fonctionne pour moi.

6voto

Luke Points 1105

Bâtiment hors La réponse de electrotype J'ai un AHK script qui va permettre de Ctrl + Win + Left y Ctrl + Win + Right des touches de raccourci pour changer de bureau sur l'ordinateur local, à partir d'une session RDP en plein écran, sans sacrifier d'autres touches dans la session RDP - c'est à dire Alt + Tab et similaires fonctionnent toujours normalement au sein de la session RDP.

Comme nous voulons que la touche de raccourci ordinaire fonctionne sur l'ordinateur distant, vous devez avoir "Only when using the full screen" pour le paramètre "Apply Windows key combinaitons" lors du démarrage de la session RDP.

En fait, j'ai basé mon script sur un autre script que j'ai trouvé sur les forums de l'AHK.

Ce qu'il fait :

  • Exécutez le script sur votre machine locale (pas sur le bureau distant). J'ai collé le mien dans C:\users\<user>\documents\AutoHotkey.ahk donc il s'exécute quand je lance ahk sans arguments.
  • Si vous êtes à l'intérieur d'une session RDP et que vous appuyez sur Ctrl + Win +( Left o right ) le script envoie d'abord Ctrl + Alt + Home pour mettre en évidence la barre de titre RDP, puis envoie la combinaison de touches " switch desktop " pour changer réellement de bureau.

Note : il y a un petit bug lorsqu'on utilise deux ou plusieurs bureaux virtuels à distance (par exemple, un bureau virtuel local, deux bureaux virtuels avec une fenêtre RDP plein écran sur chacun d'eux) mais je n'ai pas le temps de travailler dessus pour le moment. Le problème est que lorsque vous passez d'un bureau virtuel à distance à un autre, vous devez délier et lier à nouveau le raccourci clavier et il a du mal à le détecter (alors qu'il ne devrait pas - la barre de titre RDP a une classe de fenêtre différente mais il ne le détecte pas toujours).

Ahk script :

;setTimer, windowwatch, 500
#persistent
#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