2011-01-04 18 views

Respuesta

3

No creo que el código de tecla sea diferente.

Puede usar e.ctrlKey para conocer mejor si se presionó la tecla de control.

Parece Flash can not tell which one is pressed cualquiera (ya sea o codificado incorrectamente).

+0

Se abstraen. P.ej. Puedo elegir una tonelada de opciones diferentes para cada uno de ellos en mi configuración del Teclado de Ubuntu. –

+0

Definitivamente puede escribir software que diferencie entre los dos en un nivel bajo, por lo que no, no puede abstraerse en el nivel del hardware. Sin embargo, probablemente esté abstraído en el nivel del sistema operativo. –

+0

MSIE puede diferenciar la tecla Ctrl izquierda y derecha, ver mi respuesta sobre ese punto. –

6

Solo una nota rápida: no basaría una arquitectura/diseño en la disponibilidad de la tecla de control derecha; es posible que muchos teclados portátiles no tengan dos teclas de control.

+1

+1 para obtener información útil. – alex

1

MSIE proporciona una propiedad ctrlLeft en la mayoría de los eventos. Los valores de las propiedades son:

  • true si la tecla izquierda se presiona durante el evento
  • false si la tecla izquierda no se ha pulsado.

Puede combinar event.ctrlKey y event.ctrlLeft para determinar si se ha pulsado la tecla Ctrl derecha:

if (event.ctrlKey) { 
    if (event.ctrlLeft) { 
     // left Ctrl key pressed 
    } else { 
     // right Ctrl key pressed 
    } 
} else { 
    // no Ctrl key pressed 
} 

Tenga en cuenta que la propiedad ctrlLeft en un keyup no está definido porque la tecla Ctrl no se presiona más.

Probado bajo MSIE7 y MSIE9. No funciona en Firefox.

Ver http://help.dottoro.com/ljqlvhuf.php para más detalles.

+0

Desafortunadamente no es muy útil si solo es IE. – alex

1

Si rastreamos se encuentra la misma clave se utiliza para ambos (17) .. Creo que no es posible diferenciar

1

no sé si estaba disponible cuando este se le pidió, pero usted puede distinguir izquierda-derecha-ctrl, así como alt y shift. Ahora puede usar las propiedades KeyboardEvent.DOM_KEY_LOCATION_ * para hacer esta distinción.

Ver Can javascript tell the difference between left and right shift key?

Tenga en cuenta, sin embargo, he descubierto que Chrome parece tener un defecto en su aplicación. Ver How can I distinguish left- and right- shift, ctrl, and alt keys onkeyup in Chrome with Javascript

1

Hay event.location propiedad de tecla CTRL izquierda será 1 para una correcta 2, se puede comprobar la compatibilidad con exploradores en canIuse

if (e.which == 17) { 
    if (event.location == 1) { 
     // left ctrl key 
    } else if (event.location == 2) { 
     // right ctrl key 
    } 
} 
Cuestiones relacionadas