2009-05-08 8 views
10

Al leer cualquiera de thesequestions o el EmacsWiki article sobre la asignación de Bloq Mayús al control en emacs en Windows, las mejores respuestas parecen implicar el registro. Mi pregunta es qué puede hacer un usuario cuando no puede modificar el registro de la máquina porque no tiene derechos de administrador. ¿Hay alguna manera de hacer el mapeo desde dentro de emacs? This article viene tan cerca, incluso diciendo: "Como la gente ha mencionado, puede, por supuesto, asignar Caps-Lock a otras teclas, por ejemplo, la tecla Control". Pero no puedo encontrar la manera de representar la tecla de control (usando various references que se ven bastante amplia pero podría no ser Windows-céntrica), intentando cosas comoAsignación de mayúsculas Bloqueo al control desde Emacs en Windows

(setq w32-enable-caps-lock nil) 
(global-set-key [capslock] '[control]) 

y

(setq w32-enable-caps-lock nil) 
(global-set-key [capslock] 'ctl-x-map) 

que don' parece que funciona

Respuesta

8

Sé que esto realmente no responde a su pregunta, pero Trey Jackson básicamente explicó el problema. Para detectar solo la clave de control se requiere un gancho de teclado de bajo nivel en Windows, que no creo que Emacs implemente.

Una forma (que implica un programa externo, pero que no requiere administración correcta) es utilizar AutoHotkey. Todo lo que necesita es el siguiente script de 2 líneas:

CapsLock::Ctrl 
LCtrl::Capslock 

Usted tendrá que ejecutar este script cada vez que Emacs es abierta, pero por suerte Autohotkey es una aplicación bastante bajo perfil (por lo general toma alrededor de unos pocos cientos Kb de memoria solamente). Puede, por ejemplo, ejecutar esta secuencia de comandos en sus archivos .emacs para que su clave de control y clave de bloqueo se intercambien siempre que se abra emacs.

+0

Bien hecho haciendo una copia de seguridad de mi solución supuesta y buscando otra forma. Miré brevemente a AutoHotKey y asumí que debe requerir derechos de administrador, pero parece funcionar como un hechizo. Editaré la pregunta y agregaré algunos enlaces relevantes. –

+0

Corrígeme si me equivoco, pero la ortografía en la segunda línea del ejemplo de script debe ser "LCtrl :: Bloq Mayús" en lugar de "LCtrl :: Cpaslock" –

+0

Sí, por supuesto, tiene razón. Fijo. – polyglot

6

Creo que no funciona porque Windows (o X) no pasa un evento real para [capslock] o [control] - es una tecla modificadora, como [shift]. Presionar una tecla modificadora no hace que la aplicación reciba una pulsación de tecla, pero si presiona un modificador y una segunda tecla (no modificador), obtiene la pulsación de tecla.

Por ejemplo [a] y [A] son dos claves diferentes, una es la "a" regular y la otra es esencialmente "shift-a". Estoy seguro de que podría configurar Windows para que el "shift-a" realmente envíe una "z" o algo así.

Debido [capslock], [control], [shift], [meta] son todas las teclas de modificación, que no generan eventos clave en sí mismas para las aplicaciones.

En resumen, Emacs no obtiene un evento clave [control] que puede reasignar, obtiene un evento C-a. Esto generalmente se hace mediante la combinación obvia de las claves [control] y [a]. Pero, el evento podría generarse con una pulsación de tecla diferente, digamos [F10] o incluso [y] (confuso, sí).

Así es como lo entiendo. Las aclaraciones son bienvenidas, por supuesto.

+0

Sí, este es el sentido que estaba recibiendo, pero gracias por expresarlo mucho mejor de lo que podría haberlo hecho. –

1

La forma más sencilla de reasignar CapsLock en Windows es descargar esta utilidad CapsLockChanger, seleccione una tecla para asignarla a (Control) y colóquela en el menú Inicio-> Inicio.

Se queda en la bandeja, hace el trabajo en la reasignación de teclas y no requiere perder el registro.

0

No necesita necesariamente derechos de administrador para modificar el registro.
De hecho, el Registro de Windows es un recurso segmentado, muy parecido a un sistema de archivos, y puede tener permisos granulares en varias ramas y nodos dentro del registro. ¿Está seguro de que su suposición de que no puede cambiar el registro es correcta? Creo que es cierto por defecto en Vista, pero no en Windows anterior.

+0

El método habitual de reasignación de teclas es de muy bajo nivel y por máquina (los cambios van a algún lugar en HKLM \ SYSTEM), por lo que los derechos de administrador son obligatorios. –

Cuestiones relacionadas