public void Text_changed()
 {
     if (!pressed_keys.ContainsKey(last_key) && (last_key != Keys.None))
     {
         KeyPressData new_press = new KeyPressData();
         press_count++;
         new_press.key_down_time  = last_key_time;
         new_press.phrase_key_pos = press_count;
         new_press.key            = last_key;
         if (timer.IsRunning)
         {
             cur_entry.PressTime = last_key_time;
         }
         else
         {
             timer.Start();
         }
         log_manager.Press(last_key, last_key_time);
         if (pressed_keys.Count != 0)
         {
             foreach (KeyValuePair <Keys, KeyPressData> bar in pressed_keys)
             {
                 if (bar.Value.key_down_time < new_press.key_down_time)
                 {
                     cur_entry.type1_impos++;
                 }
             }
         }
         pressed_keys.Add(last_key, new_press);
     }
 }
 public void Key_Up(Keys key)
 {
     if (pressed_keys.ContainsKey(key))
     {
         pressed_keys[key].key_up_time = timer.ElapsedMilliseconds;
         KeyPressData released_key = pressed_keys[key];
         cur_entry.press_data.Add(released_key);
         pressed_keys.Remove(key);
         if (pressed_keys.Count != 0)
         {
             foreach (KeyValuePair <Keys, KeyPressData> bar in pressed_keys)
             {
                 if (bar.Value.key_down_time > released_key.key_down_time)
                 {
                     cur_entry.type2_impos++;
                 }
                 else
                 {
                     cur_entry.type1_impos--;
                     cur_entry.type3_impos++;
                 }
             }
         }
         log_manager.Release(key, released_key.key_up_time);
     }
 }
        private List <KeyPressData> DecodeVectors(int[] tau_vecktor, int[] t_vecktor)
        {
            List <KeyPressData> press_data = new List <KeyPressData>();
            int cur_time = 0;

            press_data.Clear();
            for (int i = 0; i < t_vecktor.Length; i++)
            {
                KeyPressData press = new KeyPressData();
                press.key_down_time = cur_time;
                press.key_up_time   = cur_time + t_vecktor[i];
                press_data.Add(press);
                if (i == t_vecktor.Length - 1)
                {
                    continue;
                }
                cur_time += t_vecktor[i] + tau_vecktor[i];
            }
            return(press_data);
        }