Skip to content

Commit 11a620a

Browse files
committed
chore: Accessor methods for keycodes in Layout
1 parent 29afacc commit 11a620a

File tree

3 files changed

+15
-8
lines changed

3 files changed

+15
-8
lines changed

backend/src/key.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ impl Key {
8989
debug!(" Scancode: {:04X}", scancode);
9090
debug!(
9191
" Scancode Name: {:?}",
92-
board.layout().scancode_names.get(&scancode)
92+
board.layout().scancode_to_name(scancode)
9393
);
9494

9595
scancodes.push(Cell::new(scancode));
@@ -145,7 +145,7 @@ impl Key {
145145
pub fn get_scancode(&self, layer: usize) -> Option<(u16, String)> {
146146
let board = self.board();
147147
let scancode = self.scancodes.get(layer)?.get();
148-
let scancode_name = match board.layout().scancode_names.get(&scancode) {
148+
let scancode_name = match board.layout().scancode_to_name(scancode) {
149149
Some(some) => some.to_string(),
150150
None => String::new(),
151151
};
@@ -154,10 +154,9 @@ impl Key {
154154

155155
pub fn set_scancode(&self, layer: usize, scancode_name: &str) -> Result<(), String> {
156156
let board = self.board();
157-
let scancode = *board
157+
let scancode = board
158158
.layout()
159-
.keymap
160-
.get(scancode_name)
159+
.scancode_from_name(scancode_name)
161160
.ok_or_else(|| format!("Unable to find scancode '{}'", scancode_name))?;
162161
board.0.daemon.keymap_set(
163162
board.0.board,

backend/src/layout/mod.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ use crate::KeyMap;
1010
pub struct Layout {
1111
pub meta: Meta,
1212
pub default: KeyMap,
13-
pub keymap: HashMap<String, u16>,
14-
pub scancode_names: HashMap<u16, String>,
13+
keymap: HashMap<String, u16>,
14+
scancode_names: HashMap<u16, String>,
1515
pub(crate) physical: Vec<PhysicalLayoutKey>,
1616
pub(crate) layout: HashMap<String, (u8, u8)>,
1717
pub(crate) leds: HashMap<String, Vec<u8>>,
@@ -133,6 +133,14 @@ impl Layout {
133133
},
134134
)
135135
}
136+
137+
pub fn scancode_to_name(&self, scancode: u16) -> Option<&str> {
138+
self.scancode_names.get(&scancode).map(String::as_str)
139+
}
140+
141+
pub fn scancode_from_name(&self, name: &str) -> Option<u16> {
142+
self.keymap.get(name).copied()
143+
}
136144
}
137145

138146
fn parse_keymap_json(keymap_json: &str) -> (HashMap<String, u16>, HashMap<u16, String>) {

src/application/keyboard.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ impl Keyboard {
237237
}
238238

239239
pub fn has_scancode(&self, scancode_name: &str) -> bool {
240-
self.layout().keymap.contains_key(scancode_name)
240+
self.layout().scancode_from_name(scancode_name).is_some()
241241
}
242242

243243
pub fn keymap_set(&self, key_index: usize, layer: usize, scancode_name: &str) {

0 commit comments

Comments
 (0)