#[repr(u32)]pub enum Keycode {
Show 328 variants
SYSTEM_POWER = 65_665,
SYSTEM_SLEEP = 65_666,
SYSTEM_WAKE_UP = 65_667,
A = 458_756,
B = 458_757,
C = 458_758,
D = 458_759,
E = 458_760,
F = 458_761,
G = 458_762,
H = 458_763,
I = 458_764,
J = 458_765,
K = 458_766,
L = 458_767,
M = 458_768,
N = 458_769,
O = 458_770,
P = 458_771,
Q = 458_772,
R = 458_773,
S = 458_774,
T = 458_775,
U = 458_776,
V = 458_777,
W = 458_778,
X = 458_779,
Y = 458_780,
Z = 458_781,
NUMBER_1 = 458_782,
NUMBER_2 = 458_783,
NUMBER_3 = 458_784,
NUMBER_4 = 458_785,
NUMBER_5 = 458_786,
NUMBER_6 = 458_787,
NUMBER_7 = 458_788,
NUMBER_8 = 458_789,
NUMBER_9 = 458_790,
NUMBER_0 = 458_791,
RETURN = 458_792,
ESCAPE = 458_793,
BACKSPACE = 458_794,
TAB = 458_795,
SPACE = 458_796,
MINUS = 458_797,
EQUAL = 458_798,
BACKSLASH = 458_801,
NON_US_HASH = 458_802,
SEMICOLON = 458_803,
SINGLE_QUOTE = 458_804,
GRAVE = 458_805,
COMMA = 458_806,
PERIOD = 458_807,
SLASH = 458_808,
CAPSLOCK = 458_809,
F1 = 458_810,
F2 = 458_811,
F3 = 458_812,
F4 = 458_813,
F5 = 458_814,
F6 = 458_815,
F7 = 458_816,
F8 = 458_817,
F9 = 458_818,
F10 = 458_819,
F11 = 458_820,
F12 = 458_821,
PRINTSCREEN = 458_822,
SCROLLLOCK = 458_823,
PAUSE_BREAK = 458_824,
INSERT = 458_825,
HOME = 458_826,
PAGE_UP = 458_827,
DELETE = 458_828,
END = 458_829,
PAGE_DOWN = 458_830,
RIGHT_ARROW = 458_831,
LEFT_ARROW = 458_832,
DOWN_ARROW = 458_833,
UP_ARROW = 458_834,
KP_NUMLOCK = 458_835,
KP_DIVIDE = 458_836,
KP_ASTERISK = 458_837,
KP_SUBTRACT = 458_838,
KP_PLUS = 458_839,
KP_ENTER = 458_840,
KP_NUMBER_1 = 458_841,
KP_NUMBER_2 = 458_842,
KP_NUMBER_3 = 458_843,
KP_NUMBER_4 = 458_844,
KP_NUMBER_5 = 458_845,
KP_NUMBER_6 = 458_846,
KP_NUMBER_7 = 458_847,
KP_NUMBER_8 = 458_848,
KP_NUMBER_9 = 458_849,
KP_NUMBER_0 = 458_850,
KP_DOT = 458_851,
K_CONTEXT_MENU = 458_853,
K_POWER = 458_854,
KP_EQUAL = 458_855,
F13 = 458_856,
F14 = 458_857,
F15 = 458_858,
F16 = 458_859,
F17 = 458_860,
F18 = 458_861,
F19 = 458_862,
F20 = 458_863,
F21 = 458_864,
F22 = 458_865,
F23 = 458_866,
F24 = 458_867,
K_EXECUTE = 458_868,
K_HELP = 458_869,
K_MENU = 458_870,
K_SELECT = 458_871,
K_STOP = 458_872,
K_AGAIN = 458_873,
K_UNDO = 458_874,
K_CUT = 458_875,
K_COPY = 458_876,
K_PASTE = 458_877,
K_FIND = 458_878,
K_MUTE = 458_879,
K_VOLUME_UP = 458_880,
K_VOLUME_DOWN = 458_881,
LOCKING_CAPS = 458_882,
LOCKING_NUM = 458_883,
LOCKING_SCROLL = 458_884,
KP_COMMA = 458_885,
KP_EQUAL_AS400 = 458_886,
INTERNATIONAL_1 = 458_887,
INT_KATAKANAHIRAGANA = 458_888,
INTERNATIONAL_3 = 458_889,
INTERNATIONAL_4 = 458_890,
INTERNATIONAL_5 = 458_891,
INTERNATIONAL_6 = 458_892,
INTERNATIONAL_7 = 458_893,
INTERNATIONAL_8 = 458_894,
INTERNATIONAL_9 = 458_895,
LANG_HANGEUL = 458_896,
LANG_HANJA = 458_897,
LANG_KATAKANA = 458_898,
LANG_HIRAGANA = 458_899,
LANG_ZENKAKUHANKAKU = 458_900,
LANGUAGE_6 = 458_901,
LANGUAGE_7 = 458_902,
LANGUAGE_8 = 458_903,
LANGUAGE_9 = 458_904,
ALT_ERASE = 458_905,
ATTENTION = 458_906,
K_CANCEL = 458_907,
CLEAR = 458_908,
PRIOR = 458_909,
RETURN2 = 458_910,
SEPARATOR = 458_911,
OUT = 458_912,
OPER = 458_913,
CLEAR_AGAIN = 458_914,
CRSEL = 458_915,
EXSEL = 458_916,
KP_LEFT_PARENTHESIS = 458_934,
KP_RIGHT_PARENTHESIS = 458_935,
KP_CLEAR = 458_968,
LEFT_CONTROL = 458_976,
LEFT_SHIFT = 458_977,
LEFT_ALT = 458_978,
LEFT_COMMAND = 458_979,
RIGHT_CONTROL = 458_980,
RIGHT_SHIFT = 458_981,
RIGHT_ALT = 458_982,
RIGHT_COMMAND = 458_983,
K_PLAY_PAUSE = 458_984,
K_STOP2 = 458_985,
K_PREVIOUS = 458_986,
K_NEXT = 458_987,
K_EJECT = 458_988,
K_VOLUME_UP2 = 458_989,
K_VOLUME_DOWN2 = 458_990,
K_MUTE2 = 458_991,
K_WWW = 458_992,
K_BACK = 458_993,
K_FORWARD = 458_994,
K_STOP3 = 458_995,
K_FIND2 = 458_996,
K_SCROLL_UP = 458_997,
K_SCROLL_DOWN = 458_998,
K_EDIT = 458_999,
K_SLEEP = 459_000,
K_SCREENSAVER = 459_001,
K_REFRESH = 459_002,
K_CALCULATOR = 459_003,
C_POWER = 786_480,
C_RESET = 786_481,
C_SLEEP = 786_482,
C_SLEEP_MODE = 786_484,
C_MENU = 786_496,
C_MENU_SELECT = 786_497,
C_MENU_UP = 786_498,
C_MENU_DOWN = 786_499,
C_MENU_LEFT = 786_500,
C_MENU_RIGHT = 786_501,
C_MENU_ESCAPE = 786_502,
C_MENU_INCREASE = 786_503,
C_MENU_DECREASE = 786_504,
C_DATA_ON_SCREEN = 786_528,
C_SUBTITLES = 786_529,
C_SNAPSHOT = 786_533,
C_PIP = 786_535,
C_RED_BUTTON = 786_537,
C_GREEN_BUTTON = 786_538,
C_BLUE_BUTTON = 786_539,
C_YELLOW_BUTTON = 786_540,
C_ASPECT = 786_541,
C_MEDIA_STEP = 786_562,
C_RECALL_LAST = 786_563,
C_MEDIA_TV = 786_569,
C_MEDIA_WWW = 786_570,
C_MEDIA_DVD = 786_571,
C_MEDIA_PHONE = 786_572,
C_MEDIA_GAMES = 786_575,
C_MEDIA_CD = 786_577,
C_MEDIA_VCR = 786_578,
C_MEDIA_TUNER = 786_579,
C_QUIT = 786_580,
C_HELP = 786_581,
C_MEDIA_TAPE = 786_582,
C_MEDIA_CABLE = 786_583,
C_MEDIA_HOME = 786_586,
C_CHANNEL_INC = 786_588,
C_CHANNEL_DEC = 786_589,
C_MEDIA_VCR_PLUS = 786_592,
C_PLAY = 786_608,
C_PAUSE = 786_609,
C_RECORD = 786_610,
C_FAST_FORWARD = 786_611,
C_REWIND = 786_612,
C_NEXT = 786_613,
C_PREVIOUS = 786_614,
C_STOP = 786_615,
C_EJECT = 786_616,
C_RANDOM_PLAY = 786_617,
C_REPEAT = 786_620,
C_SLOW_TRACKING = 786_623,
C_STOP_EJECT = 786_636,
C_PLAY_PAUSE = 786_637,
C_VOICE_COMMAND = 786_639,
C_MUTE = 786_658,
C_BASS_BOOST = 786_661,
C_VOLUME_UP = 786_665,
C_VOLUME_DOWN = 786_666,
C_SLOW = 786_677,
C_AL_WORD = 786_820,
C_AL_TEXT_EDITOR = 786_821,
C_AL_SPREADSHEET = 786_822,
C_AL_DATABASE = 786_825,
C_AL_EMAIL = 786_826,
C_AL_NEWS = 786_827,
C_AL_VOICEMAIL = 786_828,
C_AL_CALENDAR = 786_830,
C_AL_JOURNAL = 786_832,
C_AL_FINANCE = 786_833,
C_AL_CALCULATOR = 786_834,
C_AL_WWW = 786_838,
C_AL_NETWORK_CHAT = 786_841,
C_AL_LOGOFF = 786_844,
C_AL_CONTROL_PANEL = 786_847,
C_AL_HELP = 786_854,
C_AL_DOCUMENTS = 786_855,
C_AL_SPELLCHECK = 786_859,
C_AL_SCREEN_SAVER = 786_865,
C_AL_FILE_BROWSER = 786_868,
C_AL_IMAGE_BROWSER = 786_870,
C_AL_AUDIO_BROWSER = 786_871,
C_AL_MOVIE_BROWSER = 786_872,
C_AC_NEW = 786_945,
C_AC_OPEN = 786_946,
C_AC_CLOSE = 786_947,
C_AC_EXIT = 786_948,
C_AC_SAVE = 786_951,
C_AC_PRINT = 786_952,
C_AC_PROPERTIES = 786_953,
C_AC_UNDO = 786_970,
C_AC_COPY = 786_971,
C_AC_CUT = 786_972,
C_AC_PASTE = 786_973,
C_AC_FIND = 786_975,
C_AC_SEARCH = 786_977,
C_AC_GOTO = 786_978,
C_AC_HOME = 786_979,
C_AC_BACK = 786_980,
C_AC_FORWARD = 786_981,
C_AC_STOP = 786_982,
C_AC_REFRESH = 786_983,
C_AC_FAVOURITES = 786_986,
C_AC_ZOOM_IN = 786_989,
C_AC_ZOOM_OUT = 786_990,
C_AC_ZOOM = 786_991,
C_AC_VIEW_TOGGLE = 786_994,
C_AC_SCROLL_UP = 786_995,
C_AC_SCROLL_DOWN = 786_996,
C_AC_EDIT = 787_005,
C_AC_CANCEL = 787_039,
C_AC_INSERT = 787_049,
C_AC_DEL = 787_050,
C_AC_REDO = 787_065,
C_AC_REPLY = 787_081,
C_AC_FORWARD_MAIL = 787_083,
C_AC_SEND = 787_084,
C_AC_NEXT_KEYBOARD_LAYOUT_SELECT = 787_101,
EXCLAMATION = 34_013_214,
AT_SIGN = 34_013_215,
POUND = 34_013_216,
DOLLAR = 34_013_217,
PERCENT = 34_013_218,
CARET = 34_013_219,
AMPERSAND = 34_013_220,
ASTERISK = 34_013_221,
UNDERSCORE = 34_013_229,
PLUS = 34_013_230,
PIPE = 34_013_233,
TILDE2 = 34_013_234,
COLON = 34_013_235,
TILDE = 34_013_237,
LESS_THAN = 34_013_238,
QUESTION = 34_013_240,
CLEAR2 = 34_013_267,
PIPE2 = 34_013_284,
}Expand description
ZMK keycode enum used in typed behavior APIs. ZMK keycode value
This is the primary key type used by typed behavior APIs.
Variants§
SYSTEM_POWER = 65_665
SYSTEM_SLEEP = 65_666
SYSTEM_WAKE_UP = 65_667
A = 458_756
B = 458_757
C = 458_758
D = 458_759
E = 458_760
F = 458_761
G = 458_762
H = 458_763
I = 458_764
J = 458_765
K = 458_766
L = 458_767
M = 458_768
N = 458_769
O = 458_770
P = 458_771
Q = 458_772
R = 458_773
S = 458_774
T = 458_775
U = 458_776
V = 458_777
W = 458_778
X = 458_779
Y = 458_780
Z = 458_781
NUMBER_1 = 458_782
NUMBER_2 = 458_783
NUMBER_3 = 458_784
NUMBER_4 = 458_785
NUMBER_5 = 458_786
NUMBER_6 = 458_787
NUMBER_7 = 458_788
NUMBER_8 = 458_789
NUMBER_9 = 458_790
NUMBER_0 = 458_791
RETURN = 458_792
ESCAPE = 458_793
BACKSPACE = 458_794
TAB = 458_795
SPACE = 458_796
MINUS = 458_797
EQUAL = 458_798
BACKSLASH = 458_801
NON_US_HASH = 458_802
SEMICOLON = 458_803
SINGLE_QUOTE = 458_804
GRAVE = 458_805
COMMA = 458_806
PERIOD = 458_807
SLASH = 458_808
CAPSLOCK = 458_809
F1 = 458_810
F2 = 458_811
F3 = 458_812
F4 = 458_813
F5 = 458_814
F6 = 458_815
F7 = 458_816
F8 = 458_817
F9 = 458_818
F10 = 458_819
F11 = 458_820
F12 = 458_821
PRINTSCREEN = 458_822
SCROLLLOCK = 458_823
PAUSE_BREAK = 458_824
INSERT = 458_825
HOME = 458_826
PAGE_UP = 458_827
DELETE = 458_828
END = 458_829
PAGE_DOWN = 458_830
RIGHT_ARROW = 458_831
LEFT_ARROW = 458_832
DOWN_ARROW = 458_833
UP_ARROW = 458_834
KP_NUMLOCK = 458_835
KP_DIVIDE = 458_836
KP_ASTERISK = 458_837
KP_SUBTRACT = 458_838
KP_PLUS = 458_839
KP_ENTER = 458_840
KP_NUMBER_1 = 458_841
KP_NUMBER_2 = 458_842
KP_NUMBER_3 = 458_843
KP_NUMBER_4 = 458_844
KP_NUMBER_5 = 458_845
KP_NUMBER_6 = 458_846
KP_NUMBER_7 = 458_847
KP_NUMBER_8 = 458_848
KP_NUMBER_9 = 458_849
KP_NUMBER_0 = 458_850
KP_DOT = 458_851
K_CONTEXT_MENU = 458_853
K_POWER = 458_854
KP_EQUAL = 458_855
F13 = 458_856
F14 = 458_857
F15 = 458_858
F16 = 458_859
F17 = 458_860
F18 = 458_861
F19 = 458_862
F20 = 458_863
F21 = 458_864
F22 = 458_865
F23 = 458_866
F24 = 458_867
K_EXECUTE = 458_868
K_HELP = 458_869
K_MENU = 458_870
K_SELECT = 458_871
K_STOP = 458_872
K_AGAIN = 458_873
K_UNDO = 458_874
K_CUT = 458_875
K_COPY = 458_876
K_PASTE = 458_877
K_FIND = 458_878
K_MUTE = 458_879
K_VOLUME_UP = 458_880
K_VOLUME_DOWN = 458_881
LOCKING_CAPS = 458_882
LOCKING_NUM = 458_883
LOCKING_SCROLL = 458_884
KP_COMMA = 458_885
KP_EQUAL_AS400 = 458_886
INTERNATIONAL_1 = 458_887
INT_KATAKANAHIRAGANA = 458_888
INTERNATIONAL_3 = 458_889
INTERNATIONAL_4 = 458_890
INTERNATIONAL_5 = 458_891
INTERNATIONAL_6 = 458_892
INTERNATIONAL_7 = 458_893
INTERNATIONAL_8 = 458_894
INTERNATIONAL_9 = 458_895
LANG_HANGEUL = 458_896
LANG_HANJA = 458_897
LANG_KATAKANA = 458_898
LANG_HIRAGANA = 458_899
LANG_ZENKAKUHANKAKU = 458_900
LANGUAGE_6 = 458_901
LANGUAGE_7 = 458_902
LANGUAGE_8 = 458_903
LANGUAGE_9 = 458_904
ALT_ERASE = 458_905
ATTENTION = 458_906
K_CANCEL = 458_907
CLEAR = 458_908
PRIOR = 458_909
RETURN2 = 458_910
SEPARATOR = 458_911
OUT = 458_912
OPER = 458_913
CLEAR_AGAIN = 458_914
CRSEL = 458_915
EXSEL = 458_916
KP_LEFT_PARENTHESIS = 458_934
KP_RIGHT_PARENTHESIS = 458_935
KP_CLEAR = 458_968
LEFT_CONTROL = 458_976
LEFT_SHIFT = 458_977
LEFT_ALT = 458_978
LEFT_COMMAND = 458_979
RIGHT_CONTROL = 458_980
RIGHT_SHIFT = 458_981
RIGHT_ALT = 458_982
RIGHT_COMMAND = 458_983
K_PLAY_PAUSE = 458_984
K_STOP2 = 458_985
K_PREVIOUS = 458_986
K_NEXT = 458_987
K_EJECT = 458_988
K_VOLUME_UP2 = 458_989
K_VOLUME_DOWN2 = 458_990
K_MUTE2 = 458_991
K_WWW = 458_992
K_BACK = 458_993
K_FORWARD = 458_994
K_STOP3 = 458_995
K_FIND2 = 458_996
K_SCROLL_UP = 458_997
K_SCROLL_DOWN = 458_998
K_EDIT = 458_999
K_SLEEP = 459_000
K_SCREENSAVER = 459_001
K_REFRESH = 459_002
K_CALCULATOR = 459_003
C_POWER = 786_480
C_RESET = 786_481
C_SLEEP = 786_482
C_SLEEP_MODE = 786_484
C_MENU = 786_496
C_MENU_SELECT = 786_497
C_MENU_UP = 786_498
C_MENU_DOWN = 786_499
C_MENU_LEFT = 786_500
C_MENU_RIGHT = 786_501
C_MENU_ESCAPE = 786_502
C_MENU_INCREASE = 786_503
C_MENU_DECREASE = 786_504
C_DATA_ON_SCREEN = 786_528
C_SUBTITLES = 786_529
C_SNAPSHOT = 786_533
C_PIP = 786_535
C_RED_BUTTON = 786_537
C_GREEN_BUTTON = 786_538
C_BLUE_BUTTON = 786_539
C_YELLOW_BUTTON = 786_540
C_ASPECT = 786_541
C_MEDIA_STEP = 786_562
C_RECALL_LAST = 786_563
C_MEDIA_TV = 786_569
C_MEDIA_WWW = 786_570
C_MEDIA_DVD = 786_571
C_MEDIA_PHONE = 786_572
C_MEDIA_GAMES = 786_575
C_MEDIA_CD = 786_577
C_MEDIA_VCR = 786_578
C_MEDIA_TUNER = 786_579
C_QUIT = 786_580
C_HELP = 786_581
C_MEDIA_TAPE = 786_582
C_MEDIA_CABLE = 786_583
C_MEDIA_HOME = 786_586
C_CHANNEL_INC = 786_588
C_CHANNEL_DEC = 786_589
C_MEDIA_VCR_PLUS = 786_592
C_PLAY = 786_608
C_PAUSE = 786_609
C_RECORD = 786_610
C_FAST_FORWARD = 786_611
C_REWIND = 786_612
C_NEXT = 786_613
C_PREVIOUS = 786_614
C_STOP = 786_615
C_EJECT = 786_616
C_RANDOM_PLAY = 786_617
C_REPEAT = 786_620
C_SLOW_TRACKING = 786_623
C_STOP_EJECT = 786_636
C_PLAY_PAUSE = 786_637
C_VOICE_COMMAND = 786_639
C_MUTE = 786_658
C_BASS_BOOST = 786_661
C_VOLUME_UP = 786_665
C_VOLUME_DOWN = 786_666
C_SLOW = 786_677
C_AL_WORD = 786_820
C_AL_TEXT_EDITOR = 786_821
C_AL_SPREADSHEET = 786_822
C_AL_DATABASE = 786_825
C_AL_EMAIL = 786_826
C_AL_NEWS = 786_827
C_AL_VOICEMAIL = 786_828
C_AL_CALENDAR = 786_830
C_AL_JOURNAL = 786_832
C_AL_FINANCE = 786_833
C_AL_CALCULATOR = 786_834
C_AL_WWW = 786_838
C_AL_NETWORK_CHAT = 786_841
C_AL_LOGOFF = 786_844
C_AL_CONTROL_PANEL = 786_847
C_AL_HELP = 786_854
C_AL_DOCUMENTS = 786_855
C_AL_SPELLCHECK = 786_859
C_AL_SCREEN_SAVER = 786_865
C_AL_FILE_BROWSER = 786_868
C_AL_IMAGE_BROWSER = 786_870
C_AL_AUDIO_BROWSER = 786_871
C_AL_MOVIE_BROWSER = 786_872
C_AC_NEW = 786_945
C_AC_OPEN = 786_946
C_AC_CLOSE = 786_947
C_AC_EXIT = 786_948
C_AC_SAVE = 786_951
C_AC_PRINT = 786_952
C_AC_PROPERTIES = 786_953
C_AC_UNDO = 786_970
C_AC_COPY = 786_971
C_AC_CUT = 786_972
C_AC_PASTE = 786_973
C_AC_FIND = 786_975
C_AC_SEARCH = 786_977
C_AC_GOTO = 786_978
C_AC_HOME = 786_979
C_AC_BACK = 786_980
C_AC_FORWARD = 786_981
C_AC_STOP = 786_982
C_AC_REFRESH = 786_983
C_AC_FAVOURITES = 786_986
C_AC_ZOOM_IN = 786_989
C_AC_ZOOM_OUT = 786_990
C_AC_ZOOM = 786_991
C_AC_VIEW_TOGGLE = 786_994
C_AC_SCROLL_UP = 786_995
C_AC_SCROLL_DOWN = 786_996
C_AC_EDIT = 787_005
C_AC_CANCEL = 787_039
C_AC_INSERT = 787_049
C_AC_DEL = 787_050
C_AC_REDO = 787_065
C_AC_REPLY = 787_081
C_AC_FORWARD_MAIL = 787_083
C_AC_SEND = 787_084
C_AC_NEXT_KEYBOARD_LAYOUT_SELECT = 787_101
EXCLAMATION = 34_013_214
AT_SIGN = 34_013_215
POUND = 34_013_216
DOLLAR = 34_013_217
PERCENT = 34_013_218
CARET = 34_013_219
AMPERSAND = 34_013_220
ASTERISK = 34_013_221
UNDERSCORE = 34_013_229
PLUS = 34_013_230
PIPE = 34_013_233
TILDE2 = 34_013_234
COLON = 34_013_235
TILDE = 34_013_237
LESS_THAN = 34_013_238
QUESTION = 34_013_240
CLEAR2 = 34_013_267
PIPE2 = 34_013_284
Implementations§
Source§impl Keycode
impl Keycode
Sourcepub const fn to_hid_usage(self) -> u32
pub const fn to_hid_usage(self) -> u32
Returns the raw HID usage value as encoded by ZMK.
Examples found in repository?
examples/basic_example.rs (line 116)
71fn run_example<T: Read + Write>(mut client: StudioClient<T>) -> Result<(), Box<dyn Error>> {
72 let info = client.get_device_info()?;
73 println!("Device: {}", info.name);
74 println!("Lock: {:?}", client.get_lock_state()?);
75
76 let behavior_ids = client.list_all_behaviors()?;
77 println!("Behavior count: {}", behavior_ids.len());
78 if let Some(first_behavior_id) = behavior_ids.first().copied() {
79 let details = client.get_behavior_details(first_behavior_id)?;
80 println!("First behavior: {} ({})", details.id, details.display_name);
81 }
82
83 let keymap = match client.get_keymap() {
84 Ok(keymap) => keymap,
85 Err(ClientError::Meta(_)) => {
86 println!("Keymap request denied (likely locked); press `&studio_unlock` then rerun.");
87 return Ok(());
88 }
89 Err(err) => return Err(Box::new(err)),
90 };
91 println!("Layers: {}", keymap.layers.len());
92
93 let layouts = client.get_physical_layouts()?;
94 println!(
95 "Physical layouts: {} (active index: {})",
96 layouts.layouts.len(),
97 layouts.active_layout_index
98 );
99
100 let Some(first_layer) = keymap.layers.first() else {
101 return Ok(());
102 };
103 if first_layer.bindings.is_empty() {
104 return Ok(());
105 }
106
107 let layer_id = first_layer.id;
108 let key_position = 0;
109
110 let before = client.get_key_at(layer_id, key_position)?;
111 println!("Before: {before:?}");
112
113 client.set_key_at(
114 layer_id,
115 key_position,
116 Behavior::KeyPress(HidUsage::from_encoded(Keycode::A.to_hid_usage())),
117 )?;
118 let after = client.get_key_at(layer_id, key_position)?;
119 println!("After: {after:?}");
120
121 // Change management APIs.
122 let has_changes = client.check_unsaved_changes()?;
123 println!("Unsaved changes: {has_changes}");
124 if has_changes {
125 client.discard_changes()?;
126 }
127
128 Ok(())
129}Sourcepub fn from_hid_usage(encoded: u32) -> Option<Self>
pub fn from_hid_usage(encoded: u32) -> Option<Self>
Converts a raw HID usage value into a known Keycode.
Returns None when the usage is not present in this enum table.
Trait Implementations§
Source§impl IntoEnumIterator for Keycode
impl IntoEnumIterator for Keycode
Source§impl TryFromPrimitive for Keycode
impl TryFromPrimitive for Keycode
impl Copy for Keycode
impl Eq for Keycode
impl StructuralPartialEq for Keycode
Auto Trait Implementations§
impl Freeze for Keycode
impl RefUnwindSafe for Keycode
impl Send for Keycode
impl Sync for Keycode
impl Unpin for Keycode
impl UnsafeUnpin for Keycode
impl UnwindSafe for Keycode
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more