@@ -140,35 +140,36 @@ impl Layout {
140140
141141 /// Get the scancode number corresponding to a name
142142 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 ( ) ) ) ;
165159 }
166160 }
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+ }
167167 }
168168
169169 /// Get the name corresponding to a scancode number
170170 pub fn scancode_from_name ( & self , name : & Keycode ) -> Option < u16 > {
171171 match name {
172+ Keycode :: MT ( _, _) | Keycode :: LT ( _, _) if !self . meta . is_qmk => None ,
172173 Keycode :: MT ( mods, keycode_name) => {
173174 let kc = * self . keymap . get ( keycode_name) ?;
174175 Some ( QK_MOD_TAP | ( mods. bits ( ) << 8 ) | ( kc & 0xff ) )
@@ -189,8 +190,12 @@ impl Layout {
189190 return self . keymap . get ( mod_name) . copied ( ) ;
190191 }
191192 }
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+ }
194199 }
195200 }
196201 }
0 commit comments