コード例 #1
0
        private static long release(long state, int what, long mask, long pressed, long released
                                    , long used, android.view.KeyEvent @event)
        {
            switch (@event.getKeyCharacterMap().getModifierBehavior())
            {
            case android.view.KeyCharacterMap.MODIFIER_BEHAVIOR_CHORDED_OR_TOGGLED:
            {
                if ((state & used) != 0)
                {
                    state &= ~mask;
                }
                else
                {
                    if ((state & pressed) != 0)
                    {
                        state |= what | released;
                    }
                }
                break;
            }

            default:
            {
                state &= ~mask;
                break;
            }
            }
            return(state);
        }
コード例 #2
0
 private static void dispatchKeyEvent(android.view.InputHandler inputHandler, android.view.KeyEvent
                                      @event, long finishedToken)
 {
     android.view.InputQueue.FinishedCallback finishedCallback = android.view.InputQueue
                                                                 .FinishedCallback.obtain(finishedToken);
     inputHandler.handleKey(@event, finishedCallback);
 }
コード例 #3
0
        public override bool onKeyUp(int keyCode, android.view.KeyEvent @event)
        {
            bool a = mLetters.onKeyUp(keyCode, @event);
            bool b = mDigits.onKeyUp(keyCode, @event);

            return(a || b);
        }
コード例 #4
0
        public override bool onKeyDown(android.view.View view, android.text.Editable content
                                       , int keyCode, android.view.KeyEvent @event)
        {
            bool handled;

            switch (keyCode)
            {
            case android.view.KeyEvent.KEYCODE_DEL:
            {
                handled = backspace(view, content, keyCode, @event);
                break;
            }

            case android.view.KeyEvent.KEYCODE_FORWARD_DEL:
            {
                handled = forwardDelete(view, content, keyCode, @event);
                break;
            }

            default:
            {
                handled = false;
                break;
            }
            }
            if (handled)
            {
                adjustMetaAfterKeypress(content);
            }
            return(base.onKeyDown(view, content, keyCode, @event));
        }
コード例 #5
0
        public virtual bool onKeyOther(android.view.View view, android.text.Editable content
                                       , android.view.KeyEvent @event)
        {
            if (@event.getAction() != android.view.KeyEvent.ACTION_MULTIPLE || @event.getKeyCode
                    () != android.view.KeyEvent.KEYCODE_UNKNOWN)
            {
                // Not something we are interested in.
                return(false);
            }
            int selectionStart = android.text.Selection.getSelectionStart(content);
            int selectionEnd   = android.text.Selection.getSelectionEnd(content);

            if (selectionEnd < selectionStart)
            {
                int temp = selectionEnd;
                selectionEnd   = selectionStart;
                selectionStart = temp;
            }
            java.lang.CharSequence text = java.lang.CharSequenceProxy.Wrap(@event.getCharacters
                                                                               ());
            if (text == null)
            {
                return(false);
            }
            content.replace(selectionStart, selectionEnd, text);
            return(true);
        }
コード例 #6
0
 public override bool dispatchKeyEvent(android.view.KeyEvent @event)
 {
     if (@event.getKeyCode() == android.view.KeyEvent.KEYCODE_MENU)
     {
         if (@event.getAction() == android.view.KeyEvent.ACTION_DOWN && @event.getRepeatCount
                 () == 0)
         {
             removeCallbacks(this);
             postDelayed(this, android.view.ViewConfiguration.getLongPressTimeout());
         }
         else
         {
             if (@event.getAction() == android.view.KeyEvent.ACTION_UP)
             {
                 if (mMenuBeingLongpressed)
                 {
                     // It was in cycle mode, so reset it (will also remove us
                     // from being called back)
                     setCycleShortcutCaptionMode(false);
                     return(true);
                 }
                 else
                 {
                     // Just remove us from being called back
                     removeCallbacks(this);
                 }
             }
         }
     }
     // Fall through to normal processing too
     return(base.dispatchKeyEvent(@event));
 }
コード例 #7
0
		public virtual bool onKeyOther(android.widget.TextView widget, android.text.Spannable
			 text, android.view.KeyEvent @event)
		{
			int movementMetaState = getMovementMetaState(text, @event);
			int keyCode = @event.getKeyCode();
			if (keyCode != android.view.KeyEvent.KEYCODE_UNKNOWN && @event.getAction() == android.view.KeyEvent
				.ACTION_MULTIPLE)
			{
				int repeat = @event.getRepeatCount();
				bool handled = false;
				{
					for (int i = 0; i < repeat; i++)
					{
						if (!handleMovementKey(widget, text, keyCode, movementMetaState, @event))
						{
							break;
						}
						handled = true;
					}
				}
				if (handled)
				{
					android.text.method.MetaKeyKeyListener.adjustMetaAfterKeypress(text);
					android.text.method.MetaKeyKeyListener.resetLockedMeta(text);
				}
				return handled;
			}
			return false;
		}
コード例 #8
0
        // no super to call through to
        private void release(android.text.Editable content, object what, android.view.KeyEvent
                             @event)
        {
            int current = content.getSpanFlags(what);

            switch (@event.getKeyCharacterMap().getModifierBehavior())
            {
            case android.view.KeyCharacterMap.MODIFIER_BEHAVIOR_CHORDED_OR_TOGGLED:
            {
                if (current == USED)
                {
                    content.removeSpan(what);
                }
                else
                {
                    if (current == PRESSED)
                    {
                        content.setSpan(what, 0, 0, RELEASED);
                    }
                }
                break;
            }

            default:
            {
                content.removeSpan(what);
                break;
            }
            }
        }
コード例 #9
0
        private android.text.method.KeyListener getKeyListener(android.view.KeyEvent @event
                                                               )
        {
            android.view.KeyCharacterMap kmap = @event.getKeyCharacterMap();
            int kind = kmap.getKeyboardType();

            if (kind == android.view.KeyCharacterMap.ALPHA)
            {
                return(android.text.method.QwertyKeyListener.getInstance(mAutoText, mAutoCap));
            }
            else
            {
                if (kind == android.view.KeyCharacterMap.NUMERIC)
                {
                    return(android.text.method.MultiTapKeyListener.getInstance(mAutoText, mAutoCap));
                }
                else
                {
                    if (kind == android.view.KeyCharacterMap.FULL || kind == android.view.KeyCharacterMap
                        .SPECIAL_FUNCTION)
                    {
                        // We consider special function keyboards full keyboards as a workaround for
                        // devices that do not have built-in keyboards.  Applications may try to inject
                        // key events using the built-in keyboard device id which may be configured as
                        // a special function keyboard using a default key map.  Ideally, as of Honeycomb,
                        // these applications should be modified to use KeyCharacterMap.VIRTUAL_KEYBOARD.
                        return(android.text.method.QwertyKeyListener.getInstanceForFullKeyboard());
                    }
                }
            }
            return(android.text.method.TextKeyListener.NullKeyListener.getInstance());
        }
コード例 #10
0
 /// <summary>Checks an arbitrary input event.</summary>
 /// <remarks>Checks an arbitrary input event.</remarks>
 /// <param name="event">The event.</param>
 /// <param name="nestingLevel">
 /// The nesting level: 0 if called from the base class,
 /// or 1 from a subclass.  If the event was already checked by this consistency verifier
 /// at a higher nesting level, it will not be checked again.  Used to handle the situation
 /// where a subclass dispatching method delegates to its superclass's dispatching method
 /// and both dispatching methods call into the consistency verifier.
 /// </param>
 public void onInputEvent(android.view.InputEvent @event, int nestingLevel)
 {
     if (@event is android.view.KeyEvent)
     {
         android.view.KeyEvent keyEvent = (android.view.KeyEvent)@event;
         onKeyEvent(keyEvent, nestingLevel);
     }
     else
     {
         android.view.MotionEvent motionEvent = (android.view.MotionEvent)@event;
         if (motionEvent.isTouchEvent())
         {
             onTouchEvent(motionEvent, nestingLevel);
         }
         else
         {
             if ((motionEvent.getSource() & android.view.InputDevice.SOURCE_CLASS_TRACKBALL) !=
                 0)
             {
                 onTrackballEvent(motionEvent, nestingLevel);
             }
             else
             {
                 onGenericMotionEvent(motionEvent, nestingLevel);
             }
         }
     }
 }
コード例 #11
0
ファイル: AbsSeekBar.cs プロジェクト: zhouweiaccp/XobotOS
        public override bool onKeyDown(int keyCode, android.view.KeyEvent @event)
        {
            if (isEnabled())
            {
                int progress = getProgress();
                switch (keyCode)
                {
                case android.view.KeyEvent.KEYCODE_DPAD_LEFT:
                {
                    if (progress <= 0)
                    {
                        break;
                    }
                    setProgress(progress - mKeyProgressIncrement, true);
                    onKeyChange();
                    return(true);
                }

                case android.view.KeyEvent.KEYCODE_DPAD_RIGHT:
                {
                    if (progress >= getMax())
                    {
                        break;
                    }
                    setProgress(progress + mKeyProgressIncrement, true);
                    onKeyChange();
                    return(true);
                }
                }
            }
            return(base.onKeyDown(keyCode, @event));
        }
コード例 #12
0
		/// <summary>
		/// Gets the meta state used for movement using the modifiers tracked by the text
		/// buffer as well as those present in the key event.
		/// </summary>
		/// <remarks>
		/// Gets the meta state used for movement using the modifiers tracked by the text
		/// buffer as well as those present in the key event.
		/// The movement meta state excludes the state of locked modifiers or the SHIFT key
		/// since they are not used by movement actions (but they may be used for selection).
		/// </remarks>
		/// <param name="buffer">The text buffer.</param>
		/// <param name="event">The key event.</param>
		/// <returns>The keyboard meta states used for movement.</returns>
		protected internal virtual int getMovementMetaState(android.text.Spannable buffer
			, android.view.KeyEvent @event)
		{
			// We ignore locked modifiers and SHIFT.
			int metaState = (@event.getMetaState() | android.text.method.MetaKeyKeyListener.getMetaState
				(buffer)) & ~(android.text.method.MetaKeyKeyListener.META_ALT_LOCKED | android.text.method.MetaKeyKeyListener
				.META_SYM_LOCKED);
			return android.view.KeyEvent.normalizeMetaState(metaState) & ~android.view.KeyEvent
				.META_SHIFT_MASK;
		}
コード例 #13
0
 public virtual bool performShortcut(int keyCode, android.view.KeyEvent @event, int
                                     flags)
 {
     [email protected] item = findItemWithShortcut(keyCode, @event
                                                                            );
     if (item == null)
     {
         return(false);
     }
     return(item.invoke());
 }
コード例 #14
0
 public virtual bool onKey(android.view.View v, int keyCode, android.view.KeyEvent
                           @event)
 {
     if (@event.getAction() == android.view.KeyEvent.ACTION_UP && keyCode == android.view.KeyEvent
         .KEYCODE_MENU)
     {
         dismiss();
         return(true);
     }
     return(false);
 }
コード例 #15
0
 public virtual bool shouldOverrideKeyEvent(android.webkit.WebView arg0, android.view.KeyEvent arg1)
 {
     global::MonoJavaBridge.JNIEnv @__env = global::MonoJavaBridge.JNIEnv.ThreadEnv;
     if (!IsClrObject)
     {
         return(@__env.CallBooleanMethod(this.JvmHandle, global::android.webkit.WebViewClient._shouldOverrideKeyEvent10686, global::MonoJavaBridge.JavaBridge.ConvertToValue(arg0), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg1)));
     }
     else
     {
         return(@__env.CallNonVirtualBooleanMethod(this.JvmHandle, global::android.webkit.WebViewClient.staticClass, global::android.webkit.WebViewClient._shouldOverrideKeyEvent10686, global::MonoJavaBridge.JavaBridge.ConvertToValue(arg0), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg1)));
     }
 }
コード例 #16
0
ファイル: DialerKeyListener.cs プロジェクト: zffl/androidmono
 protected override int lookup(android.view.KeyEvent arg0, android.text.Spannable arg1)
 {
     global::MonoJavaBridge.JNIEnv @__env = global::MonoJavaBridge.JNIEnv.ThreadEnv;
     if (!IsClrObject)
     {
         return(@__env.CallIntMethod(this.JvmHandle, global::android.text.method.DialerKeyListener._lookup8058, global::MonoJavaBridge.JavaBridge.ConvertToValue(arg0), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg1)));
     }
     else
     {
         return(@__env.CallNonVirtualIntMethod(this.JvmHandle, global::android.text.method.DialerKeyListener.staticClass, global::android.text.method.DialerKeyListener._lookup8058, global::MonoJavaBridge.JavaBridge.ConvertToValue(arg0), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg1)));
     }
 }
コード例 #17
0
 bool android.view.Menu.performShortcut(int arg0, android.view.KeyEvent arg1, int arg2)
 {
     global::MonoJavaBridge.JNIEnv @__env = global::MonoJavaBridge.JNIEnv.ThreadEnv;
     if (!IsClrObject)
     {
         return(@__env.CallBooleanMethod(this.JvmHandle, global::android.view.SubMenu_._performShortcut9028, global::MonoJavaBridge.JavaBridge.ConvertToValue(arg0), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg1), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg2)));
     }
     else
     {
         return(@__env.CallNonVirtualBooleanMethod(this.JvmHandle, global::android.view.SubMenu_.staticClass, global::android.view.SubMenu_._performShortcut9028, global::MonoJavaBridge.JavaBridge.ConvertToValue(arg0), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg1), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg2)));
     }
 }
コード例 #18
0
 public virtual void onUnhandledKeyEvent(android.webkit.WebView arg0, android.view.KeyEvent arg1)
 {
     global::MonoJavaBridge.JNIEnv @__env = global::MonoJavaBridge.JNIEnv.ThreadEnv;
     if (!IsClrObject)
     {
         @__env.CallVoidMethod(this.JvmHandle, global::android.webkit.WebViewClient._onUnhandledKeyEvent10687, global::MonoJavaBridge.JavaBridge.ConvertToValue(arg0), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg1));
     }
     else
     {
         @__env.CallNonVirtualVoidMethod(this.JvmHandle, global::android.webkit.WebViewClient.staticClass, global::android.webkit.WebViewClient._onUnhandledKeyEvent10687, global::MonoJavaBridge.JavaBridge.ConvertToValue(arg0), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg1));
     }
 }
コード例 #19
0
ファイル: ScrollView.cs プロジェクト: zffl/androidmono
 public virtual bool executeKeyEvent(android.view.KeyEvent arg0)
 {
     global::MonoJavaBridge.JNIEnv @__env = global::MonoJavaBridge.JNIEnv.ThreadEnv;
     if (!IsClrObject)
     {
         return(@__env.CallBooleanMethod(this.JvmHandle, global::android.widget.ScrollView._executeKeyEvent11866, global::MonoJavaBridge.JavaBridge.ConvertToValue(arg0)));
     }
     else
     {
         return(@__env.CallNonVirtualBooleanMethod(this.JvmHandle, global::android.widget.ScrollView.staticClass, global::android.widget.ScrollView._executeKeyEvent11866, global::MonoJavaBridge.JavaBridge.ConvertToValue(arg0)));
     }
 }
コード例 #20
0
 void android.view.inputmethod.InputMethodSession.dispatchKeyEvent(int arg0, android.view.KeyEvent arg1, android.view.inputmethod.InputMethodSession_EventCallback arg2)
 {
     global::MonoJavaBridge.JNIEnv @__env = global::MonoJavaBridge.JNIEnv.ThreadEnv;
     if (!IsClrObject)
     {
         @__env.CallVoidMethod(this.JvmHandle, global::android.view.inputmethod.InputMethodSession_._dispatchKeyEvent10252, global::MonoJavaBridge.JavaBridge.ConvertToValue(arg0), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg1), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg2));
     }
     else
     {
         @__env.CallNonVirtualVoidMethod(this.JvmHandle, global::android.view.inputmethod.InputMethodSession_.staticClass, global::android.view.inputmethod.InputMethodSession_._dispatchKeyEvent10252, global::MonoJavaBridge.JavaBridge.ConvertToValue(arg0), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg1), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg2));
     }
 }
コード例 #21
0
ファイル: ContextMenu.cs プロジェクト: zffl/androidmono
 bool android.view.Menu.isShortcutKey(int arg0, android.view.KeyEvent arg1)
 {
     global::MonoJavaBridge.JNIEnv @__env = global::MonoJavaBridge.JNIEnv.ThreadEnv;
     if (!IsClrObject)
     {
         return(@__env.CallBooleanMethod(this.JvmHandle, global::android.view.ContextMenu_._isShortcutKey8692, global::MonoJavaBridge.JavaBridge.ConvertToValue(arg0), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg1)));
     }
     else
     {
         return(@__env.CallNonVirtualBooleanMethod(this.JvmHandle, global::android.view.ContextMenu_.staticClass, global::android.view.ContextMenu_._isShortcutKey8692, global::MonoJavaBridge.JavaBridge.ConvertToValue(arg0), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg1)));
     }
 }
コード例 #22
0
ファイル: Gallery.cs プロジェクト: zffl/androidmono
 public override bool onKeyUp(int arg0, android.view.KeyEvent arg1)
 {
     global::MonoJavaBridge.JNIEnv @__env = global::MonoJavaBridge.JNIEnv.ThreadEnv;
     if (!IsClrObject)
     {
         return(@__env.CallBooleanMethod(this.JvmHandle, global::android.widget.Gallery._onKeyUp11315, global::MonoJavaBridge.JavaBridge.ConvertToValue(arg0), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg1)));
     }
     else
     {
         return(@__env.CallNonVirtualBooleanMethod(this.JvmHandle, global::android.widget.Gallery.staticClass, global::android.widget.Gallery._onKeyUp11315, global::MonoJavaBridge.JavaBridge.ConvertToValue(arg0), global::MonoJavaBridge.JavaBridge.ConvertToValue(arg1)));
     }
 }
コード例 #23
0
ファイル: TabHost.cs プロジェクト: zffl/androidmono
 public override bool dispatchKeyEvent(android.view.KeyEvent arg0)
 {
     global::MonoJavaBridge.JNIEnv @__env = global::MonoJavaBridge.JNIEnv.ThreadEnv;
     if (!IsClrObject)
     {
         return(@__env.CallBooleanMethod(this.JvmHandle, global::android.widget.TabHost._dispatchKeyEvent12023, global::MonoJavaBridge.JavaBridge.ConvertToValue(arg0)));
     }
     else
     {
         return(@__env.CallNonVirtualBooleanMethod(this.JvmHandle, global::android.widget.TabHost.staticClass, global::android.widget.TabHost._dispatchKeyEvent12023, global::MonoJavaBridge.JavaBridge.ConvertToValue(arg0)));
     }
 }
コード例 #24
0
 public virtual bool sendKeyEvent(android.view.KeyEvent arg0)
 {
     global::MonoJavaBridge.JNIEnv @__env = global::MonoJavaBridge.JNIEnv.ThreadEnv;
     if (!IsClrObject)
     {
         return(@__env.CallBooleanMethod(this.JvmHandle, global::android.view.inputmethod.BaseInputConnection._sendKeyEvent10092, global::MonoJavaBridge.JavaBridge.ConvertToValue(arg0)));
     }
     else
     {
         return(@__env.CallNonVirtualBooleanMethod(this.JvmHandle, global::android.view.inputmethod.BaseInputConnection.staticClass, global::android.view.inputmethod.BaseInputConnection._sendKeyEvent10092, global::MonoJavaBridge.JavaBridge.ConvertToValue(arg0)));
     }
 }
コード例 #25
0
		public virtual bool onKeyDown(android.widget.TextView widget, android.text.Spannable
			 text, int keyCode, android.view.KeyEvent @event)
		{
			int movementMetaState = getMovementMetaState(text, @event);
			bool handled = handleMovementKey(widget, text, keyCode, movementMetaState, @event
				);
			if (handled)
			{
				android.text.method.MetaKeyKeyListener.adjustMetaAfterKeypress(text);
				android.text.method.MetaKeyKeyListener.resetLockedMeta(text);
			}
			return handled;
		}
コード例 #26
0
        private bool onContainerKey(android.view.KeyEvent @event)
        {
            int keyCode = @event.getKeyCode();

            if (isInterestingKey(keyCode))
            {
                if (keyCode == android.view.KeyEvent.KEYCODE_BACK)
                {
                    if (@event.getAction() == android.view.KeyEvent.ACTION_DOWN && @event.getRepeatCount
                            () == 0)
                    {
                        if (mOwnerView != null)
                        {
                            android.view.KeyEvent.DispatcherState ds = mOwnerView.getKeyDispatcherState();
                            if (ds != null)
                            {
                                ds.startTracking(@event, this);
                            }
                        }
                        return(true);
                    }
                    else
                    {
                        if (@event.getAction() == android.view.KeyEvent.ACTION_UP && @event.isTracking() &&
                            [email protected]())
                        {
                            setVisible(false);
                            return(true);
                        }
                    }
                }
                else
                {
                    dismissControlsDelayed(ZOOM_CONTROLS_TIMEOUT);
                }
                // Let the container handle the key
                return(false);
            }
            else
            {
                android.view.ViewRootImpl viewRoot = getOwnerViewRootImpl();
                if (viewRoot != null)
                {
                    viewRoot.dispatchKey(@event);
                }
                // We gave the key to the owner, don't let the container handle this key
                return(true);
            }
        }
コード例 #27
0
ファイル: TabHost.cs プロジェクト: zhouweiaccp/XobotOS
 public bool onKey(android.view.View v, int keyCode, android.view.KeyEvent @event)
 {
     switch (keyCode)
     {
     case android.view.KeyEvent.KEYCODE_DPAD_CENTER:
     case android.view.KeyEvent.KEYCODE_DPAD_LEFT:
     case android.view.KeyEvent.KEYCODE_DPAD_RIGHT:
     case android.view.KeyEvent.KEYCODE_DPAD_UP:
     case android.view.KeyEvent.KEYCODE_DPAD_DOWN:
     case android.view.KeyEvent.KEYCODE_ENTER:
     {
         return(false);
     }
     }
     this._enclosing.mTabContent.requestFocus(android.view.View.FOCUS_FORWARD);
     return(this._enclosing.mTabContent.dispatchKeyEvent(@event));
 }
コード例 #28
0
ファイル: TabHost.cs プロジェクト: zhouweiaccp/XobotOS
        public override bool dispatchKeyEvent(android.view.KeyEvent @event)
        {
            bool handled = base.dispatchKeyEvent(@event);

            // unhandled key ups change focus to tab indicator for embedded activities
            // when there is nothing that will take focus from default focus searching
            if (!handled && (@event.getAction() == android.view.KeyEvent.ACTION_DOWN) && (@event
                                                                                          .getKeyCode() == android.view.KeyEvent.KEYCODE_DPAD_UP) && (mCurrentView != null
                                                                                                                                                      ) && (mCurrentView.isRootNamespace()) && (mCurrentView.hasFocus()) && (mCurrentView
                                                                                                                                                                                                                             .findFocus().focusSearch(android.view.View.FOCUS_UP) == null))
            {
                mTabWidget.getChildTabViewAt(mCurrentTab).requestFocus();
                playSoundEffect(android.view.SoundEffectConstants.NAVIGATION_UP);
                return(true);
            }
            return(handled);
        }
コード例 #29
0
 /// <summary>
 /// Notifies the verifier that a given event was unhandled and the rest of the
 /// trace for the event should be ignored.
 /// </summary>
 /// <remarks>
 /// Notifies the verifier that a given event was unhandled and the rest of the
 /// trace for the event should be ignored.
 /// This method should only be called if the event was previously checked by
 /// the consistency verifier using
 /// <see cref="onInputEvent(InputEvent, int)">onInputEvent(InputEvent, int)</see>
 /// and other methods.
 /// </remarks>
 /// <param name="event">The event.</param>
 /// <param name="nestingLevel">
 /// The nesting level: 0 if called from the base class,
 /// or 1 from a subclass.  If the event was already checked by this consistency verifier
 /// at a higher nesting level, it will not be checked again.  Used to handle the situation
 /// where a subclass dispatching method delegates to its superclass's dispatching method
 /// and both dispatching methods call into the consistency verifier.
 /// </param>
 public void onUnhandledEvent(android.view.InputEvent @event, int nestingLevel)
 {
     if (nestingLevel != mLastNestingLevel)
     {
         return;
     }
     if (mRecentEventsUnhandled != null)
     {
         mRecentEventsUnhandled[mMostRecentEventIndex] = true;
     }
     if (@event is android.view.KeyEvent)
     {
         android.view.KeyEvent keyEvent = (android.view.KeyEvent)@event;
         int deviceId = keyEvent.getDeviceId();
         int source   = keyEvent.getSource();
         int keyCode  = keyEvent.getKeyCode();
         android.view.InputEventConsistencyVerifier.KeyState state = findKeyState(deviceId
                                                                                  , source, keyCode, false);
         if (state != null)
         {
             state.unhandled = true;
         }
     }
     else
     {
         android.view.MotionEvent motionEvent = (android.view.MotionEvent)@event;
         if (motionEvent.isTouchEvent())
         {
             mTouchEventStreamUnhandled = true;
         }
         else
         {
             if ((motionEvent.getSource() & android.view.InputDevice.SOURCE_CLASS_TRACKBALL) !=
                 0)
             {
                 if (mTrackballDown)
                 {
                     mTrackballUnhandled = true;
                 }
             }
         }
     }
 }
コード例 #30
0
        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);
        }