2012-04-27 276 views
1

是否有可能必須使用兩個按鍵,例如,它會累積每個按鍵的按下時間,例如左鍵和右鍵,所以每次點擊其中一個鍵時他們會累積按下的時間,如果再次按下相同的按鍵,它會增加時間,因此最後每個按鍵都會按下總時間。計算按鍵在鍵盤上按下的時間長度

這怎麼辦?

+1

在什麼語言?很難回答這種問題,但沒有說明您使用的語言或環境。 – DangerMonkey 2012-04-27 17:07:35

回答

2

取決於平臺上的相當多。但事件驅動的平臺如果將事件關鍵和關鍵事件視爲事件(大多數情況下包括.net,java和Windows),事情就很容易了。

只要聽取按鍵事件,並記錄它發生的時間。當您獲得同一個鍵的鍵盤事件時,只需從您錄製的時間中減去發生的時間即可。兩者之間的差異將是按鍵的持續時間。

根據您的平臺處理按鍵重複的方式,您可能會在獲得按鍵之前獲取同一按鍵的多個按鍵。只記錄每個鍵的第一個(當然是從最後一次鍵入或應用程序開始)。而且,由於您一次可以按多個鍵,如果您想正確執行此操作,則可以記住多個鍵的鍵入時間。

如果您想要追蹤總時間,那麼在鍵盤上找到該時間差,然後將其添加到該鍵的運行總數中。

在JS:

(function() { 
    var output = document.getElementById('output'), 
     totalTime = {}, 
     pressed = {}; 

    window.onkeydown = function(e) { 
     if (e.which in pressed) return; 
     pressed[e.which] = e.timeStamp; 
    }; 

    window.onkeyup = function(e) { 
     if (!(e.which in pressed)) return; 
     var duration = (e.timeStamp - pressed[e.which])/1000; 
     if (!(e.which in totalTime)) totalTime[e.which] = 0; 
     totalTime[e.which] += duration; 
     output.innerHTML += 
      '<p>Key ' + e.which + ' was pressed for ' + 
      duration + ' seconds this time' + 
      '(' + totalTime[e.which] + ' total)</p>'; 
     delete pressed[e.which]; 
    }; 
})(); 
+0

嗨,謝謝你的回答,請你看看這個,它是我在這個網站上發現的唯一一個,所以它應該是在相同的概念,除了我想獲得每個關鍵的累計和總時間按下,所以你必須看到按下同一個按鍵時累計的時間,例如按鍵37顯示按下了多長時間的總時間。請幫助http://jsfiddle.net/EeXVX/ – Nina 2012-04-27 17:25:04

+1

只需持續時間,並將其添加到該密鑰的運行總數。像'totalTime [e.which] + =持續時間;'。 – cHao 2012-04-27 17:38:08

+0

你能否複製粘貼它給我,非常感謝var output = document.getElementById('output'), pressed = {}; window.onkeydown = function(e){ if(pressed [e.which])return; 按[e.which] = e.timeStamp; }; window.onkeyup = function(e){ if(!pressed [e.which])return; var duration =(e.timeStamp - pressed [e.which])/ 1000; output.innerHTML + ='

Key'+ e.which +'was'for'+ duration +'seconds

'; 按[e.which] = 0; }; – Nina 2012-04-27 17:45:52

相關問題