protected void OnSendKey(KeyboardKey letter, bool backspace = false)
 {
     if (SendKey != null)
     {
         if (!backspace)
         {
             if (!shiftKey)
             {
                 SendKey(letter.DefaultValue);
             }
             else
             {
                 SendKey(letter.ShiftValue);
             }
         }
         else
         {
             if (CurrentlySelected != null)
             {
                 if (CurrentlySelected.Text.Length - 1 >= 0)
                 {
                     CurrentlySelected.Text = CurrentlySelected.Text.Remove(CurrentlySelected.Text.Length - 1, 1);
                 }
             }
         }
     }
     if (shiftKey && !capsKey)
     {
         shiftKey = false;
     }
 }
        private void B_Click(object sender, RoutedEventArgs e)
        {
            System.Diagnostics.Debug.WriteLine(((Button)sender).Content);
            FrameworkElement letter = (FrameworkElement)((Button)sender);
            KeyboardKey      key    = lines[(int)letter.GetValue(Grid.RowProperty)][(int)letter.GetValue(Grid.ColumnProperty)];



            if (key.IsCapsKey)
            {
                capsKey = !capsKey;
                if (capsKey)
                {
                    shiftKey = true;
                }
                else
                {
                    shiftKey = false;
                }
            }
            else if (key.IsShiftKey)
            {
                shiftKey = !shiftKey;
                capsKey  = false;
            }
            else
            {
                OnSendKey(key, key.IsBackspace);
            }
            RefreshKeyboard();
        }