Recientemente cambié a la distribución del teclado Dvorak como un pequeño experimento. Una de las partes más difíciles de la transición ha sido lidiar con las teclas de acceso rápido. La mayoría de las teclas de acceso rápido están diseñadas con QWERTY en mente y, para empeorar las cosas, las teclas de acceso rápido parecen estar extremadamente limitadas a la memoria muscular.
En lugar de volver a aprender todas las teclas de acceso rápido, he escrito un guión para traducir la autohotkey Dvorak Estirada de Espalda a QWERTY cuando el Ctrl, Alt, o Winse pulsan las teclas en combinación con otras teclas. Funciona maravillosamente en todos los lugares que he probado, excepto Visual Studio '08. Parece que las pulsaciones de teclas se detectan antes de que autohotkey pueda traducirlas.
¿Por qué sucede esto y cómo lo soluciono?
A continuación se muestra un extracto (desde el principio) de mi guión:
; control + letter
^;::^z
^q::^x
^j::^c
^k::^v
Actualización: el script funciona bien en Win7 con ahk, vs08 y coderush recién instalados. La máquina con la que tengo problemas está ejecutando Vista. ¿Alguna idea sobre cómo diagnosticar más?
Actualización 2: El script funciona bien con Vista y 2010 beta 2. Parece ser algo con solo vs 08 + vista. Probaré una nueva instalación de vs08 esta noche.
fuente
Solo quiero agregar un par de puntos a la solución encontrada por el propio OP.
1) El problema no es que AHK y VS se ejecuten con diferentes permisos; es solo que las teclas de acceso rápido creadas por un script que se ejecuta en un modo no administrador no funcionarían en aplicaciones que se ejecutan en el modo de administración , pero no habría ningún problema si se al revés.
2) No es necesario compilar el script necesariamente, solo configure autohotkey.exe para que se ejecute en el modo de administrador (eso es lo que hago), o alternativamente, cree un acceso directo al script en particular y configúrelo para que se ejecute siempre en modo de administrador. (por cierto, solo para señalar, no hay ganancia de rendimiento al ejecutar una versión compilada de un script AHK, porque el código aún se interpreta, es solo que ahora el intérprete está incrustado en el ejecutable creado)
fuente
Esto se debe a una función de seguridad llamada Aislamiento de privilegios de interfaz de usuario (UIPI) , que forma parte del Control de cuentas de usuario (UAC).
Hay varias soluciones alternativas enumeradas en las preguntas frecuentes:
En general, no recomiendo ejecutar un script como administrador para solucionar este problema, ya que tiene efectos secundarios que pueden ser inesperados o no deseados. Por ejemplo, cualquier programa con el que se inicie el script
Run
también se ejecutará como administrador. El script también tendrá permisos de escritura innecesarios para varias carpetas, como Archivos de programa. Un poco de código incorrecto (código malicioso copiado y pegado desde algún lugar o código con un error) podría causar más daño de esta manera.Por supuesto, tampoco recomiendo las dos últimas opciones. Eso deja solo Run with UI Access , que se puede habilitar y usar como se describe anteriormente.
fuente
Aparentemente, existe una solución para esto.
De la documentación Program.htm # Installer_uiAccess .
Hilo del foro por Lexikos
Extracto:
El enlace de descarga al archivo ahk está roto en el foro pero lo encontré en Github: EnableUIAccess.ahk
fuente