2010-11-02 3 views
8

Fogbugz имеет очень приятную реализацию сочетаний клавиш.Любые хорошие реализации быстрых клавиш в стиле Fogbugz?

Вы попали в область CTRL + ; и следующий нажавший клавишу будут соответствовать элементу пользовательского интерфейса на текущей странице.

Это аккуратно избегает конфликтующим с существующими ярлыками браузера клавиатуры (как это было бы дело, что вы просто пытались добавить CTRL +, CTRL +B .. ярлыки типа).

Еще лучше, после того, как вы нанесли CTRL + ; «Маленькие желтые метки появятся над каждым действием с помощью ярлыка». Таким образом, у вас есть мгновенная ссылка на ярлык на клавиатуре.

Полная подробно здесь: http://fogbugz.stackexchange.com/questions/4310

Кто-нибудь видел JQuery на основе (или другой) реализации, лежащих вокруг, что мы могли бы использовать?

ответ

0

JQ Клавиатурный модуль может быть хороший матч ...

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

+1

Он, похоже, не делает ничего, кроме нажатия клавиш привязки к обработчикам событий, если я что-то не хватает? – J22

1

Есть несколько вещей, которые вы можете сделать, чтобы достичь этого. Чтобы уточнить, вы хотели бы иметь возможность использовать комбинацию клавиш Ctrl + ;, чтобы позволить следующей клавиатуре запускать кусок кода? Если это то, что вы ищете, вы могли бы сделать что-то вроде этого: (в 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"); 
    } 

Я только что сделал это быстро и не проверял, но, надеюсь, вы поймете, что он пытается сделать. Но опять же это всего лишь 15-летнее решение. Если вы установите его в html-шаблоне и попробуйте его, попробуйте Ctrl + ;, а затем нажмите A или B ключ для выполнения соответствующих функций.

Дайте мне знать, если вам нужна дополнительная помощь!

+0

игнорировать консоль.log() (я использовал их для отладки) – BBales

Смежные вопросы