package uixt

type KeyMeta int

const (
	KMEmpty     KeyMeta = 0     // As a `null`
	KMCapLocked KeyMeta = 0x100 // SHIFT key locked in CAPS mode.
	KMAltLocked KeyMeta = 0x200 // ALT key locked.
	KMSymLocked KeyMeta = 0x400 // SYM key locked.
	KMSelecting KeyMeta = 0x800 // Text is in selection mode.
	// KMAltOn        KeyMeta = 0x02     // This mask is used to check whether one of the ALT meta keys is pressed.
	// KMAltLeftOn    KeyMeta = 0x10     // This mask is used to check whether the left ALT meta key is pressed.
	// KMAltRightOn   KeyMeta = 0x20     // This mask is used to check whether the right the ALT meta key is pressed.
	// KMShiftOn      KeyMeta = 0x1      // This mask is used to check whether one of the SHIFT meta keys is pressed.
	// KMShiftLeftOn  KeyMeta = 0x40     // This mask is used to check whether the left SHIFT meta key is pressed.
	// KMShiftRightOn KeyMeta = 0x80     // This mask is used to check whether the right SHIFT meta key is pressed.
	// KMSymOn        KeyMeta = 0x4      // This mask is used to check whether the SYM meta key is pressed.
	// KMFunctionOn   KeyMeta = 0x8      // This mask is used to check whether the FUNCTION meta key is pressed.
	// KMCtrlOn       KeyMeta = 0x1000   // This mask is used to check whether one of the CTRL meta keys is pressed.
	// KMCtrlLeftOn   KeyMeta = 0x2000   // This mask is used to check whether the left CTRL meta key is pressed.
	// KMCtrlRightOn  KeyMeta = 0x4000   // This mask is used to check whether the right CTRL meta key is pressed.
	// KMMetaOn       KeyMeta = 0x10000  // This mask is used to check whether one of the META meta keys is pressed.
	// KMMetaLeftOn   KeyMeta = 0x20000  // This mask is used to check whether the left META meta key is pressed.
	// KMMetaRightOn  KeyMeta = 0x40000  // This mask is used to check whether the right META meta key is pressed.
	// KMCapsLockOn   KeyMeta = 0x100000 // This mask is used to check whether the CAPS LOCK meta key is on.
	// KMNumLockOn    KeyMeta = 0x200000 // This mask is used to check whether the NUM LOCK meta key is on.
	// KMScrollLockOn KeyMeta = 0x400000 // This mask is used to check whether the SCROLL LOCK meta key is on.
	// KMShiftMask            = KMShiftOn | KMShiftLeftOn | KMShiftRightOn
	// KMAltMask              = KMAltOn | KMAltLeftOn | KMAltRightOn
	// KMCtrlMask             = KMCtrlOn | KMCtrlLeftOn | KMCtrlRightOn
	// KMMetaMask             = KMMetaOn | KMMetaLeftOn | KMMetaRightOn
)

type KeyFlag int

const (
	// KFWokeHere This mask is set if the device woke because of this key event.
	// Deprecated
	KFWokeHere KeyFlag = 0x1

	// KFSoftKeyboard This mask is set if the key event was generated by a software keyboard.
	KFSoftKeyboard KeyFlag = 0x2

	// KFKeepTouchMode This mask is set if we don't want the key event to cause us to leave touch mode.
	KFKeepTouchMode KeyFlag = 0x4

	// KFFromSystem This mask is set if an event was known to come from a trusted part
	// of the system.  That is, the event is known to come from the user,
	// and could not have been spoofed by a third party component.
	KFFromSystem KeyFlag = 0x8

	// KFEditorAction This mask is used for compatibility, to identify enter keys that are
	// coming from an IME whose enter key has been auto-labelled "next" or
	// "done".  This allows TextView to dispatch these as normal enter keys
	// for old applications, but still do the appropriate action when receiving them.
	KFEditorAction KeyFlag = 0x10

	// KFCanceled When associated with up key events, this indicates that the key press
	// has been canceled.  Typically this is used with virtual touch screen
	// keys, where the user can slide from the virtual key area on to the
	// display: in that case, the application will receive a canceled up
	// event and should not perform the action normally associated with the
	// key.  Note that for this to work, the application can not perform an
	// action for a key until it receives an up or the long press timeout has expired.
	KFCanceled KeyFlag = 0x20

	// KFVirtualHardKey This key event was generated by a virtual (on-screen) hard key area.
	// Typically this is an area of the touchscreen, outside of the regular
	// display, dedicated to "hardware" buttons.
	KFVirtualHardKey KeyFlag = 0x40

	// KFLongPress This flag is set for the first key repeat that occurs after the long press timeout.
	KFLongPress KeyFlag = 0x80

	// KFCanceledLongPress Set when a key event has `KFCanceled` set because a long
	// press action was executed while it was down.
	KFCanceledLongPress KeyFlag = 0x100

	// KFTracking Set for `ACTION_UP` when this event's key code is still being
	// tracked from its initial down.  That is, somebody requested that tracking
	// started on the key down and a long press has not caused
	// the tracking to be canceled.
	KFTracking KeyFlag = 0x200

	// KFFallback Set when a key event has been synthesized to implement default behavior
	// for an event that the application did not handle.
	// Fallback key events are generated by unhandled trackball motions
	// (to emulate a directional keypad) and by certain unhandled key presses
	// that are declared in the key map (such as special function numeric keypad
	// keys when numlock is off).
	KFFallback KeyFlag = 0x400

	// KFPredispatch Signifies that the key is being predispatched.
	// KFPredispatch KeyFlag = 0x20000000

	// KFStartTracking Private control to determine when an app is tracking a key sequence.
	// KFStartTracking KeyFlag = 0x40000000

	// KFTainted Private flag that indicates when the system has detected that this key event
	// may be inconsistent with respect to the sequence of previously delivered key events,
	// such as when a key up event is sent but the key was not down.
	// KFTainted KeyFlag = 0x80000000
)

type KeyCode int

const (
	_ KeyCode = 0 // Unknown key code.

	// KCSoftLeft Soft Left key
	// Usually situated below the display on phones and used as a multi-function
	// feature key for selecting a software defined function shown on the bottom left
	// of the display.
	KCSoftLeft KeyCode = 1

	// KCSoftRight Soft Right key.
	// Usually situated below the display on phones and used as a multi-function
	// feature key for selecting a software defined function shown on the bottom right
	// of the display.
	KCSoftRight KeyCode = 2

	// KCHome Home key.
	// This key is handled by the framework and is never delivered to applications.
	KCHome KeyCode = 3

	KCBack    KeyCode = 4  // Back key
	KCCall    KeyCode = 5  // Call key
	KCEndCall KeyCode = 6  // End Call key
	KC0       KeyCode = 7  // '0' key
	KC1       KeyCode = 8  // '1' key
	KC2       KeyCode = 9  // '2' key
	KC3       KeyCode = 10 // '3' key
	KC4       KeyCode = 11 // '4' key
	KC5       KeyCode = 12 // '5' key
	KC6       KeyCode = 13 // '6' key
	KC7       KeyCode = 14 // '7' key
	KC8       KeyCode = 15 // '8' key
	KC9       KeyCode = 16 // '9' key
	KCStar    KeyCode = 17 // '*' key
	KCPound   KeyCode = 18 // '#' key

	// KCDPadUp KeycodeDPadUp Directional Pad Up key.
	// May also be synthesized from trackball motions.
	KCDPadUp KeyCode = 19

	// KCDPadDown Directional Pad Down key.
	// May also be synthesized from trackball motions.
	KCDPadDown KeyCode = 20

	// KCDPadLeft Directional Pad Left key.
	// May also be synthesized from trackball motions.
	KCDPadLeft KeyCode = 21

	// KCDPadRight Directional Pad Right key.
	// May also be synthesized from trackball motions.
	KCDPadRight KeyCode = 22

	// KCDPadCenter Directional Pad Center key.
	// May also be synthesized from trackball motions.
	KCDPadCenter KeyCode = 23

	// KCVolumeUp Volume Up key.
	// Adjusts the speaker volume up.
	KCVolumeUp KeyCode = 24

	// KCVolumeDown Volume Down key.
	// Adjusts the speaker volume down.
	KCVolumeDown KeyCode = 25

	// KCPower Power key.
	KCPower KeyCode = 26

	// KCCamera Camera key.
	// Used to launch a camera application or take pictures.
	KCCamera KeyCode = 27

	KCClear      KeyCode = 28 // Clear key
	KCa          KeyCode = 29 // 'a' key
	KCb          KeyCode = 30 // 'b' key
	KCc          KeyCode = 31 // 'c' key
	KCd          KeyCode = 32 // 'd' key
	KCe          KeyCode = 33 // 'e' key
	KCf          KeyCode = 34 // 'f' key
	KCg          KeyCode = 35 // 'g' key
	KCh          KeyCode = 36 // 'h' key
	KCi          KeyCode = 37 // 'i' key
	KCj          KeyCode = 38 // 'j' key
	KCk          KeyCode = 39 // 'k' key
	KCl          KeyCode = 40 // 'l' key
	KCm          KeyCode = 41 // 'm' key
	KCn          KeyCode = 42 // 'n' key
	KCo          KeyCode = 43 // 'o' key
	KCp          KeyCode = 44 // 'p' key
	KCq          KeyCode = 45 // 'q' key
	KCr          KeyCode = 46 // 'r' key
	KCs          KeyCode = 47 // 's' key
	KCt          KeyCode = 48 // 't' key
	KCu          KeyCode = 49 // 'u' key
	KCv          KeyCode = 50 // 'v' key
	KCw          KeyCode = 51 // 'w' key
	KCx          KeyCode = 52 // 'x' key
	KCy          KeyCode = 53 // 'y' key
	KCz          KeyCode = 54 // 'z' key
	KCComma      KeyCode = 55 // ',' key
	KCPeriod     KeyCode = 56 // '.' key
	KCAltLeft    KeyCode = 57 // Left Alt modifier key
	KCAltRight   KeyCode = 58 // Right Alt modifier key
	KCShiftLeft  KeyCode = 59 // Left Shift modifier key
	KCShiftRight KeyCode = 60 // Right Shift modifier key
	KCTab        KeyCode = 61 // Tab key
	KCSpace      KeyCode = 62 // Space key

	// KCSym Symbol modifier key.
	// Used to enter alternate symbols.
	KCSym KeyCode = 63

	// KCExplorer Explorer special function key.
	// Used to launch a browser application.
	KCExplorer KeyCode = 64

	// KCEnvelope Envelope special function key.
	// Used to launch a mail application.
	KCEnvelope KeyCode = 65

	// KCEnter Enter key.
	KCEnter KeyCode = 66

	// KCDel Backspace key.
	// Deletes characters before the insertion point, unlike `KCForwardDel`.
	KCDel KeyCode = 67

	KCGrave        KeyCode = 68 // '`' (backtick) key
	KCMinus        KeyCode = 69 // '-'
	KCEquals       KeyCode = 70 // '=' key
	KCLeftBracket  KeyCode = 71 // '[' key
	KCRightBracket KeyCode = 72 // ']' key
	KCBackslash    KeyCode = 73 // '\' key
	KCSemicolon    KeyCode = 74 // '' key
	KCApostrophe   KeyCode = 75 // ''' (apostrophe) key
	KCSlash        KeyCode = 76 // '/' key
	KCAt           KeyCode = 77 // '@' key

	// KCNum Number modifier key.
	// Used to enter numeric symbols.
	// This key is not Num Lock; it is more like `KCAltLeft` and is
	// interpreted as an ALT key by {@link android.text.method.MetaKeyKeyListener}.
	KCNum KeyCode = 78

	// KCHeadsetHook Headset Hook key.
	// Used to hang up calls and stop media.
	KCHeadsetHook KeyCode = 79

	// KCFocus Camera Focus key.
	// Used to focus the camera.
	// *Camera* focus
	KCFocus KeyCode = 80

	KCPlus             KeyCode = 81 // '+' key.
	KCMenu             KeyCode = 82 // Menu key.
	KCNotification     KeyCode = 83 // Notification key.
	KCSearch           KeyCode = 84 // Search key.
	KCMediaPlayPause   KeyCode = 85 // Play/Pause media key.
	KCMediaStop        KeyCode = 86 // Stop media key.
	KCMediaNext        KeyCode = 87 // Play Next media key.
	KCMediaPrevious    KeyCode = 88 // Play Previous media key.
	KCMediaRewind      KeyCode = 89 // Rewind media key.
	KCMediaFastForward KeyCode = 90 // Fast Forward media key.

	// KCMute Mute key.
	// Mutes the microphone, unlike `KCVolumeMute`
	KCMute KeyCode = 91

	// KCPageUp Page Up key.
	KCPageUp KeyCode = 92

	// KCPageDown Page Down key.
	KCPageDown KeyCode = 93

	// KCPictSymbols Picture Symbols modifier key.
	// Used to switch symbol sets (Emoji, Kao-moji).
	// switch symbol-sets (Emoji,Kao-moji)
	KCPictSymbols KeyCode = 94

	// KCSwitchCharset Switch Charset modifier key.
	// Used to switch character sets (Kanji, Katakana).
	// switch char-sets (Kanji,Katakana)
	KCSwitchCharset KeyCode = 95

	// KCButtonA A Button key.
	// On a game controller, the A button should be either the button labeled A
	// or the first button on the bottom row of controller buttons.
	KCButtonA KeyCode = 96

	// KCButtonB B Button key.
	// On a game controller, the B button should be either the button labeled B
	// or the second button on the bottom row of controller buttons.
	KCButtonB KeyCode = 97

	// KCButtonC C Button key.
	// On a game controller, the C button should be either the button labeled C
	// or the third button on the bottom row of controller buttons.
	KCButtonC KeyCode = 98

	// KCButtonX X Button key.
	// On a game controller, the X button should be either the button labeled X
	// or the first button on the upper row of controller buttons.
	KCButtonX KeyCode = 99

	// KCButtonY Y Button key.
	// On a game controller, the Y button should be either the button labeled Y
	// or the second button on the upper row of controller buttons.
	KCButtonY KeyCode = 100

	// KCButtonZ Z Button key.
	// On a game controller, the Z button should be either the button labeled Z
	// or the third button on the upper row of controller buttons.
	KCButtonZ KeyCode = 101

	// KCButtonL1 L1 Button key.
	// On a game controller, the L1 button should be either the button labeled L1 (or L)
	// or the top left trigger button.
	KCButtonL1 KeyCode = 102

	// KCButtonR1 R1 Button key.
	// On a game controller, the R1 button should be either the button labeled R1 (or R)
	// or the top right trigger button.
	KCButtonR1 KeyCode = 103

	// KCButtonL2 L2 Button key.
	// On a game controller, the L2 button should be either the button labeled L2
	// or the bottom left trigger button.
	KCButtonL2 KeyCode = 104

	// KCButtonR2 R2 Button key.
	// On a game controller, the R2 button should be either the button labeled R2
	// or the bottom right trigger button.
	KCButtonR2 KeyCode = 105

	// KCButtonTHUMBL Left Thumb Button key.
	// On a game controller, the left thumb button indicates that the left (or only)
	// joystick is pressed.
	KCButtonTHUMBL KeyCode = 106

	// KCButtonTHUMBR Right Thumb Button key.
	// On a game controller, the right thumb button indicates that the right
	// joystick is pressed.
	KCButtonTHUMBR KeyCode = 107

	// KCButtonStart Start Button key.
	// On a game controller, the button labeled Start.
	KCButtonStart KeyCode = 108

	// KCButtonSelect Select Button key.
	// On a game controller, the button labeled Select.
	KCButtonSelect KeyCode = 109

	// KCButtonMode Mode Button key.
	// On a game controller, the button labeled Mode.
	KCButtonMode KeyCode = 110

	// KCEscape Escape key.
	KCEscape KeyCode = 111

	// KCForwardDel Forward Delete key.
	// Deletes characters ahead of the insertion point, unlike `KCDel`.
	KCForwardDel KeyCode = 112

	KCCtrlLeft   KeyCode = 113 // Left Control modifier key
	KCCtrlRight  KeyCode = 114 // Right Control modifier key
	KCCapsLock   KeyCode = 115 // Caps Lock key
	KCScrollLock KeyCode = 116 // Scroll Lock key
	KCMetaLeft   KeyCode = 117 // Left Meta modifier key
	KCMetaRight  KeyCode = 118 // Right Meta modifier key
	KCFunction   KeyCode = 119 // Function modifier key
	KCSysRq      KeyCode = 120 // System Request / Print Screen key
	KCBreak      KeyCode = 121 // Break / Pause key

	// KCMoveHome Home Movement key.
	// Used for scrolling or moving the cursor around to the start of a line
	// or to the top of a list.
	KCMoveHome KeyCode = 122

	// KCMoveEnd End Movement key.
	// Used for scrolling or moving the cursor around to the end of a line
	// or to the bottom of a list.
	KCMoveEnd KeyCode = 123

	// KCInsert Insert key.
	// Toggles insert / overwrite edit mode.
	KCInsert KeyCode = 124

	// KCForward Forward key.
	// Navigates forward in the history stack.  Complement of `KCBack`.
	KCForward KeyCode = 125

	// KCMediaPlay Play media key.
	KCMediaPlay KeyCode = 126

	// KCMediaPause Pause media key.
	KCMediaPause KeyCode = 127

	// KCMediaClose Close media key.
	// May be used to close a CD tray, for example.
	KCMediaClose KeyCode = 128

	// KCMediaEject Eject media key.
	// May be used to eject a CD tray, for example.
	KCMediaEject KeyCode = 129

	// KCMediaRecord Record media key.
	KCMediaRecord KeyCode = 130

	KCF1  KeyCode = 131 // F1 key.
	KCF2  KeyCode = 132 // F2 key.
	KCF3  KeyCode = 133 // F3 key.
	KCF4  KeyCode = 134 // F4 key.
	KCF5  KeyCode = 135 // F5 key.
	KCF6  KeyCode = 136 // F6 key.
	KCF7  KeyCode = 137 // F7 key.
	KCF8  KeyCode = 138 // F8 key.
	KCF9  KeyCode = 139 // F9 key.
	KCF10 KeyCode = 140 // F10 key.
	KCF11 KeyCode = 141 // F11 key.
	KCF12 KeyCode = 142 // F12 key.

	// KCNumLock Num Lock key.
	// This is the Num Lock key; it is different from `KCNum`.
	// This key alters the behavior of other keys on the numeric keypad.
	KCNumLock KeyCode = 143

	KCNumpad0          KeyCode = 144 // Numeric keypad '0' key
	KCNumpad1          KeyCode = 145 // Numeric keypad '1' key
	KCNumpad2          KeyCode = 146 // Numeric keypad '2' key
	KCNumpad3          KeyCode = 147 // Numeric keypad '3' key
	KCNumpad4          KeyCode = 148 // Numeric keypad '4' key
	KCNumpad5          KeyCode = 149 // Numeric keypad '5' key
	KCNumpad6          KeyCode = 150 // Numeric keypad '6' key
	KCNumpad7          KeyCode = 151 // Numeric keypad '7' key
	KCNumpad8          KeyCode = 152 // Numeric keypad '8' key
	KCNumpad9          KeyCode = 153 // Numeric keypad '9' key
	KCNumpadDivide     KeyCode = 154 // Numeric keypad '/' key (for division)
	KCNumpadMultiply   KeyCode = 155 // Numeric keypad '*' key (for multiplication)
	KCNumpadSubtract   KeyCode = 156 // Numeric keypad '-' key (for subtraction)
	KCNumpadAdd        KeyCode = 157 // Numeric keypad '+' key (for addition)
	KCNumpadDot        KeyCode = 158 // Numeric keypad '.' key (for decimals or digit grouping)
	KCNumpadComma      KeyCode = 159 // Numeric keypad ',' key (for decimals or digit grouping)
	KCNumpadEnter      KeyCode = 160 // Numeric keypad Enter key
	KCNumpadEquals     KeyCode = 161 // Numeric keypad 'KeyCode =' key
	KCNumpadLeftParen  KeyCode = 162 // Numeric keypad '(' key
	KCNumpadRightParen KeyCode = 163 // Numeric keypad ')' key

	// KCVolumeMute Volume Mute key.
	// Mutes the speaker, unlike `KCMute`.
	// This key should normally be implemented as a toggle such that the first press
	// mutes the speaker and the second press restores the original volume.
	KCVolumeMute KeyCode = 164

	// KCInfo Info key.
	// Common on TV remotes to show additional information related to what is
	// currently being viewed.
	KCInfo KeyCode = 165

	// KCChannelUp Channel up key.
	// On TV remotes, increments the television channel.
	KCChannelUp KeyCode = 166

	// KCChannelDown Channel down key.
	// On TV remotes, decrements the television channel.
	KCChannelDown KeyCode = 167

	// KCZoomIn Zoom in key.
	KCZoomIn KeyCode = 168

	// KCZoomOut Zoom out key.
	KCZoomOut KeyCode = 169

	// KCTv TV key.
	// On TV remotes, switches to viewing live TV.
	KCTv KeyCode = 170

	// KCWindow Window key.
	// On TV remotes, toggles picture-in-picture mode or other windowing functions.
	// On Android Wear devices, triggers a display offset.
	KCWindow KeyCode = 171

	// KCGuide Guide key.
	// On TV remotes, shows a programming guide.
	KCGuide KeyCode = 172

	// KCDvr DVR key.
	// On some TV remotes, switches to a DVR mode for recorded shows.
	KCDvr KeyCode = 173

	// KCBookmark Bookmark key.
	// On some TV remotes, bookmarks content or web pages.
	KCBookmark KeyCode = 174

	// KCCaptions Toggle captions key.
	// Switches the mode for closed-captioning text, for example during television shows.
	KCCaptions KeyCode = 175

	// KCSettings Settings key.
	// Starts the system settings activity.
	KCSettings KeyCode = 176

	// KCTvPower TV power key.
	// On TV remotes, toggles the power on a television screen.
	KCTvPower KeyCode = 177

	// KCTvInput TV input key.
	// On TV remotes, switches the input on a television screen.
	KCTvInput KeyCode = 178

	// KCStbPower Set-top-box power key.
	// On TV remotes, toggles the power on an external Set-top-box.
	KCStbPower KeyCode = 179

	// KCStbInput Set-top-box input key.
	// On TV remotes, switches the input mode on an external Set-top-box.
	KCStbInput KeyCode = 180

	// KCAvrPower A/V Receiver power key.
	// On TV remotes, toggles the power on an external A/V Receiver.
	KCAvrPower KeyCode = 181

	// KCAvrInput A/V Receiver input key.
	// On TV remotes, switches the input mode on an external A/V Receiver.
	KCAvrInput KeyCode = 182

	// KCProgRed Red "programmable" key.
	// On TV remotes, acts as a contextual/programmable key.
	KCProgRed KeyCode = 183

	// KCProgGreen Green "programmable" key.
	// On TV remotes, actsas a contextual/programmable key.
	KCProgGreen KeyCode = 184

	// KCProgYellow Yellow "programmable" key.
	// On TV remotes, acts as a contextual/programmable key.
	KCProgYellow KeyCode = 185

	// KCProgBlue Blue "programmable" key.
	// On TV remotes, acts as a contextual/programmable key.
	KCProgBlue KeyCode = 186

	// KCAppSwitch App switch key.
	// Should bring up the application switcher dialog.
	KCAppSwitch KeyCode = 187

	KCButton1  KeyCode = 188 // Generic Game Pad Button #1
	KCButton2  KeyCode = 189 // Generic Game Pad Button #2
	KCButton3  KeyCode = 190 // Generic Game Pad Button #3
	KCButton4  KeyCode = 191 // Generic Game Pad Button #4
	KCButton5  KeyCode = 192 // Generic Game Pad Button #5
	KCButton6  KeyCode = 193 // Generic Game Pad Button #6
	KCButton7  KeyCode = 194 // Generic Game Pad Button #7
	KCButton8  KeyCode = 195 // Generic Game Pad Button #8
	KCButton9  KeyCode = 196 // Generic Game Pad Button #9
	KCButton10 KeyCode = 197 // Generic Game Pad Button #10
	KCButton11 KeyCode = 198 // Generic Game Pad Button #11
	KCButton12 KeyCode = 199 // Generic Game Pad Button #12
	KCButton13 KeyCode = 200 // Generic Game Pad Button #13
	KCButton14 KeyCode = 201 // Generic Game Pad Button #14
	KCButton15 KeyCode = 202 // Generic Game Pad Button #15
	KCButton16 KeyCode = 203 // Generic Game Pad Button #16

	// KCLanguageSwitch Language Switch key.
	// Toggles the current input language such as switching between English and Japanese on
	// a QWERTY keyboard.  On some devices, the same function may be performed by
	// pressing Shift+Spacebar.
	KCLanguageSwitch KeyCode = 204

	// Manner Mode key.
	// Toggles silent or vibrate mode on and off to make the device behave more politely
	// in certain settings such as on a crowded train.  On some devices, the key may only
	// operate when long-pressed.
	KCMannerMode KeyCode = 205

	// 3D Mode key.
	// Toggles the display between 2D and 3D mode.
	KC3dMode KeyCode = 206

	// Contacts special function key.
	// Used to launch an address book application.
	KCContacts KeyCode = 207

	// Calendar special function key.
	// Used to launch a calendar application.
	KCCalendar KeyCode = 208

	// Music special function key.
	// Used to launch a music player application.
	KCMusic KeyCode = 209

	// Calculator special function key.
	// Used to launch a calculator application.
	KCCalculator KeyCode = 210

	// Japanese full-width / half-width key.
	KCZenkakuHankaku KeyCode = 211

	// Japanese alphanumeric key.
	KCEisu KeyCode = 212

	// Japanese non-conversion key.
	KCMuhenkan KeyCode = 213

	// Japanese conversion key.
	KCHenkan KeyCode = 214

	// Japanese katakana / hiragana key.
	KCKatakanaHiragana KeyCode = 215

	// Japanese Yen key.
	KCYen KeyCode = 216

	// Japanese Ro key.
	KCRo KeyCode = 217

	// Japanese kana key.
	KCKana KeyCode = 218

	// Assist key.
	// Launches the global assist activity.  Not delivered to applications.
	KCAssist KeyCode = 219

	// Brightness Down key.
	// Adjusts the screen brightness down.
	KCBrightnessDown KeyCode = 220

	// Brightness Up key.
	// Adjusts the screen brightness up.
	KCBrightnessUp KeyCode = 221

	// Audio Track key.
	// Switches the audio tracks.
	KCMediaAudioTrack KeyCode = 222

	// Sleep key.
	// Puts the device to sleep.  Behaves somewhat like {@link #KEYCODE_POWER} but it
	// has no effect if the device is already asleep.
	KCSleep KeyCode = 223

	// Wakeup key.
	// Wakes up the device.  Behaves somewhat like {@link #KEYCODE_POWER} but it
	// has no effect if the device is already awake.
	KCWakeup KeyCode = 224

	// Pairing key.
	// Initiates peripheral pairing mode. Useful for pairing remote control
	// devices or game controllers, especially if no other input mode is
	// available.
	KCPairing KeyCode = 225

	// Media Top Menu key.
	// Goes to the top of media menu.
	KCMediaTopMenu KeyCode = 226

	// '11' key.
	KC11 KeyCode = 227

	// '12' key.
	KC12 KeyCode = 228

	// Last Channel key.
	// Goes to the last viewed channel.
	KCLastChannel KeyCode = 229

	// TV data service key.
	// Displays data services like weather, sports.
	KCTvDataService KeyCode = 230

	// Voice Assist key.
	// Launches the global voice assist activity. Not delivered to applications.
	KCVoiceAssist KeyCode = 231

	// Radio key.
	// Toggles TV service / Radio service.
	KCTvRadioService KeyCode = 232

	// Teletext key.
	// Displays Teletext service.
	KCTvTeletext KeyCode = 233

	// Number entry key.
	// Initiates to enter multi-digit channel nubmber when each digit key is assigned
	// for selecting separate channel. Corresponds to Number Entry Mode (0x1D) of CEC
	// User Control Code.
	KCTvNumberEntry KeyCode = 234

	// Analog Terrestrial key.
	// Switches to analog terrestrial broadcast service.
	KCTvTerrestrialAnalog KeyCode = 235

	// Digital Terrestrial key.
	// Switches to digital terrestrial broadcast service.
	KCTvTerrestrialDigital KeyCode = 236

	// Satellite key.
	// Switches to digital satellite broadcast service.
	KCTvSatellite KeyCode = 237

	// BS key.
	// Switches to BS digital satellite broadcasting service available in Japan.
	KCTvSatelliteBs KeyCode = 238

	// CS key.
	// Switches to CS digital satellite broadcasting service available in Japan.
	KCTvSatelliteCs KeyCode = 239

	// BS/CS key.
	// Toggles between BS and CS digital satellite services.
	KCTvSatelliteService KeyCode = 240

	// Toggle Network key.
	// Toggles selecting broacast services.
	KCTvNetwork KeyCode = 241

	// Antenna/Cable key.
	// Toggles broadcast input source between antenna and cable.
	KCTvAntennaCable KeyCode = 242

	// HDMI #1 key.
	// Switches to HDMI input #1.
	KCTvInputHdmi1 KeyCode = 243

	// HDMI #2 key.
	// Switches to HDMI input #2.
	KCTvInputHdmi2 KeyCode = 244

	// HDMI #3 key.
	// Switches to HDMI input #3.
	KCTvInputHdmi3 KeyCode = 245

	// HDMI #4 key.
	// Switches to HDMI input #4.
	KCTvInputHdmi4 KeyCode = 246

	// Composite #1 key.
	// Switches to composite video input #1.
	KCTvInputComposite1 KeyCode = 247

	// Composite #2 key.
	// Switches to composite video input #2.
	KCTvInputComposite2 KeyCode = 248

	// Component #1 key.
	// Switches to component video input #1.
	KCTvInputComponent1 KeyCode = 249

	// Component #2 key.
	// Switches to component video input #2.
	KCTvInputComponent2 KeyCode = 250

	// VGA #1 key.
	// Switches to VGA (analog RGB) input #1.
	KCTvInputVga1 KeyCode = 251

	// Audio description key.
	// Toggles audio description off / on.
	KCTvAudioDescription KeyCode = 252

	// Audio description mixing volume up key.
	// Louden audio description volume as compared with normal audio volume.
	KCTvAudioDescriptionMixUp KeyCode = 253

	// Audio description mixing volume down key.
	// Lessen audio description volume as compared with normal audio volume.
	KCTvAudioDescriptionMixDown KeyCode = 254

	// Zoom mode key.
	// Changes Zoom mode (Normal, Full, Zoom, Wide-zoom, etc.)
	KCTvZoomMode KeyCode = 255

	// Contents menu key.
	// Goes to the title list. Corresponds to Contents Menu (0x0B) of CEC User Control
	// Code
	KCTvContentsMenu KeyCode = 256

	// Media context menu key.
	// Goes to the context menu of media contents. Corresponds to Media Context-sensitive
	// Menu (0x11) of CEC User Control Code.
	KCTvMediaContextMenu KeyCode = 257

	// Timer programming key.
	// Goes to the timer recording menu. Corresponds to Timer Programming (0x54) of
	// CEC User Control Code.
	KCTvTimerProgramming KeyCode = 258

	// Help key.
	KCHelp KeyCode = 259

	// Navigate to previous key.
	// Goes backward by one item in an ordered collection of items.
	KCNavigatePrevious KeyCode = 260

	// Navigate to next key.
	// Advances to the next item in an ordered collection of items.
	KCNavigateNext KeyCode = 261

	// Navigate in key.
	// Activates the item that currently has focus or expands to the next level of a navigation
	// hierarchy.
	KCNavigateIn KeyCode = 262

	// Navigate out key.
	// Backs out one level of a navigation hierarchy or collapses the item that currently has
	// focus.
	KCNavigateOut KeyCode = 263

	// Primary stem key for Wear
	// Main power/reset button on watch.
	KCStemPrimary KeyCode = 264

	// Generic stem key 1 for Wear
	KCStem1 KeyCode = 265

	// Generic stem key 2 for Wear
	KCStem2 KeyCode = 266

	// Generic stem key 3 for Wear
	KCStem3 KeyCode = 267

	// Directional Pad Up-Left
	KCDPadUpLeft KeyCode = 268

	// Directional Pad Down-Left
	KCDPadDownLeft KeyCode = 269

	// Directional Pad Up-Right
	KCDPadUpRight KeyCode = 270

	// Directional Pad Down-Right
	KCDPadDownRight KeyCode = 271

	// Skip forward media key.
	KCMediaSkipForward KeyCode = 272

	// Skip backward media key.
	KCMediaSkipBackward KeyCode = 273

	// Step forward media key.
	// Steps media forward, one frame at a time.
	KCMediaStepForward KeyCode = 274

	// Step backward media key.
	// Steps media backward, one frame at a time.
	KCMediaStepBackward KeyCode = 275

	// put device to sleep unless a wakelock is held.
	KCSoftSleep KeyCode = 276

	// Cut key.
	KCCut KeyCode = 277

	// Copy key.
	KCCopy KeyCode = 278

	// Paste key.
	KCPaste KeyCode = 279

	// Consumed by the system for navigation up
	KCSystemNavigationUp KeyCode = 280

	// Consumed by the system for navigation down
	KCSystemNavigationDown KeyCode = 281

	// Consumed by the system for navigation left*/
	KCSystemNavigationLeft KeyCode = 282

	// Consumed by the system for navigation right
	KCSystemNavigationRight KeyCode = 283

	// Show all apps
	KCAllApps KeyCode = 284

	// Refresh key.
	KCRefresh KeyCode = 285
)
