2010-11-02 62 views
8

Fogbugz tiene una muy buena implementación de atajos de teclado.¿Alguna buena implementación de los atajos de teclado estilo Fogbugz?

Marque CTRL + ; y la próxima tecla que acierte corresponderá a un elemento de interfaz de usuario en la página actual.

Esto evita cuidadosamente en conflicto con los métodos abreviados de teclado navegador existentes (como sería el caso de que simplemente intentó añadir CTRL +Un,CTRL + B .. atajos de estilo).

Aún mejor, después de pulsar CTRL + ; "Pequeñas etiquetas amarillas aparecerán sobre cada acción con su acceso directo". Por lo tanto, tiene una referencia de atajo de teclado instantáneo en todo momento.

detalle completo aquí: http://fogbugz.stackexchange.com/questions/4310

Alguien ha visto un jQuery basado (u otro) la aplicación por ahí que podríamos usar?

Respuesta

0

El plug-in JQ teclas de acceso rápido puede ser un buen partido ...

http://code.google.com/p/js-hotkeys/

+1

Parece que no hace mucho, excepto obligar a presionar las teclas a los controladores de eventos, a menos que me falta algo? – J22

1

Hay algunas cosas que puede hacer para lograrlo. Para aclarar, le gustaría poder usar el combo de teclado Ctrl + ; para permitir que la siguiente combinación de teclas active un fragmento de código? Si esto es lo que está buscando, usted podría hacer algo como esto: (en jQuery)

// For getting the function corresponding to the key 
    function getPosition(arrayName,arrayItem) 
    { 
     for(var i=0;i<arrayName.length;i++){ 
     if(arrayName[i]==arrayItem) 
      return i; 
     } 
    } 
     // Written By Ben Bales 


    var ctrlDown = false; // Tells if the cotrol button is currently down 
    var semicolonDown = false; // Tells if the semicolon button is down 
    var allowShortcut = false; // Allows the key following ctrl+; to run a function 
    var keyTimeout = 800; // Allows the following keystroke within this amount of milliseconds after ctrl+; 

    // reset allowShortcut 
    function disableShortcut() 
    { 
     allowShortcut = false; 
     console.log("dead"); 

    }  

    $(document).keydown(function(e){ 
     if(e.keyCode == 17) ctrlDown = true; 
     if(e.keyCode == 186 || e.keyCode == 59) semicolonDown = true; 
     //console.log("Semicolon: "+semicolonDown); 
     //console.log("Ctrl: "+ctrlDown); 


     // If both keys are down, allow a following key to do something 


     if(allowShortcut == true) 
     { 
      var key = e.keyCode; 
      //alert(key); 

       var actionPos = getPosition(keyArray,key); 
       actionArray[actionPos](); 
       allowShortcut = false; 

     } 

     if(ctrlDown == true && semicolonDown == true) 
     { 
      allowShortcut = true; 
      // after a certian amount of time dont allow the following key to do something 
      setTimeout(disableShortcut,keyTimeout); 
     } 

    }); 

    $(document).keyup(function(e){ 
     if(e.keyCode == 17) ctrlDown = false; 
     if(e.keyCode == 186 || e.keyCode == 59) semicolonDown = false; 
    }); 

    // You may want to put your shortcuts in arrays with corresponding keyCodes like so: 

    var actionArray = new Array(doSomething,doSomethingelse); 

    var keyArray = new Array(65,66); 

    // sample actions 

    function doSomething() 
    { 
     alert("did something"); 
    } 

    function doSomethingelse() 
    { 
     alert("did something else"); 
    } 

simplemente he hecho esto de manera rápida y no lo he probado, pero esperamos que pueda entender lo que está tratando de hacer. Pero, de nuevo, es solo una solución de 15 años. Si lo configura en una plantilla html y lo prueba, intente Ctrl + ; y luego presione la tecla A o B para ejecutar sus funciones correspondientes.

¡Avíseme si necesita más ayuda!

+0

ignorar el console.log() 's (los usé para la depuración) – BBales

Cuestiones relacionadas