Windows 10: cambie el escritorio virtual mientras está en el escritorio remoto de pantalla completa

28

Tengo 3 escritorios virtuales en Windows 10.
En uno de esos escritorios ejecuto mstsc a pantalla completa.

Para cambiar el escritorio, puedo usar windows + ctrl + izquierda o derecha.
Pero cuando estoy en una pantalla completa mstsc, mstsc captura esta clave y el cambio no funciona.
¿Hay alguna manera de cambiar este comportamiento?

r03
fuente
¡Necesito una respuesta sobre esto también!
Antony
1
Votación, porque esto sería genial. Sería bueno elegir qué combinaciones de teclas de Windows se aplican a RDP o computadora
MikeMurko

Respuestas:

32

¡Estaba buscando una solución a este problema y encontré una!

CTRL+ ALT+ HOMEdevuelve el foco del teclado al host cuando está en Escritorio remoto.
Luego puede hacer WIN+ CTRL+ LEFTo RIGHTcambiar entre escritorios virtuales.
No es lo ideal, pero probablemente tendré un acuerdo de autohotkey con estos 2 atajos.

BignOOse
fuente
1
¡Eso es tan jodidamente genial! Estuve buscando algo así por un tiempo y lo mejor que encontré fue Ctrl + alt + pausa (pausa), que cierra el modo de pantalla completa, ¡es muy incómodo! Te daría recompensa si esto fuera así stackoverflow, pero no puedo hacer esto aquí. Gracias +1!
Kiril Kirov
¡Me encanta tanto, toma mis puntos de vista!
Fedaykin
7

Resulta que en el cliente de escritorio remoto, debe seleccionar "Solo esta computadora" cuando se trata de aplicar la combinación de teclas de Windows.

Recursos locales de escritorio remoto

Antonio
fuente
44
Eso funciona, pero ahora no puedo usar ALT + TAB
r03
1
También tengo el mismo problema. Desearía que hubiera una manera de hacer que ignore solo win + ctrl + left / right
Ege Özcan
1
@ EgeÖzcan hay (más o menos)! Ver esta respuesta
Lucas
4

Primero, quería que las teclas de Windows funcionaran en la computadora remota ( Alt-Tabpor ejemplo), así que tengo "Solo cuando se usa la pantalla completa" para la configuración "Aplicar combinaciones de teclas de Windows".

Luego, dado que muy pocas combinaciones de teclas pueden sacarlo del escritorio remoto cuando está en pantalla completa, debe usarlo CTRL-ALT-HOME, que trae la barra de conexión, pero también devuelve el control a la computadora local.

Así que escribí esta autohotkey guión: switchVirtualDesktopWithRD.ahk . Está completamente basado en este script , así que no me atribuyo crédito. Simplemente lo modifiqué para mis necesidades . Puedes ajustarlo al tuyo ...

En mi caso, solo tengo dos escritorios virtuales: el primero es el principal y el segundo es donde ejecuto un cliente de escritorio remoto de pantalla completa.

Lo que hace el script cuando presiono CTRL-ALT-HOME:

  • Si estoy en el segundo escritorio virtual, en el que ejecuto un cliente de escritorio remoto de pantalla completa, que primero muestra la barra de conexión. Luego presiono la HOMEtecla nuevamente (con CTRLy ALTaún presionada) y vuelvo al primer escritorio principal. Si no hay una sesión de pantalla completa en el segundo escritorio, la primera combinación cambia inmediatamente al primer escritorio.

  • Si estoy en el primer escritorio, cambia al segundo inmediatamente.

En otras palabras, siempre uso CTRL-ALT-HOMEpara cambiar entre escritorios.

electrotipia
fuente
Me gusta esto. Si ejecutamos un script AHK en el equipo remoto (s) (y les configurado para comenzar al inicio de sesión), me pregunto si podríamos traducir una CTRL-WIN-LEFTa CTRL-ALT-HOMEy activar el interruptor de enfoque a la barra de conexión RDP de la AHK remoto. Entonces solo necesita presionar CTRL-WIN-LEFTdos veces para que cambie de escritorio.
Lucas
Lo hice funcionar, pero con un script que se ejecuta solo en la máquina local, no es necesario ahk en el control remoto: D
Luke
3

A partir de la respuesta del electrotipo, tengo un script AHK que permitirá que las teclas de acceso rápido Ctrl+ Win+ Lefty Ctrl+ Win+ Rightcambien los escritorios en la computadora local, desde una sesión RDP de pantalla completa, sin sacrificar ninguna otra tecla dentro de la sesión RDP, es decir, Alt+ Taby similares, todo aún funciona normalmente dentro de la sesión RDP.

Como queremos que la tecla de acceso directo normal funcione en la computadora remota, debe tener "Solo cuando se usa la pantalla completa" para la configuración "Aplicar combinaciones de teclas de Windows" al iniciar la sesión RDP.

De hecho, basé mi script en otro script que encontré en los foros de AHK.

Que hace:

  • Ejecute el script en su máquina local (no en el escritorio remoto). Pegué el mío C:\users\<user>\documents\AutoHotkey.ahkpara que se ejecute cuando empiezo ahk sin argumentos.
  • Si está dentro de una sesión RDP y presiona Ctrl+ Win+ ( Lefto right) el script primero envía Ctrl+ Alt+ Homepara enfocar la barra de título RDP y luego envía la combinación de teclas de cambio de escritorio para cambiar realmente el escritorio.

Nota: se pone un poco defectuoso cuando se usan dos o más escritorios remotos virtuales (por ejemplo, un escritorio virtual local, dos escritorios virtuales con una ventana RDP de pantalla completa en cada uno), pero ahora no tengo tiempo para trabajar en eso. . El problema es que cuando cambia de un escritorio remoto virtual a otro, tiene que desvincular y volver a vincular la tecla de acceso rápido y tiene problemas para detectar esto (aunque no debería hacerlo; la barra de título RDP tiene una clase de ventana diferente pero no t siempre recoge esto).

Guión Ahk:

;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
Luke
fuente
A veces parece que no funciona: encuentro que tengo que soltar y volver a presionar las Ctrl+Winteclas a veces cuando voy de un escritorio local a un control remoto o viceversa. Intente eso si no funciona, o aumente el SLEEP_VAL en la parte superior del script para aumentar el retraso entre el envío Ctrl+Alt+HomeyCtrl+Win+Left
Luke
3

Si tiene un panel táctil, puede probar el gesto de cuatro dedos.

Del Soporte de Microsoft - Gestos del panel táctil para Windows 10

Cambiar de escritorio virtual: coloque cuatro dedos en el panel táctil y deslice hacia la derecha o hacia la izquierda.

Estoy trabajando con dos escritorios virtuales en Windows 10. En uno de esos escritorios estoy accediendo a un Win 7 a través de Escritorio remoto en modo de pantalla completa.

Puedo cambiar entre los dos escritorios virtuales con este único gesto. Esto funciona para mi.

smperez
fuente
-1

Eludí el problema de tener que presionar y soltar las teclas de acceso rápido cambiando el script para que las teclas de acceso rápido se unan cuando se ejecutan y nunca las desatasquen.

Greg
fuente
Aclare y agregue un poco más de contexto a esta respuesta para transmitir exactamente lo que sugiere. Ya sabes, considera agregar alguna referencia a esta respuesta que respalde lo que dices. De lo contrario, lea "¿Por qué necesito 50 reputación para comentar?" Para asegurarse de que comprende cómo puede comenzar a comentar.
Pimp Juice IT