config: Add keymap_from_names for RMLVO keymaps
This commit is contained in:
parent
bc9f2aef69
commit
0dfa6bc74b
5 changed files with 135 additions and 4 deletions
21
src/kbvm.rs
21
src/kbvm.rs
|
|
@ -92,6 +92,25 @@ impl KbvmContext {
|
|||
.ctx
|
||||
.keymap_from_bytes(WriteToLog, None, keymap)
|
||||
.map_err(KbvmError::CouldNotParseKeymap)?;
|
||||
let id = KbvmMapId(*blake3::hash(keymap).as_bytes());
|
||||
self.create_keymap(id, map)
|
||||
}
|
||||
|
||||
pub fn keymap_from_names(
|
||||
&self,
|
||||
rules: Option<&str>,
|
||||
model: Option<&str>,
|
||||
groups: Option<&[xkb::rmlvo::Group<'_>]>,
|
||||
options: Option<&[&str]>,
|
||||
) -> Result<Rc<KbvmMap>, KbvmError> {
|
||||
let map = self
|
||||
.ctx
|
||||
.keymap_from_names(WriteToLog, rules, model, groups, options);
|
||||
let id = KbvmMapId(*blake3::hash(map.format().to_string().as_bytes()).as_bytes());
|
||||
self.create_keymap(id, map)
|
||||
}
|
||||
|
||||
fn create_keymap(&self, id: KbvmMapId, map: Keymap) -> Result<Rc<KbvmMap>, KbvmError> {
|
||||
let mut has_indicators = false;
|
||||
let mut num_lock = None;
|
||||
let mut caps_lock = None;
|
||||
|
|
@ -111,7 +130,7 @@ impl KbvmContext {
|
|||
}
|
||||
let builder = map.to_builder();
|
||||
Ok(Rc::new(KbvmMap {
|
||||
id: KbvmMapId(*blake3::hash(keymap).as_bytes()),
|
||||
id,
|
||||
state_machine: builder.build_state_machine(),
|
||||
map: create_keymap_memfd(&map, false).map_err(KbvmError::KeymapMemfd)?,
|
||||
xwayland_map: create_keymap_memfd(&map, true).map_err(KbvmError::KeymapMemfd)?,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue