@@ -140,35 +140,36 @@ impl Layout {
140
140
141
141
/// Get the scancode number corresponding to a name
142
142
pub fn scancode_to_name ( & self , scancode : u16 ) -> Option < Keycode > {
143
- // XXX only on QMK?
144
- if scancode >= QK_MOD_TAP && scancode <= QK_MOD_TAP_MAX {
145
- let mods = Mods :: from_bits ( ( scancode >> 8 ) & 0x1f ) ?;
146
- let kc = scancode & 0xff ;
147
- let kc_name = self . scancode_names . get ( & kc) ?;
148
- Some ( Keycode :: MT ( mods, kc_name. clone ( ) ) )
149
- } else if scancode >= QK_LAYER_TAP && scancode <= QK_LAYER_TAP_MAX {
150
- let layer = ( ( scancode >> 8 ) & 0xf ) as u8 ;
151
- let kc = scancode & 0xff ;
152
- let kc_name = self . scancode_names . get ( & kc) ?;
153
- Some ( Keycode :: LT ( layer, kc_name. clone ( ) ) )
154
- } else if scancode >= QK_MODS && scancode <= QK_MODS_MAX {
155
- let mods = Mods :: from_bits ( ( scancode >> 8 ) & 0x1f ) ?;
156
- let kc = scancode & 0xff ;
157
- let kc_name = self . scancode_names . get ( & kc) ?;
158
- Some ( Keycode :: Basic ( mods, kc_name. clone ( ) ) )
159
- } else {
160
- let kc_name = self . scancode_names . get ( & scancode) ?;
161
- if let Some ( mods) = Mods :: from_mod_str ( kc_name) {
162
- Some ( Keycode :: Basic ( mods, "NONE" . to_string ( ) ) )
163
- } else {
164
- Some ( Keycode :: Basic ( Mods :: empty ( ) , kc_name. clone ( ) ) )
143
+ if self . meta . is_qmk {
144
+ if scancode >= QK_MOD_TAP && scancode <= QK_MOD_TAP_MAX {
145
+ let mods = Mods :: from_bits ( ( scancode >> 8 ) & 0x1f ) ?;
146
+ let kc = scancode & 0xff ;
147
+ let kc_name = self . scancode_names . get ( & kc) ?;
148
+ return Some ( Keycode :: MT ( mods, kc_name. clone ( ) ) ) ;
149
+ } else if scancode >= QK_LAYER_TAP && scancode <= QK_LAYER_TAP_MAX {
150
+ let layer = ( ( scancode >> 8 ) & 0xf ) as u8 ;
151
+ let kc = scancode & 0xff ;
152
+ let kc_name = self . scancode_names . get ( & kc) ?;
153
+ return Some ( Keycode :: LT ( layer, kc_name. clone ( ) ) ) ;
154
+ } else if scancode >= QK_MODS && scancode <= QK_MODS_MAX {
155
+ let mods = Mods :: from_bits ( ( scancode >> 8 ) & 0x1f ) ?;
156
+ let kc = scancode & 0xff ;
157
+ let kc_name = self . scancode_names . get ( & kc) ?;
158
+ return Some ( Keycode :: Basic ( mods, kc_name. clone ( ) ) ) ;
165
159
}
166
160
}
161
+ let kc_name = self . scancode_names . get ( & scancode) ?;
162
+ if let Some ( mods) = Mods :: from_mod_str ( kc_name) {
163
+ Some ( Keycode :: Basic ( mods, "NONE" . to_string ( ) ) )
164
+ } else {
165
+ Some ( Keycode :: Basic ( Mods :: empty ( ) , kc_name. clone ( ) ) )
166
+ }
167
167
}
168
168
169
169
/// Get the name corresponding to a scancode number
170
170
pub fn scancode_from_name ( & self , name : & Keycode ) -> Option < u16 > {
171
171
match name {
172
+ Keycode :: MT ( _, _) | Keycode :: LT ( _, _) if !self . meta . is_qmk => None ,
172
173
Keycode :: MT ( mods, keycode_name) => {
173
174
let kc = * self . keymap . get ( keycode_name) ?;
174
175
Some ( QK_MOD_TAP | ( mods. bits ( ) << 8 ) | ( kc & 0xff ) )
@@ -189,8 +190,12 @@ impl Layout {
189
190
return self . keymap . get ( mod_name) . copied ( ) ;
190
191
}
191
192
}
192
- let kc = * self . keymap . get ( keycode_name) ?;
193
- Some ( ( mods. bits ( ) << 8 ) | ( kc & 0xff ) )
193
+ if self . meta . is_qmk {
194
+ let kc = * self . keymap . get ( keycode_name) ?;
195
+ Some ( ( mods. bits ( ) << 8 ) | ( kc & 0xff ) )
196
+ } else {
197
+ None
198
+ }
194
199
}
195
200
}
196
201
}
0 commit comments