2010-11-02 90 views
8

Fogbugz a une très belle implémentation des raccourcis clavier.Toutes les bonnes implémentations de raccourcis clavier de style Fogbugz?

Vous avez atteint CTRL + ; et la touche suivante que vous touchez correspondra à un élément d'interface utilisateur sur la page en cours.

Cela évite soigneusement en conflit avec les raccourcis clavier existants du navigateur (comme ce serait le cas, il vous suffit essayé d'ajouter CTRL +A, CTRL +B .. raccourcis de style). Encore mieux, après avoir appuyé sur CTRL + ; "De petites étiquettes jaunes apparaissent sur chaque action avec son raccourci." Vous disposez donc d'une référence de raccourci clavier instantanée à tout moment.

détail complet ici: http://fogbugz.stackexchange.com/questions/4310

Quelqu'un at-il vu une implémentation basée jQuery (ou autre) qui traînent que nous pourrions utiliser?

Répondre

0

Le plug-in JQ Hotkeys peut-être un bon match ...

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

+1

Il ne semble pas faire grand-chose, à l'exception de la pression des touches de liaison sur les gestionnaires d'événements, à moins que je ne manque quelque chose? – J22

1

Il y a quelques choses que vous pouvez faire pour y parvenir. Pour clarifier, vous aimeriez pouvoir utiliser le combo clavier Ctrl + ; pour permettre au prochain keydown de déclencher un morceau de code? Si c'est ce que vous cherchez, vous pouvez faire quelque chose comme ceci: (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"); 
    } 

Je viens de faire rapidement et ne l'ai pas testé, mais nous espérons que vous comprendrez ce qu'il essaie de faire. Mais là encore, c'est seulement une solution de 15 ans. Si vous le configurez dans un modèle html et essayez-le, essayez Ctrl + ; puis appuyez sur la touche A ou B pour exécuter leurs fonctions correspondantes. Informez-moi si vous avez besoin d'aide!

+0

ignorer le console.log() (je les ai utilisé pour le débogage) – BBales