private bool deleteSelection(android.view.View view, android.text.Editable content
                                     )
        {
            int selectionStart = android.text.Selection.getSelectionStart(content);
            int selectionEnd   = android.text.Selection.getSelectionEnd(content);

            if (selectionEnd < selectionStart)
            {
                int temp = selectionEnd;
                selectionEnd   = selectionStart;
                selectionStart = temp;
            }
            if (selectionStart != selectionEnd)
            {
                content.delete(selectionStart, selectionEnd);
                return(true);
            }
            return(false);
        }
        private bool backspaceOrForwardDelete(android.view.View view, android.text.Editable
                                              content, int keyCode, android.view.KeyEvent @event, bool isForwardDelete)
        {
            // Ensure the key event does not have modifiers except ALT or SHIFT.
            if (!android.view.KeyEvent.metaStateHasNoModifiers(@event.getMetaState() & ~(android.view.KeyEvent
                                                                                         .META_SHIFT_MASK | android.view.KeyEvent.META_ALT_MASK)))
            {
                return(false);
            }
            // If there is a current selection, delete it.
            if (deleteSelection(view, content))
            {
                return(true);
            }
            // Alt+Backspace or Alt+ForwardDelete deletes the current line, if possible.
            if (@event.isAltPressed() || getMetaState(content, META_ALT_ON) == 1)
            {
                if (deleteLine(view, content))
                {
                    return(true);
                }
            }
            // Delete a character.
            int start = android.text.Selection.getSelectionEnd(content);
            int end;

            if (isForwardDelete || @event.isShiftPressed() || getMetaState(content, META_SHIFT_ON
                                                                           ) == 1)
            {
                end = android.text.TextUtils.getOffsetAfter(content, start);
            }
            else
            {
                end = android.text.TextUtils.getOffsetBefore(content, start);
            }
            if (start != end)
            {
                content.delete(System.Math.Min(start, end), System.Math.Max(start, end));
                return(true);
            }
            return(false);
        }
 private bool deleteLine(android.view.View view, android.text.Editable content)
 {
     if (view is android.widget.TextView)
     {
         android.text.Layout layout = ((android.widget.TextView)view).getLayout();
         if (layout != null)
         {
             int line = layout.getLineForOffset(android.text.Selection.getSelectionStart(content
                                                                                         ));
             int start = layout.getLineStart(line);
             int end   = layout.getLineEnd(line);
             if (end != start)
             {
                 content.delete(start, end);
                 return(true);
             }
         }
     }
     return(false);
 }