语言

KeyEvent 类

定义

用于报告键和按钮事件的对象。

[Android.Runtime.Register("android/view/KeyEvent", DoNotGenerateAcw=true)]
public class KeyEvent : Android.Views.InputEvent, IDisposable
[<Android.Runtime.Register("android/view/KeyEvent", DoNotGenerateAcw=true)>]
type KeyEvent = class
    inherit InputEvent
    interface IParcelable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
继承
属性
实现

注解

用于报告键和按钮事件的对象。

每个按键按按一系列键事件进行描述。 按键以键事件 #ACTION_DOWN开头。 如果键的保留时间足够长且重复,则初始向下键后跟其他键事件,并 #ACTION_DOWN 返回 #getRepeatCount()非零值。 最后一个 #ACTION_UP 键事件是键向上键。 如果按下键已取消,则键上事件将设置 #FLAG_CANCELED 标志。

关键事件通常附带键代码(#getKeyCode())、扫描代码(#getScanCode())和元状态(#getMetaState())。 此类中定义了键代码常量。 扫描代码常量是从 OS 获取的原始设备特定代码,因此通常对应用程序没有意义,除非使用 /> 进行解释。 元状态描述键修饰符(如 #META_SHIFT_ON 或 #META_ALT_ON) 的按下状态。

密钥代码通常与输入设备上的单个密钥对应一对一。 许多键和键组合在不同的输入设备上提供完全不同的功能,因此在解释它们时必须小心。 将键映射到字符时, KeyCharacterMap 始终使用与输入设备关联的项。 请注意,可能有多个密钥输入设备同时处于活动状态,并且每个设备都有其自己的键字符映射。

由于软输入方法可以使用多种创造性的输入方式来输入文本,因此不能保证软键盘上的任何按键都会生成键事件:这留给 IME 的自由裁量权,实际上发送此类事件是不建议的。 对于软输入方法上的任何密钥,不应依赖接收 KeyEvents。 特别是,默认软件键盘永远不会将任何键事件发送到任何面向 Jelly Bean 或更高版本的应用程序,并且只会向面向冰淇淋三明治或更早的应用程序发送删除和返回键的事件。 请注意,无论版本如何,其他软件输入方法都永远不会发送密钥事件。 请考虑使用编辑器操作,例如 android.view.inputmethod.EditorInfo#IME_ACTION_DONE ,如果需要与软件键盘进行特定交互,因为它可让用户更了解应用程序对按键的反应。

与 IME 交互时,框架可能会通过指定单个重复键代码或要插入的字符序列的特殊操作 #ACTION_MULTIPLE 来传递关键事件。

一般情况下,框架无法保证它传递到视图的关键事件始终构成完整的键序列,因为某些事件在传递之前可能会删除或修改这些事件。 视图实现应准备好处理 #FLAG_CANCELED ,并应容忍异常情况,例如接收新 #ACTION_DOWN 情况,而无需先收到 #ACTION_UP 前一键按下。

InputDevice请参阅有关不同类型的输入设备和源如何表示键和按钮的详细信息。

适用于 . 的 android.view.KeyEventJava 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

构造函数

名称 说明
KeyEvent(Int64, Int64, KeyEventActions, Keycode, Int32, MetaKeyStates, Int32, Int32, KeyEventFlags, InputSourceType)

创建新的密钥事件。

KeyEvent(Int64, Int64, KeyEventActions, Keycode, Int32, MetaKeyStates, Int32, Int32, KeyEventFlags)

创建新的密钥事件。

KeyEvent(Int64, Int64, KeyEventActions, Keycode, Int32, MetaKeyStates, Int32, Int32)

创建新的密钥事件。

KeyEvent(Int64, Int64, KeyEventActions, Keycode, Int32, MetaKeyStates)

创建新的密钥事件。

KeyEvent(Int64, Int64, KeyEventActions, Keycode, Int32)

创建新的密钥事件。

KeyEvent(Int64, String, Int32, KeyEventFlags)

为字符串创建一个新键事件。

KeyEvent(IntPtr, JniHandleOwnership)

创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。

KeyEvent(KeyEvent, Int64, Int32)
已过时.

复制现有密钥事件,修改其时间和重复计数。

KeyEvent(KeyEvent)

创建现有密钥事件的确切副本。

KeyEvent(KeyEventActions, Keycode)

创建新的密钥事件。

字段

名称 说明
KeycodeAccessibility
已过时.

密钥代码常量:系统辅助功能密钥。

KeycodeClose
已过时.

键代码常量:AC Close。

KeycodeContextualInsert
已过时.

键代码常量:上下文插入键。

KeycodeContextualQuery
已过时.

键代码常量:上下文查询键。

KeycodeContextualSearch
已过时.

键代码常量:上下文搜索键。

KeycodeDemoApp1
已过时.

密钥代码常量:演示应用程序密钥 #1。

KeycodeDemoApp2
已过时.

密钥代码常量:演示应用程序密钥 #2。

KeycodeDemoApp3
已过时.

密钥代码常量:演示应用程序密钥 #3。

KeycodeDemoApp4
已过时.

密钥代码常量:演示应用程序密钥 #4。

KeycodeDictate
已过时.

键代码常量:开始听写输入字段

KeycodeDoNotDisturb
已过时.

键代码常量:切换“请勿打扰”模式。

KeycodeEmojiPicker
已过时.

关键代码常量:打开表情符号选取器。

KeycodeF13
已过时.

密钥代码常量:F13 键。

KeycodeF14
已过时.

密钥代码常量:F14 键。

KeycodeF15
已过时.

密钥代码常量:F15 键。

KeycodeF16
已过时.

密钥代码常量:F16 键。

KeycodeF17
已过时.

密钥代码常量:F17 键。

KeycodeF18
已过时.

密钥代码常量:F18 键。

KeycodeF19
已过时.

密钥代码常量:F19 键。

KeycodeF20
已过时.

密钥代码常量:F20 键。

KeycodeF21
已过时.

密钥代码常量:F21 键。

KeycodeF22
已过时.

密钥代码常量:F22 键。

KeycodeF23
已过时.

密钥代码常量:F23 键。

KeycodeF24
已过时.

密钥代码常量:F24 键。

KeycodeFeaturedApp1
已过时.

密钥代码常量:特色应用程序密钥 #1。

KeycodeFeaturedApp2
已过时.

密钥代码常量:特色应用程序密钥 #2。

KeycodeFeaturedApp3
已过时.

密钥代码常量:特色应用程序密钥 #3。

KeycodeFeaturedApp4
已过时.

密钥代码常量:特色应用程序密钥 #4。

KeycodeFullscreen
已过时.

关键代码常量:切换全屏模式(在当前应用程序上)。

KeycodeKeyboardBacklightDown
已过时.

键代码常量:键盘反光。

KeycodeKeyboardBacklightToggle
已过时.

键代码常量:键盘反光开关。

KeycodeKeyboardBacklightUp
已过时.

键代码常量:键盘反光。

KeycodeLock
已过时.

键代码常量:锁定屏幕。

KeycodeMacro1
已过时.

键代码常量:用户可通过系统自定义其使用情况的按钮。

KeycodeMacro2
已过时.

键代码常量:用户可通过系统自定义其使用情况的按钮。

KeycodeMacro3
已过时.

键代码常量:用户可通过系统自定义其使用情况的按钮。

KeycodeMacro4
已过时.

键代码常量:用户可通过系统自定义其使用情况的按钮。

KeycodeNew
已过时.

密钥代码常量:AC New。

KeycodePrint
已过时.

关键代码常量:打印。

KeycodeRecentApps
已过时.

关键代码常量:打开最近的应用视图(a.

KeycodeScreenshot
已过时.

关键代码常量:拍摄屏幕截图。

KeycodeStylusButtonPrimary
已过时.

键代码常量:触笔桶上的主按钮。

KeycodeStylusButtonSecondary
已过时.

键代码常量:触笔桶上的辅助按钮。

KeycodeStylusButtonTail
已过时.

键代码常量:触笔尾端上的按钮。

KeycodeStylusButtonTertiary
已过时.

关键代码常量:触笔桶上的第三步按钮。

KeycodeVideoApp1
已过时.

密钥代码常量:视频应用程序密钥 #1。

KeycodeVideoApp2
已过时.

密钥代码常量:视频应用程序密钥 #2。

KeycodeVideoApp3
已过时.

密钥代码常量:视频应用程序密钥 #3。

KeycodeVideoApp4
已过时.

密钥代码常量:视频应用程序密钥 #4。

KeycodeVideoApp5
已过时.

密钥代码常量:视频应用程序密钥 #5。

KeycodeVideoApp6
已过时.

密钥代码常量:视频应用程序密钥 #6。

KeycodeVideoApp7
已过时.

密钥代码常量:视频应用程序密钥 #7。

KeycodeVideoApp8
已过时.

密钥代码常量:视频应用程序密钥 #8。

MaxKeycode
已过时.

指定此 API 级别定义的最大密钥代码。

属性

名称 说明
Action

检索此密钥事件的操作。

Characters

对于具有键代码#ACTION_MULTIPLE的事件的特殊情况#KEYCODE_UNKNOWN,这是与事件关联的字符的原始字符串。

Class

返回此 Object的运行时类。

(继承自 Object)
Creator

获取 KeyEvent 实例的可包裹创建者。

Device

获取此事件来自的设备。

(继承自 InputEvent)
DeviceId

获取此事件来自的设备 ID。 零的 ID 表示事件不是来自物理设备,并且映射到默认键映射。 其他数字是任意的,不应依赖于这些值。

DisplayLabel

获取此键的主字符。

DownTime

在时间基中 android.os.SystemClock#uptimeMillis 检索最新键关闭事件的时间。

EventTime

检索发生此事件的时间( android.os.SystemClock#uptimeMillis 以时间基为单位)。

Flags

返回此键事件的标志。

Handle

基础 Android 实例的句柄。

(继承自 Object)
HasNoModifiers

如果未按下任何修饰键,则返回 true。

IsAltPressed

返回 ALT 元键的按下状态。

IsCanceled

对于 #ACTION_UP 事件,指示已根据该 #FLAG_CANCELED事件取消。

IsCapsLockOn

返回 CAPS LOCK 元键的锁定状态。

IsCtrlPressed

返回 Ctrl 元键的按下状态。

IsFunctionPressed

返回 FUNCTION 元键的按下状态。

IsLongPress

对于 #ACTION_DOWN 事件,指示已根据该 #FLAG_LONG_PRESS事件取消。

IsMetaPressed

返回 META 元键的按下状态。

IsNumLockOn

返回 NUM LOCK 元键的锁定状态。

IsPrintingKey

如果此键生成字形,则返回 true。

IsScrollLockOn

返回 SCROLL LOCK 元键的锁定状态。

IsShiftPressed

返回 SHIFT 元键的按下状态。

IsSymPressed

返回 SYM 元键的按下状态。

IsSystem

这是系统密钥吗? 系统键不能用于菜单快捷方式。

IsTracking

对于 #ACTION_UP 事件,指示该事件仍在根据其初始向下事件 #FLAG_TRACKING跟踪。

JniIdentityHashCode

获取互操作运行时分配给此Java对等的标识哈希代码。

(继承自 Object)
JniManagedPeerState

用于报告键和按钮事件的对象。

(继承自 JavaObject)
JniPeerMembers

获取用于 Android 绑定运行时的.NET使用的 JNI 对等元数据。

KeyCharacterMap

获取 KeyCharacterMap 与键盘设备关联的设备。

KeyCode

检索密钥事件的键代码。

MaxKeyCode

返回最大键码。

MetaState

返回元键的状态。

ModifierMetaStateMask

获取包含所有有效修饰键元状态位的掩码。

Modifiers

返回修饰键的状态。

Number

获取与键关联的数字或符号。

PeerReference

获取此Java对等方的 JNI 对象引用。

(继承自 Object)
RepeatCount

检索事件的重复计数。

ScanCode

检索此密钥事件的硬件密钥 ID。

Source

获取事件源。

ThresholdClass

获取.NET用于 Android 绑定运行时的 JNI 类句柄。

ThresholdType

获取 android 绑定运行时.NET使用的托管类型。

UnicodeChar

获取由指定键和元键状态组合生成的 Unicode 字符。

方法

名称 说明
ChangeAction(KeyEvent, KeyEventActions)

创建新的键事件,该事件与给定的键事件相同,但其操作将替换为给定的值。

ChangeFlags(KeyEvent, KeyEventFlags)

创建新的键事件,该事件与给定的键事件相同,但其标志将替换为给定值。

ChangeTimeRepeat(KeyEvent, Int64, Int32, KeyEventFlags)

创建新的键事件,该事件与给定的键事件相同,但其事件时间和重复计数将替换为给定的值。

ChangeTimeRepeat(KeyEvent, Int64, Int32)

创建新的键事件,该事件与给定的键事件相同,但其事件时间和重复计数将替换为给定的值。

Clone()

创建并返回此对象的副本。

(继承自 Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

用于报告键和按钮事件的对象。

(继承自 JavaObject)
DescribeContents()

描述此 Parcelable 封送表示形式中包含的特殊对象类型。

(继承自 InputEvent)
Dispatch(KeyEvent+ICallback, KeyEvent+DispatcherState, Object)

将此密钥事件调度到回调接收器。

Dispatch(KeyEvent+ICallback)
已过时.

将此密钥事件调度到回调接收器。

Dispose()

释放此Java对等方持有的资源。

(继承自 Object)
Dispose(Boolean)

释放此Java对等方持有的资源。

(继承自 Object)
DisposeUnlessReferenced()

用于报告键和按钮事件的对象。

(继承自 JavaObject)
Equals(Object)

用于报告键和按钮事件的对象。

(继承自 JavaObject)
Equals(Object)

指示其他对象是否“等于”此对象。

(继承自 Object)
GetDeadChar(Int32, Int32)

获取通过将重音放在字符 c 上生成的字符。

GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
GetKeyData(KeyCharacterMap+KeyData)
已过时.

获取给定密钥代码的字符转换数据。

GetMatch(Char[], Int32)
已过时.

获取此键事件可以使用给定元状态生成的第一个候选字符。

GetMatch(Char[], MetaKeyStates)

获取字符数组中可由指定键代码生成的第一个字符。

GetMatch(Char[])

获取字符数组中可由指定键代码生成的第一个字符。

GetUnicodeChar(Int32)
已过时.

获取具有指定元状态的此键事件生成的 Unicode 字符。

GetUnicodeChar(MetaKeyStates)

获取由指定键和元键状态组合生成的 Unicode 字符。

HasModifiers(MetaKeyStates)

如果仅按下指定的修饰符键,则返回 true。

IsFromSource(InputSourceType)

确定事件是否来自给定源。

(继承自 InputEvent)
IsGamepadButton(Keycode)

如果指定的键码是游戏板按钮,则返回 true。

IsMediaSessionKey(Int32)

返回是否将此密钥发送到 android.media.session.MediaSession.Callback 未处理的密钥。

IsModifierKey(Keycode)

如果此键代码是修饰键,则返回 true。

JavaFinalize()
已过时.

当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。

(继承自 Object)
KeyCodeFromString(String)

按符号名称(如“KEYCODE_A”)或等效的数字常量(如“29”)获取键码。

KeyCodeToString(Keycode)

返回一个字符串,表示指定键码的符号名称,例如“KEYCODE_A”、“KEYCODE_DPAD_UP”或等效的数字常量(如“1001”(如果未知)。

MetaStateHasModifiers(MetaKeyStates, MetaKeyStates)

如果仅根据指定的元状态按下指定的修饰键,则返回 true。

MetaStateHasNoModifiers(MetaKeyStates)

如果未根据指定的元状态按下任何修饰键,则返回 true。

NormalizeMetaState(MetaKeyStates)

规范化指定的元状态。

Notify()

唤醒正在等待此对象的监视器的单个线程。

(继承自 Object)
NotifyAll()

唤醒正在等待此对象的监视器的所有线程。

(继承自 Object)
SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

用于报告键和按钮事件的对象。

(继承自 JavaObject)
SetSource(InputSourceType)

设置生成此密钥事件的输入源。

StartTracking()

调用这一点 Callback#onKeyDown ,让系统通过最后一次(可能包括长按)跟踪键。

ToArray<T>()

从此Java数组包装器创建托管数组。

(继承自 Object)
ToString()

返回对象的字符串表示形式。

(继承自 Object)
UnregisterFromRuntime()

从互操作运行时取消注册此Java对等。

(继承自 Object)
Wait()

使当前线程等待,直到唤醒它,通常是通过 em 通知/em< 或 >em<interrupted>/em<。><>

(继承自 Object)
Wait(Int64, Int32)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。

(继承自 Object)
Wait(Int64)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。

(继承自 Object)
WriteToParcel(Parcel, ParcelableWriteFlags)

将此对象平展到一个地块。

显式接口实现

名称 说明
IJavaPeerable.Disposed()

用于报告键和按钮事件的对象。

(继承自 JavaObject)
IJavaPeerable.Finalized()

用于报告键和按钮事件的对象。

(继承自 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

用于报告键和按钮事件的对象。

(继承自 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

用于报告键和按钮事件的对象。

(继承自 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

用于报告键和按钮事件的对象。

(继承自 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

用于报告键和按钮事件的对象。

(继承自 JavaObject)
IJavaPeerable.UnregisterFromRuntime()

从运行时的Java对象查找中删除此实例。

扩展方法

名称 说明
GetJniTypeName(IJavaPeerable)

获取实例 self类型的 JNI 名称。

JavaAs<TResult>(IJavaPeerable)

尝试强制self键入TResult,检查强制是否在Java端有效。

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

用于报告键和按钮事件的对象。

TryJavaCast<TResult>(IJavaPeerable, TResult)

尝试强制self键入TResult,检查强制是否在Java端有效。

适用于