Keyboard timer: GetTickCount
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Runtime.InteropServices; public class KeyTimer : System.Windows.Forms.Form { private System.ComponentModel.Container components = null; private uint start = 0; private uint stop = 0; [DllImport("kernel32.dll")] public static extern uint GetTickCount(); public KeyTimer() { } [STAThread] static void Main() { Application.Run(new KeyTimer()); } protected override void OnKeyDown(KeyEventArgs args) { start = GetTickCount(); } protected override void OnKeyUp(KeyEventArgs args) { stop = GetTickCount(); uint elapsed = (stop - start); MessageBox.Show(Convert.ToString(args.KeyData) + ", time elapsed: " + Convert.ToString(elapsed) + " msecs"); } }