keyboard: use fallback layout if failing to load
This commit is contained in:
@@ -68,10 +68,14 @@ where
|
|||||||
|
|
||||||
app.screens.clear();
|
app.screens.clear();
|
||||||
let data = if let Some(wl) = wl.as_mut() {
|
let data = if let Some(wl) = wl.as_mut() {
|
||||||
keymap = get_keymap_wl().ok();
|
keymap = get_keymap_wl()
|
||||||
|
.map_err(|f| log::warn!("Could not load keyboard layout: {}", f))
|
||||||
|
.ok();
|
||||||
crate::overlays::screen::create_screens_wayland(wl, app)?
|
crate::overlays::screen::create_screens_wayland(wl, app)?
|
||||||
} else {
|
} else {
|
||||||
keymap = get_keymap_x11().ok();
|
keymap = get_keymap_x11()
|
||||||
|
.map_err(|f| log::warn!("Could not load keyboard layout: {}", f))
|
||||||
|
.ok();
|
||||||
match crate::overlays::screen::create_screens_x11pw(app) {
|
match crate::overlays::screen::create_screens_x11pw(app) {
|
||||||
Ok(data) => data,
|
Ok(data) => data,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
|
|||||||
@@ -10,6 +10,11 @@ pub fn get_keymap_x11() -> anyhow::Result<XkbKeymap> {
|
|||||||
|
|
||||||
let (conn, _) = xcb::Connection::connect(None)?;
|
let (conn, _) = xcb::Connection::connect(None)?;
|
||||||
let device_id = get_core_keyboard_device_id(&conn);
|
let device_id = get_core_keyboard_device_id(&conn);
|
||||||
|
if device_id == -1 {
|
||||||
|
return Err(anyhow::anyhow!(
|
||||||
|
"get_core_keyboard_device_id returned -1. Check your XKB installation."
|
||||||
|
));
|
||||||
|
}
|
||||||
let keymap = keymap_new_from_device(&context, &conn, device_id, xkb::KEYMAP_COMPILE_NO_FLAGS);
|
let keymap = keymap_new_from_device(&context, &conn, device_id, xkb::KEYMAP_COMPILE_NO_FLAGS);
|
||||||
|
|
||||||
Ok(XkbKeymap { context, keymap })
|
Ok(XkbKeymap { context, keymap })
|
||||||
|
|||||||
@@ -62,29 +62,51 @@ macros:
|
|||||||
# Value: Array of strings. 0th element is the upper row, 1st element is lower row.
|
# Value: Array of strings. 0th element is the upper row, 1st element is lower row.
|
||||||
# For empty labels, use [] (do not use ~)
|
# For empty labels, use [] (do not use ~)
|
||||||
labels:
|
labels:
|
||||||
"Escape": ["Esc"]
|
"Escape": ["Esc"]
|
||||||
"Prior": ["PgUp"]
|
"Prior": ["PgUp"]
|
||||||
"Next": ["PgDn"]
|
"Next": ["PgDn"]
|
||||||
"NumLock": ["Num"]
|
"NumLock": ["Num"]
|
||||||
"Space": []
|
"Space": []
|
||||||
"LAlt": ["Alt"]
|
"LAlt": ["Alt"]
|
||||||
"LCtrl": ["Ctrl"]
|
"LCtrl": ["Ctrl"]
|
||||||
"RCtrl": ["Ctrl"]
|
"RCtrl": ["Ctrl"]
|
||||||
"LSuper": ["Super"]
|
"LSuper": ["Super"]
|
||||||
"RSuper": ["Super"]
|
"RSuper": ["Super"]
|
||||||
"LShift": ["Shift"]
|
"LShift": ["Shift"]
|
||||||
"RShift": ["Shift"]
|
"RShift": ["Shift"]
|
||||||
"Insert": ["Ins"]
|
"Insert": ["Ins"]
|
||||||
"Delete": ["Del"]
|
"Delete": ["Del"]
|
||||||
"BackSpace": ["<<"]
|
"BackSpace": ["<<"]
|
||||||
"KP_Divide": [" /"]
|
"KP_Divide": [" /"]
|
||||||
"KP_Add": [" +"]
|
"KP_Add": [" +"]
|
||||||
"KP_Multiply": [" *"]
|
"KP_Multiply": [" *"]
|
||||||
"KP_Decimal": [" ."]
|
"KP_Decimal": [" ."]
|
||||||
"KP_Subtract": [" -"]
|
"KP_Subtract": [" -"]
|
||||||
"KP_Enter": ["Ent"]
|
"KP_Enter": ["Ent"]
|
||||||
"Print": ["Prn"]
|
"Print": ["Prn"]
|
||||||
"Scroll": ["Scr"]
|
"Scroll": ["Scr"]
|
||||||
"Pause": ["Brk"]
|
"Pause": ["Brk"]
|
||||||
"XF86Favorites": ["Rofi"]
|
"XF86Favorites": ["Menu"] # fallback labels below
|
||||||
|
"N1": ["1", "!"]
|
||||||
|
"N2": ["2", "@"]
|
||||||
|
"N3": ["3", "#"]
|
||||||
|
"N4": ["4", "$"]
|
||||||
|
"N5": ["5", "%"]
|
||||||
|
"N6": ["6", "^"]
|
||||||
|
"N7": ["7", "&"]
|
||||||
|
"N8": ["8", "*"]
|
||||||
|
"N9": ["9", "("]
|
||||||
|
"N0": ["0", ")"]
|
||||||
|
"Minus": ["-", "_"]
|
||||||
|
"Plus": ["=", "+"]
|
||||||
|
"Comma": [" ,", "<"]
|
||||||
|
"Period": [" .", ">"]
|
||||||
|
"Oem1": [" ;", ":"]
|
||||||
|
"Oem2": [" /", "?"]
|
||||||
|
"Oem3": ["`", "~"]
|
||||||
|
"Oem4": [" [", "{"]
|
||||||
|
"Oem5": [" \\", "|"]
|
||||||
|
"Oem6": [" ]", "}"]
|
||||||
|
"Oem7": [" '", "\""]
|
||||||
|
"Oem102": [" \\", "|"]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user