kll_hid/
lib.rs

1// Copyright 2021-2022 Jacob Alexander
2//
3// Licensed under the Apache License, Version 2.0, <LICENSE-APACHE or
4// http://apache.org/licenses/LICENSE-2.0> or the MIT license <LICENSE-MIT or
5// http://opensource.org/licenses/MIT>, at your option. This file may not be
6// copied, modified, or distributed except according to those terms.
7
8#![no_std]
9
10/// HID Locales
11/// Locales defined by the USB HID Spec v1.11
12/// <http://www.usb.org/developers/hidpage/HID1_11.pdf> (6.2.1) HID Descriptor
13/// 36-255 are reserved
14#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
15#[repr(u8)]
16#[cfg_attr(feature = "defmt", derive(defmt::Format))]
17pub enum Locale {
18    Undefined = 0,
19    Arabic = 1,
20    Belgian = 2,
21    CanadianBilingual = 3,
22    CanadianFrench = 4,
23    CzechRepublic = 5,
24    Danish = 6,
25    Finnish = 7,
26    French = 8,
27    German = 9,
28    Greek = 10,
29    Hebrew = 11,
30    Hungary = 12,
31    InternationalISO = 13,
32    Italian = 14,
33    JapanKatakana = 15,
34    Korean = 16,
35    LatinAmerica = 17,
36    NetherlandsDutch = 18,
37    Norwegian = 19,
38    PersianFarsi = 20,
39    Poland = 21,
40    Portuguese = 22,
41    Russia = 23,
42    Slovakia = 24,
43    Spanish = 25,
44    Swedish = 26,
45    SwissFrench = 27,
46    SwissGerman = 28,
47    Switzerland = 29,
48    Taiwan = 30,
49    TurkishQ = 31,
50    UK = 32,
51    US = 33,
52    Yugoslavia = 34,
53    TurkishF = 35,
54}
55
56/// HID Keyboard Codes
57/// List of Keycodes - USB HID 1.12v2 pg 53
58/// 0xA5 to 0xAF are reserved
59/// 0xDE to 0xDF are reserved
60/// 0xE8 to 0xFF are reserved
61#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
62#[repr(u8)]
63#[cfg_attr(feature = "defmt", derive(defmt::Format))]
64pub enum Keyboard {
65    NoEvent = 0x00,
66    ErrorRollOver = 0x01,
67    PostFail = 0x02,
68    ErrorUndefined = 0x03,
69    A = 0x04,
70    B = 0x05,
71    C = 0x06,
72    D = 0x07,
73    E = 0x08,
74    F = 0x09,
75    G = 0x0A,
76    H = 0x0B,
77    I = 0x0C,
78    J = 0x0D,
79    K = 0x0E,
80    L = 0x0F,
81    M = 0x10,
82    N = 0x11,
83    O = 0x12,
84    P = 0x13,
85    Q = 0x14,
86    R = 0x15,
87    S = 0x16,
88    T = 0x17,
89    U = 0x18,
90    V = 0x19,
91    W = 0x1A,
92    X = 0x1B,
93    Y = 0x1C,
94    Z = 0x1D,
95    _1 = 0x1E,
96    _2 = 0x1F,
97    _3 = 0x20,
98    _4 = 0x21,
99    _5 = 0x22,
100    _6 = 0x23,
101    _7 = 0x24,
102    _8 = 0x25,
103    _9 = 0x26,
104    _0 = 0x27,
105    Enter = 0x28,
106    Esc = 0x29,
107    Backspace = 0x2A,
108    Tab = 0x2B,
109    Space = 0x2C,
110    Minus = 0x2D,
111    Equal = 0x2E,
112    LeftBracket = 0x2F,
113    RightBracket = 0x30,
114    Backslash = 0x31,
115    Number = 0x32,
116    Semicolon = 0x33,
117    Quote = 0x34,
118    Backtick = 0x35,
119    Comma = 0x36,
120    Period = 0x37,
121    Slash = 0x38,
122    CapsLock = 0x39,
123    F1 = 0x3A,
124    F2 = 0x3B,
125    F3 = 0x3C,
126    F4 = 0x3D,
127    F5 = 0x3E,
128    F6 = 0x3F,
129    F7 = 0x40,
130    F8 = 0x41,
131    F9 = 0x42,
132    F10 = 0x43,
133    F11 = 0x44,
134    F12 = 0x45,
135    PrintScreen = 0x46,
136    ScrollLock = 0x47,
137    Pause = 0x48,
138    Insert = 0x49,
139    Home = 0x4A,
140    PageUp = 0x4B,
141    Delete = 0x4C,
142    End = 0x4D,
143    PageDown = 0x4E,
144    Right = 0x4F,
145    Left = 0x50,
146    Down = 0x51,
147    Up = 0x52,
148    NumLock = 0x53,
149    KeypadSlash = 0x54,
150    KeypadAsterisk = 0x55,
151    KeypadMinus = 0x56,
152    KeypadPlus = 0x57,
153    KeypadEnter = 0x58,
154    Keypad1 = 0x59,
155    Keypad2 = 0x5A,
156    Keypad3 = 0x5B,
157    Keypad4 = 0x5C,
158    Keypad5 = 0x5D,
159    Keypad6 = 0x5E,
160    Keypad7 = 0x5F,
161    Keypad8 = 0x60,
162    Keypad9 = 0x61,
163    Keypad0 = 0x62,
164    KeypadPeriod = 0x63,
165    ISOSlash = 0x64,
166    App = 0x65,
167    KeyboardStatus = 0x66,
168    KeypadEqual = 0x67,
169    F13 = 0x68,
170    F14 = 0x69,
171    F15 = 0x6A,
172    F16 = 0x6B,
173    F17 = 0x6C,
174    F18 = 0x6D,
175    F19 = 0x6E,
176    F20 = 0x6F,
177    F21 = 0x70,
178    F22 = 0x71,
179    F23 = 0x72,
180    F24 = 0x73,
181    Exec = 0x74,
182    Help = 0x75,
183    Menu = 0x76,
184    Select = 0x77,
185    Stop = 0x78,
186    Again = 0x79,
187    Undo = 0x7A,
188    Cut = 0x7B,
189    Copy = 0x7C,
190    Paste = 0x7D,
191    Find = 0x7E,
192    Mute = 0x7F,
193    VolumeUp = 0x80,
194    VolumeDown = 0x81,
195    LockingCapsLock = 0x82,
196    LockingNumLock = 0x83,
197    LockingScrollLock = 0x84,
198    KeypadComma = 0x85,
199    KeypadEqualAS400 = 0x86,
200    International1 = 0x87,
201    International2 = 0x88,
202    International3 = 0x89,
203    International4 = 0x8A,
204    International5 = 0x8B,
205    International6 = 0x8C,
206    International7 = 0x8D,
207    International8 = 0x8E,
208    International9 = 0x8F,
209    LANG1 = 0x90,
210    LANG2 = 0x91,
211    LANG3 = 0x92,
212    LANG4 = 0x93,
213    LANG5 = 0x94,
214    LANG6 = 0x95,
215    LANG7 = 0x96,
216    LANG8 = 0x97,
217    LANG9 = 0x98,
218    AlternateErase = 0x99,
219    SysReq = 0x9A,
220    Cancel = 0x9B,
221    Clear = 0x9C,
222    Prior = 0x9D,
223    Return = 0x9E,
224    Separator = 0x9F,
225    Out = 0xA0,
226    Oper = 0xA1,
227    ClearAgain = 0xA2,
228    CrSelProps = 0xA3,
229    ExSel = 0xA4,
230
231    Keypad00 = 0xB0,
232    Keypad000 = 0xB1,
233    ThousandSeparator = 0xB2,
234    DecimalSeparator = 0xB3,
235    CurrencyUnit = 0xB4,
236    CurrencySubUnit = 0xB5,
237    KeypadLeftParenthesis = 0xB6,
238    KeypadRightParenthesis = 0xB7,
239    KeypadLeftBrace = 0xB8,
240    KeypadRightBrace = 0xB9,
241    KeypadTab = 0xBA,
242    KeypadBackspace = 0xBB,
243    KeypadA = 0xBC,
244    KeypadB = 0xBD,
245    KeypadC = 0xBE,
246    KeypadD = 0xBF,
247    KeypadE = 0xC0,
248    KeypadF = 0xC1,
249    KeypadXOR = 0xC2,
250    KeypadChevron = 0xC3,
251    KeypadPercent = 0xC4,
252    KeypadLessThan = 0xC5,
253    KeypadGreaterThan = 0xC6,
254    KeypadBITAND = 0xC7,
255    KeypadAND = 0xC8,
256    KeypadBITOR = 0xC9,
257    KeypadOR = 0xCA,
258    KeypadColon = 0xCB,
259    KeypadNumber = 0xCC,
260    KeypadSpace = 0xCD,
261    KeypadAt = 0xCE,
262    KeypadExclamation = 0xCF,
263    KeypadMemoryStore = 0xD0,
264    KeypadMemoryRecall = 0xD1,
265    KeypadMemoryClear = 0xD2,
266    KeypadMemoryAdd = 0xD3,
267    KeypadMemorySubtract = 0xD4,
268    KeypadMemoryMultiply = 0xD5,
269    KeypadMemoryDivide = 0xD6,
270    KeypadPlusMinus = 0xD7,
271    KeypadClear = 0xD8,
272    KeypadClearEntry = 0xD9,
273    KeypadBinary = 0xDA,
274    KeypadOctal = 0xDB,
275    KeypadDecimal = 0xDC,
276    KeypadHexidecimal = 0xDD,
277
278    LeftControl = 0xE0,
279    LeftShift = 0xE1,
280    LeftAlt = 0xE2,
281    LeftGUI = 0xE3,
282    RightControl = 0xE4,
283    RightShift = 0xE5,
284    RightAlt = 0xE6,
285    RightGUI = 0xE7,
286}
287
288/// Conversion from u16 indexes to Keyboard enum
289/// # Safety
290impl From<u16> for Keyboard {
291    fn from(index: u16) -> Keyboard {
292        unsafe { core::mem::transmute(index as u8) }
293    }
294}
295
296/// Conversion from Keyboard enum to u16
297/// # Safety
298impl From<Keyboard> for u16 {
299    fn from(index: Keyboard) -> u16 {
300        index as u16
301    }
302}
303
304/// Conversion from u8 indexes to LedIndicator enum
305/// # Safety
306impl From<u8> for LedIndicator {
307    fn from(index: u8) -> LedIndicator {
308        unsafe { core::mem::transmute(index) }
309    }
310}
311
312/// Conversion from LedIndicator enum to u8
313/// # Safety
314impl From<LedIndicator> for u8 {
315    fn from(index: LedIndicator) -> u8 {
316        index as u8
317    }
318}
319
320/// HID LED Indicators
321/// List of LED codes - USB HID 1.12v2 pg 61
322#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
323#[repr(u8)]
324#[cfg_attr(feature = "defmt", derive(defmt::Format))]
325pub enum LedIndicator {
326    Undefined = 0x00,
327    NumLock = 0x01,
328    CapsLock = 0x02,
329    ScrollLock = 0x03,
330    Compose = 0x04,
331    Kana = 0x05,
332    Power = 0x06,
333    Shift = 0x07,
334    DoNotDisturb = 0x08,
335    Mute = 0x09,
336    ToneEnable = 0x0A,
337    HighCutFilter = 0x0B,
338    LowCutFilter = 0x0C,
339    EqualizerEnable = 0x0D,
340    SoundFieldOn = 0x0E,
341    SurroundOn = 0x0F,
342    Repeat = 0x10,
343    Stereo = 0x11,
344    SampleRateDetect = 0x12,
345    Spinning = 0x13,
346    CAC = 0x14,
347    CLV = 0x15,
348    RecordingFormatDetect = 0x16,
349    OffHook = 0x17,
350    Ring = 0x18,
351    MessageWaiting = 0x19,
352    DataMode = 0x1A,
353    BatteryOperation = 0x1B,
354    BatteryOK = 0x1C,
355    BatteryLow = 0x1D,
356    Speaker = 0x1E,
357    HeadSet = 0x1F,
358    Hold = 0x20,
359    Microphone = 0x21,
360    Coverage = 0x22,
361    NightMode = 0x23,
362    SendCalls = 0x24,
363    CallPickup = 0x25,
364    Conference = 0x26,
365    StandBy = 0x27,
366    CameraOn = 0x28,
367    CameraOff = 0x29,
368    OnLine = 0x2A,
369    OffLine = 0x2B,
370    Busy = 0x2C,
371    Ready = 0x2D,
372    PaperOut = 0x2E,
373    PaperJam = 0x2F,
374    Remote = 0x30,
375    Forward = 0x31,
376    Reverse = 0x32,
377    Stop = 0x33,
378    Rewind = 0x34,
379    FastForward = 0x35,
380    Play = 0x36,
381    Pause = 0x37,
382    Record = 0x38,
383    Error = 0x39,
384
385    GenericInd = 0x4B,
386    SysSuspend = 0x4C,
387    ExtPwrConn = 0x4D,
388}
389
390/// HID System Controls
391/// List of System Controls - USB HID 1.12v2 pg 32
392/// NKRO HID Supports 0x81 - 0xB7
393/// 0x94 - 0x9F Reserved
394/// 0xA9 - 0xAF Reserved
395/// 0xB8 - 0xFFFF Reserved
396#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
397#[repr(u8)]
398#[cfg_attr(feature = "defmt", derive(defmt::Format))]
399pub enum SystemControl {
400    PowerDown = 0x81,
401    Sleep = 0x82,
402    WakeUp = 0x83,
403    ContextMenu = 0x84,
404    MainMenu = 0x85,
405    AppMenu = 0x86,
406    MenuHelp = 0x87,
407    MenuExit = 0x88,
408    MenuSelect = 0x89,
409    MenuRight = 0x8A,
410    MenuLeft = 0x8B,
411    MenuUp = 0x8C,
412    MenuDown = 0x8D,
413    ColdRestart = 0x8E,
414    WarmRestart = 0x8F,
415    DpadUp = 0x90,
416    DpadDown = 0x91,
417    DpadRight = 0x92,
418    DpadLeft = 0x93,
419
420    SystemFunctionShift = 0x97,
421    SystemFunctionShiftLock = 0x98,
422
423    SystemDismissNotification = 0x9A,
424    SystemDoNotDisturb = 0x9B,
425
426    Dock = 0xA0,
427    Undock = 0xA1,
428    Setup = 0xA2,
429    Break = 0xA3,
430    DebuggerBreak = 0xA4,
431    ApplicationBreak = 0xA5,
432    ApplicationDebuggerBreak = 0xA6,
433    SpeakerMute = 0xA7,
434    Hibernate = 0xA8,
435
436    DisplayInvert = 0xB0,
437    DisplayInternal = 0xB1,
438    DisplayExternal = 0xB2,
439    DisplayBoth = 0xB3,
440    DisplayDual = 0xB4,
441    DisplayToggleInternalExternal = 0xB5,
442    DisplaySwapPrimarySecondary = 0xB6,
443    DisplayLCDAutoscale = 0xB7,
444}
445
446/// HID Consumer Controls
447/// List of Consumer Codes - USB HID 1.12v2
448/// NKRO HID Supports 0x020 - 0x29C
449/// 0x023 - 0x02F Reserved
450/// 0x037 - 0x03F Reserved
451/// 0x049 - 0x05F Reserved
452/// 0x067 - 0x06E Reserved?
453/// 0x076 - 0x07F Reserved
454/// 0x09F Reserved
455/// 0x0A5 - 0x0AF Reserved
456/// 0x0CF - 0x0DF Reserved
457/// 0x0EB - 0x0EF Reserved
458/// 0x0F6 - 0x0FF
459/// 0x10E - 0x14F Reserved
460/// 0x156 - 0x15F Reserved
461/// Application Launch Buttons pg 79
462/// Generic GUI Application Controls pg 82
463/// TODO: Where does 0x29D come from?
464#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
465#[repr(u16)]
466#[cfg_attr(feature = "defmt", derive(defmt::Format))]
467pub enum ConsumerControl {
468    _10 = 0x020,
469    _100 = 0x021,
470    AMPM = 0x022,
471
472    Power = 0x030,
473    Reset = 0x031,
474    Sleep = 0x032,
475    SleepAfter = 0x033,
476    SleepMode = 0x034,
477    Illumination = 0x035,
478
479    Menu = 0x040,
480    MenuPick = 0x041,
481    MenuUp = 0x042,
482    MenuDown = 0x043,
483    MenuLeft = 0x044,
484    MenuRight = 0x045,
485    MenuEscape = 0x046,
486    MenuValueIncrease = 0x047,
487    MenuValueDecrease = 0x048,
488
489    DataOnScreen = 0x060,
490    ClosedCaption = 0x061,
491    ClosedCaptionSelect = 0x062,
492    VCRTV = 0x063,
493    BroadcastMode = 0x064,
494    Snapshot = 0x065,
495    Still = 0x066,
496
497    BrightnessIncrement = 0x06F,
498    BrightnessDecrement = 0x070,
499
500    BacklightToggle = 0x072,
501    BrightnessMin = 0x073,
502    BrightnessMax = 0x074,
503    BrightnessAuto = 0x075,
504
505    AssignSelection = 0x081,
506    ModeStep = 0x082,
507    RecallLast = 0x083,
508    EnterChannel = 0x084,
509    OrderMovie = 0x085,
510
511    MediaComputer = 0x088,
512    MediaTV = 0x089,
513    MediaWWW = 0x08A,
514    MediaDVD = 0x08B,
515    MediaTelephone = 0x08C,
516    MediaProgramGuide = 0x08D,
517    MediaVideoPhone = 0x08E,
518    MediaSelectGames = 0x08F,
519    MediaSelectMessages = 0x090,
520    MediaSelectCD = 0x091,
521    MediaSelectVCR = 0x092,
522    MediaSelectTuner = 0x093,
523    Quit = 0x094,
524    Help = 0x095,
525    MediaSelectTape = 0x096,
526    MediaSelectCable = 0x097,
527    MediaSelectSatellite = 0x098,
528    MediaSelectSecurity = 0x099,
529    MediaSelectHome = 0x09A,
530    MediaSelectCall = 0x09B,
531    ChannelIncrement = 0x09C,
532    CahnnelDecrement = 0x09D,
533    MediaSelectSAP = 0x09E,
534
535    VCRPlus = 0x0A0,
536    Once = 0x0A1,
537    Daily = 0x0A2,
538    Weekly = 0x0A3,
539    Monthly = 0x0A4,
540
541    Play = 0x0B0,
542    Pause = 0x0B1,
543    Record = 0x0B2,
544    FastForward = 0x0B3,
545    Rewind = 0x0B4,
546    ScanNextTrack = 0x0B5,
547    ScanPreviousTrack = 0x0B6,
548    Stop = 0x0B7,
549    Eject = 0x0B8,
550    RandomPlay = 0x0B9,
551
552    Repeat = 0x0BC,
553
554    TrackNormal = 0x0BE,
555
556    FrameForward = 0x0C0,
557    FrameBack = 0x0C1,
558    Mark = 0x0C2,
559    ClearMark = 0x0C3,
560    RepeatFromMark = 0x0C4,
561    ReturnToMark = 0x0C5,
562    SearchMarkForwards = 0x0C6,
563    SearchMarkBackwards = 0x0C7,
564    CounterReset = 0x0C8,
565    ShowCounter = 0x0C9,
566    TrackingIncrement = 0x0CA,
567    TrackingDecrement = 0x0CB,
568    StopEject = 0x0CC,
569    PausePlay = 0x0CD,
570    PlaySkip = 0x0CE,
571
572    Mute = 0x0E2,
573
574    BassBoost = 0x0E5,
575    SurroundMode = 0x0E6,
576    Loudness = 0x0E7,
577    Mpx = 0x0E8,
578    VolumeUp = 0x0E9,
579    VolumeDown = 0x0EA,
580
581    SpeedSelect = 0x0F0,
582    StandardPlay = 0x0F2,
583    LongPlay = 0x0F3,
584    ExtendedPlay = 0x0F4,
585    Slow = 0x0F5,
586
587    FanEnable = 0x100,
588
589    LightEnable = 0x102,
590
591    ClimateControlEnable = 0x104,
592
593    SecurityEnable = 0x106,
594    FireAlarm = 0x107,
595
596    Motion = 0x10A,
597    DuressAlarm = 0x10B,
598    HoldupAlarm = 0x10C,
599    MedicalAlarm = 0x10D,
600
601    BalanceRight = 0x150,
602    BalanceLeft = 0x151,
603    BassIncrement = 0x152,
604    BassDecrement = 0x153,
605    TrebleIncrement = 0x154,
606    TrebleDecrement = 0x155,
607
608    SubChannelIncrement = 0x171,
609    SubChannelDecrement = 0x172,
610    AltAudioIncrement = 0x173,
611    AltAudioDecrement = 0x174,
612
613    LaunchButtonConfigTool = 0x181,
614    ProgrammableButtonConfig = 0x182,
615    ConsumerControlConfig = 0x183,
616    WordProcessor = 0x184,
617    TextEditor = 0x185,
618    Spreadsheet = 0x186,
619    GraphicsEditor = 0x187,
620    PresentationApp = 0x188,
621    DatabaseApp = 0x189,
622    EmailReader = 0x18A,
623    Newsreader = 0x18B,
624    Voicemail = 0x18C,
625    ContactsAddressBook = 0x18D,
626    CalendarSchedule = 0x18E,
627    TaskProjectManager = 0x18F,
628    LogJournalTimecard = 0x190,
629    CheckbookFinance = 0x191,
630    Calculator = 0x192,
631    AVCapturePlayback = 0x193,
632    LocalMachineBrowser = 0x194,
633    LANWANBrowser = 0x195,
634    InternetBrowser = 0x196,
635    RemoteNetworkingISPConnect = 0x197,
636    NetworkConference = 0x198,
637    NetworkChat = 0x199,
638    TelephonyDialer = 0x19A,
639    Logon = 0x19B,
640    Logoff = 0x19C,
641    LogonLogoff = 0x19D,
642    TerminalLockScreensaver = 0x19E,
643    ControlPanel = 0x19F,
644    CommandLineProcessorRun = 0x1A0,
645    ProcessTaskManager = 0x1A1,
646    SelectTastApplication = 0x1A2,
647    NextTaskApplication = 0x1A3,
648    PreviousTaskApplication = 0x1A4,
649    PreemptiveHaltTaskApplication = 0x1A5,
650    IntegratedHelpCenter = 0x1A6,
651    Documents = 0x1A7,
652    Thesaurus = 0x1A8,
653    Dictionary = 0x1A9,
654    Desktop = 0x1AA,
655    SpellCheck = 0x1AB,
656    GrammarCheck = 0x1AC,
657    WirelessStatus = 0x1AD,
658    KeyboardLayout = 0x1AE,
659    VirusProtection = 0x1AF,
660    Encryption = 0x1B0,
661    ScreenSaver = 0x1B1,
662    Alarms = 0x1B2,
663    Clock = 0x1B3,
664    FileBrowser = 0x1B4,
665    PowerStatus = 0x1B5,
666    ImageBrowser = 0x1B6,
667    AudioBrowser = 0x1B7,
668    MovieBrowser = 0x1B8,
669    DigitalRightsManager = 0x1B9,
670    DigitalWallet = 0x1BA,
671
672    InstantMessaging = 0x1BC,
673    OEMFeaturesTipsTutorial = 0x1BD,
674    OEMHelp = 0x1BE,
675    OnlineCommunity = 0x1BF,
676    EntertainmentContent = 0x1C0,
677    OnlineShopping = 0x1C1,
678    SmartcardInfoHelp = 0x1C2,
679    MarketMonitor = 0x1C3,
680    CustomizedCorpNews = 0x1C4,
681    OnlineActivity = 0x1C5,
682    SearchBrowser = 0x1C6,
683    AudioPlayer = 0x1C7,
684
685    New = 0x201,
686    Open = 0x202,
687    Close = 0x203,
688    Exit = 0x204,
689    Maximize = 0x205,
690    Minimize = 0x206,
691    Save = 0x207,
692    Print = 0x208,
693    Properties = 0x209,
694    Undo = 0x21A,
695    Copy = 0x21B,
696    Cut = 0x21C,
697    Paste = 0x21D,
698    SelectAll = 0x21E,
699    Find = 0x21F,
700    FindAndReplace = 0x220,
701    Search = 0x221,
702    GoTo = 0x222,
703    Home = 0x223,
704    Back = 0x224,
705    Forward = 0x225,
706    StopWeb = 0x226,
707    Refresh = 0x227,
708    PreviousLink = 0x228,
709    NextLink = 0x229,
710    Bookmarks = 0x22A,
711    History = 0x22B,
712    Subscriptions = 0x22C,
713    ZoomIn = 0x22D,
714    ZoomOut = 0x22E,
715    Zoom = 0x22F,
716    FullScreenView = 0x230,
717    NormalView = 0x231,
718    ViewToggle = 0x232,
719    ScrollUp = 0x233,
720    ScrollDown = 0x234,
721    Scroll = 0x235,
722    PanLeft = 0x236,
723    PanRight = 0x237,
724    Pan = 0x238,
725    NewWindow = 0x239,
726    TileHorizontally = 0x23A,
727    TileVertically = 0x23B,
728    Format = 0x23C,
729    Edit = 0x23D,
730    Bold = 0x23E,
731    Italics = 0x23F,
732    Underline = 0x240,
733    Strikethrough = 0x241,
734    Subscript = 0x242,
735    Superscript = 0x243,
736    AllCaps = 0x244,
737    Rotate = 0x245,
738    Resize = 0x246,
739    FilpHorizontal = 0x247,
740    FilpVertical = 0x248,
741    MirrorHorizontal = 0x249,
742    MirrorVertical = 0x24A,
743    FontSelect = 0x24B,
744    FontColor = 0x24C,
745    FontSize = 0x24D,
746    JustifyLeft = 0x24E,
747    JustifyCenterH = 0x24F,
748    JustifyRight = 0x250,
749    JustifyBlockH = 0x251,
750    JustifyTop = 0x252,
751    JustifyCenterV = 0x253,
752    JustifyBottom = 0x254,
753    JustifyBlockV = 0x255,
754    IndentDecrease = 0x256,
755    IndentIncrease = 0x257,
756    NumberedList = 0x258,
757    RestartNumbering = 0x259,
758    BulletedList = 0x25A,
759    Promote = 0x25B,
760    Demote = 0x25C,
761    Yes = 0x25D,
762    No = 0x25E,
763    Cancel = 0x25F,
764    Catalog = 0x260,
765    BuyCheckout = 0x261,
766    AddToCart = 0x262,
767    Expand = 0x263,
768    ExpandAll = 0x264,
769    Collapse = 0x265,
770    CollapseAll = 0x266,
771    PrintPreview = 0x267,
772    PasteSpecial = 0x268,
773    InsertMode = 0x269,
774    Delete = 0x26A,
775    Lock = 0x26B,
776    Unlock = 0x26C,
777    Protect = 0x26D,
778    Unprotect = 0x26E,
779    AttachComment = 0x26F,
780    DeleteComment = 0x270,
781    ViewComment = 0x271,
782    SelectWord = 0x272,
783    SelectSentence = 0x273,
784    SelectParagraph = 0x274,
785    SelectColumn = 0x275,
786    SelectRow = 0x276,
787    SelectTable = 0x277,
788    SelectObject = 0x278,
789    RedoRepeat = 0x279,
790    Sort = 0x27A,
791    SortAscending = 0x27B,
792    SortDescending = 0x27C,
793    Filter = 0x27D,
794    SetClock = 0x27E,
795    ViewClock = 0x27F,
796    SelectTimeZone = 0x280,
797    EditTimeZone = 0x281,
798    SetAlarm = 0x282,
799    ClearAlarm = 0x283,
800    SnoozeAlarm = 0x284,
801    ResetAlarm = 0x285,
802    Synchronize = 0x286,
803    SendReceive = 0x287,
804    SendTo = 0x288,
805    Reply = 0x289,
806    ReplyAll = 0x28A,
807    ForwardMsg = 0x28B,
808    Send = 0x28C,
809    AttachFile = 0x28D,
810    Upload = 0x28E,
811    Download = 0x28F,
812    SetBorders = 0x290,
813    InsertRow = 0x291,
814    InsertColumn = 0x292,
815    InsertFile = 0x293,
816    InsertPicture = 0x294,
817    InsertObject = 0x295,
818    InsertSymbol = 0x296,
819    SaveAndClose = 0x297,
820    Rename = 0x298,
821    Merge = 0x299,
822    Split = 0x29A,
823    DistributeHorizontally = 0x29B,
824    DistributeVertically = 0x29C,
825    NextKeyboardLayoutSel = 0x29D,
826}