void keyboard_TouchDown(object sender, TouchEventArgs e)
{
e.TouchDevice.Capture(sender as IInputElement);
Point p = e.GetTouchPoint(sender as IInputElement).Position;
KeyAssignment key_code = get_key(p.X, p.Y, e.TouchDevice);
if (key_code == null) return;
click_sound.Play();
if (key_code.UnshiftedCodePoint == 0x0008) { this.DoBackspace(); return; }
if (key_code.UnshiftedCodePoint == 0x000A && this.submit_hit_handler != null) { submit_hit_handler(); return; }
if (is_shifted)
this.Inject(((char)key_code.ShiftedCodePoint).ToString());
else
this.Inject(((char)key_code.UnshiftedCodePoint).ToString());
if (parent_frame != null)
window_manager.UpdateZOrder(parent_frame, true);
}