語言

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()值為非零。 最後一個關鍵事件是 a #ACTION_UP 鍵上升。 若按鍵被取消,鍵上事件將觸發 #FLAG_CANCELED 旗標。

金鑰事件通常會伴隨金鑰碼()、#getKeyCode()掃描碼(#getScanCode())和元狀態(#getMetaState())。 此類別定義了關鍵碼常數。 掃描碼常數是從作業系統取得的原始裝置特定程式碼,因此除非使用 KeyCharacterMap. 元狀態描述按鍵修飾符 #META_SHIFT_ON 如 或 #META_ALT_ON的按鍵狀態。

鍵碼通常與輸入裝置上的個別鍵一一對應。 許多按鍵和按鍵組合在不同輸入裝置上功能差異很大,因此解讀時必須謹慎。 將按鍵映射到字元時,務必使用與輸入裝置相關的 。KeyCharacterMap 請注意,可能同時有多個按鍵輸入裝置在運作,每個裝置都有自己的按鍵字元映射。

由於軟輸入法可以使用多種且創新的文字輸入方式,無法保證軟鍵盤上的任何按鍵都會產生關鍵事件:這由 IME 自行決定,事實上不鼓勵發送此類事件。 你絕不應該依賴在軟輸入法中接收任何鍵的 KeyEvents。 特別是,預設的軟體鍵盤永遠不會向任何針對 Jelly Bean 或更早版本的應用程式發送任何按鍵事件,只會在某些按鍵時發送刪除鍵和返回鍵的事件給針對 Ice Cream Sandwich 或更早應用程式的應用程式。 請注意,其他軟體輸入法可能永遠不會傳送關鍵事件,不論版本為何。 可以考慮使用編輯器操作,例如 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 屬性授權中所述的詞彙使用。

建構函式

名稱 Description
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)

建立一個新的關鍵事件。

欄位

名稱 Description
KeycodeAccessibility
已淘汰.

關鍵代碼常數:系統可及性鍵。

KeycodeClose
已淘汰.

關鍵代碼常數:AC 關閉。

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 新。

KeycodePrint
已淘汰.

關鍵代碼常數:列印。

KeycodeRecentApps
已淘汰.

關鍵程式碼不變:要開啟最近應用程式檢視(a.

KeycodeScreenshot
已淘汰.

關鍵程式碼常數:截圖。

KeycodeStylusButtonPrimary
已淘汰.

鍵碼常數:唱針筆筒上的主按鈕。

KeycodeStylusButtonSecondary
已淘汰.

關鍵密碼常數:觸控筆筆筒上的次要按鈕。

KeycodeStylusButtonTail
已淘汰.

鍵碼常數:觸控筆尾端的一個按鈕。

KeycodeStylusButtonTertiary
已淘汰.

關鍵密碼常數:唱針筆筒上的第三按鈕。

KeycodeVideoApp1
已淘汰.

鍵碼常數:Video Application 鍵號 #1。

KeycodeVideoApp2
已淘汰.

關鍵代碼常數:Video Application key #2。

KeycodeVideoApp3
已淘汰.

鍵碼常數:Video Application 鍵號 #3。

KeycodeVideoApp4
已淘汰.

鍵碼常數:Video Application 鍵號 #4。

KeycodeVideoApp5
已淘汰.

鍵碼常數:視訊應用鍵號 #5。

KeycodeVideoApp6
已淘汰.

鍵碼常數:視訊應用鍵 #6。

KeycodeVideoApp7
已淘汰.

關鍵代碼常數:Video Application key #7。

KeycodeVideoApp8
已淘汰.

鍵碼常數:Video Application 鍵號 #8。

MaxKeycode
已淘汰.

指定此 API 層級定義的最大金鑰碼。

屬性

名稱 Description
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 meta 鍵的按鍵狀態。

IsCanceled

對於#ACTION_UP事件, 表示該事件已被取消。#FLAG_CANCELED

IsCapsLockOn

回傳大寫 LOCK 元鍵的鎖定狀態。

IsCtrlPressed

回傳 CTRL 元鍵的按下狀態。

IsFunctionPressed

回傳 FUNCTION 元鍵的按下狀態。

IsLongPress

對於#ACTION_DOWN事件, 表示該事件已被取消。#FLAG_LONG_PRESS

IsMetaPressed

回傳 META 元鍵的按鍵狀態。

IsNumLockOn

回傳 NUM LOCK 元金鑰的鎖定狀態。

IsPrintingKey

如果此金鑰產生字形,則回傳為真。

IsScrollLockOn

回傳 SCROLL LOCK 元金鑰的鎖定狀態。

IsShiftPressed

回傳 SHIFT 元鍵的按鍵狀態。

IsSymPressed

回傳 SYM 元鍵的按鍵狀態。

IsSystem

這是系統金鑰嗎? 系統鍵無法用於選單快捷鍵。

IsTracking

對於 #ACTION_UP 事件, 表示該事件仍在從初始下跌事件開始追蹤,依照 #FLAG_TRACKING。

JniIdentityHashCode

取得由互通執行時指派給此 Java 對等端的身份雜湊碼。

(繼承來源 Object)
JniManagedPeerState

用於回報按鍵與按鈕事件的物件。

(繼承來源 JavaObject)
JniPeerMembers

取得 .NET 用於 Android 綁定執行時的 JNI 節點元資料。

KeyCharacterMap

會跟 KeyCharacterMap 鍵盤裝置綁定。

KeyCode

取得該金鑰事件的金鑰碼。

MaxKeyCode

回傳最大鍵碼。

MetaState

回傳元鍵的狀態。

ModifierMetaStateMask

會得到一個包含所有有效修飾鍵元狀態位元的遮罩。

Modifiers

回傳修飾鍵的狀態。

Number

取得與金鑰相關的數字或符號。

PeerReference

取得這個 Java 節點的 JNI 物件參考。

(繼承來源 Object)
RepeatCount

取得該事件的重複次數。

ScanCode

取得此金鑰事件的硬體金鑰 ID。

Source

找出事件的源頭。

ThresholdClass

取得 .NET 用於 Android 綁定執行時的 JNI 類別處理柄。

ThresholdType

取得 .NET 用於 Android 綁定執行時所使用的受管理型別。

UnicodeChar

取得由指定金鑰與元金鑰狀態組合產生的 Unicode 字元。

方法

名稱 Description
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)

透過強調字元來塑造出那個角色。

GetHashCode()

回傳物件的雜湊碼值。

(繼承來源 Object)
GetKeyData(KeyCharacterMap+KeyData)
已淘汰.

取得特定按鍵碼的字元轉換資料。

GetMatch(Char[], Int32)
已淘汰.

取得這個關鍵事件能在特定元狀態下產生的第一個候選角色。

GetMatch(Char[], MetaKeyStates)

取得由指定鍵碼可產生的字元陣列中的第一個字元。

GetMatch(Char[])

取得由指定鍵碼可產生的字元陣列中的第一個字元。

GetUnicodeChar(Int32)
已淘汰.

取得由此關鍵事件產生的 Unicode 字元,並帶有指定的元狀態。

GetUnicodeChar(MetaKeyStates)

取得由指定金鑰與元金鑰狀態組合產生的 Unicode 字元。

HasModifiers(MetaKeyStates)

如果只按下指定的修飾鍵,則會回傳真值。

IsFromSource(InputSourceType)

判斷事件是否來自給定來源。

(繼承來源 InputEvent)
IsGamepadButton(Keycode)

如果指定的鍵碼是遊戲手把按鈕,則會回傳為真。

IsMediaSessionKey(Int32)

如果未處理,會回傳此金鑰是否會送達。android.media.session.MediaSession.Callback

IsModifierKey(Keycode)

如果這個鍵碼是修飾鍵,則回傳為真。

JavaFinalize()
已淘汰.

當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。

(繼承來源 Object)
KeyCodeFromString(String)

以符號名稱(如「KEYCODE_A」)或等效的數值常數(如「29」)取得鍵碼。

KeyCodeToString(Keycode)

回傳一個代表指定鍵碼符號名稱的字串,如「KEYCODE_A」、「KEYCODE_DPAD_UP」,或若未知則為等效數值常數如「1001」。

MetaStateHasModifiers(MetaKeyStates, MetaKeyStates)

如果只按指定的修飾鍵,根據指定的元狀態按下,則返回真。

MetaStateHasNoModifiers(MetaKeyStates)

若未依指定元狀態按下修飾鍵,則回傳真值。

NormalizeMetaState(MetaKeyStates)

標準化指定的元狀態。

Notify()

喚醒一個正在該物件監視器上等待的執行緒。

(繼承來源 Object)
NotifyAll()

喚醒所有等待該物件監視器的執行緒。

(繼承來源 Object)
SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

用於回報按鍵與按鈕事件的物件。

(繼承來源 JavaObject)
SetSource(InputSourceType)

設定產生此關鍵事件的輸入來源。

StartTracking()

將此標記為 Late Callback#onKeyDown ,系統會追蹤按鍵直到最後的上行(可能還包括長按)。

ToArray<T>()

從這個 Java 陣列包裝器建立一個受管理陣列。

(繼承來源 Object)
ToString()

回傳物件的字串表示。

(繼承來源 Object)
UnregisterFromRuntime()

將此 Java 節點從互通執行時中取消註冊。

(繼承來源 Object)
Wait()

導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。

(繼承來源 Object)
Wait(Int64, Int32)

會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。

(繼承來源 Object)
Wait(Int64)

會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。

(繼承來源 Object)
WriteToParcel(Parcel, ParcelableWriteFlags)

將中的這個物件扁平化為 Parcel。

明確介面實作

名稱 Description
IJavaPeerable.Disposed()

用於回報按鍵與按鈕事件的物件。

(繼承來源 JavaObject)
IJavaPeerable.Finalized()

用於回報按鍵與按鈕事件的物件。

(繼承來源 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

用於回報按鍵與按鈕事件的物件。

(繼承來源 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

用於回報按鍵與按鈕事件的物件。

(繼承來源 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

用於回報按鍵與按鈕事件的物件。

(繼承來源 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

用於回報按鍵與按鈕事件的物件。

(繼承來源 JavaObject)
IJavaPeerable.UnregisterFromRuntime()

用於回報按鍵與按鈕事件的物件。

擴充方法

名稱 Description
GetJniTypeName(IJavaPeerable)

取得實例 self類型的 JNI 名稱。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

執行 Android 執行時檢查型別轉換。

JavaCast<TResult>(IJavaObject)

用於回報按鍵與按鈕事件的物件。

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於