From 2b3cdc3c8b852df0ab7e5aa9188939c069db0351 Mon Sep 17 00:00:00 2001 From: galister <22305755+galister@users.noreply.github.com> Date: Tue, 16 Dec 2025 11:21:56 +0900 Subject: [PATCH] fcitx: capture variant by regex --- wlx-overlay-s/src/overlays/keyboard/mod.rs | 18 ++++++++++++------ wlx-overlay-s/src/subsystem/hid/mod.rs | 14 +++++++++++--- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/wlx-overlay-s/src/overlays/keyboard/mod.rs b/wlx-overlay-s/src/overlays/keyboard/mod.rs index c364b3b..4e535c5 100644 --- a/wlx-overlay-s/src/overlays/keyboard/mod.rs +++ b/wlx-overlay-s/src/overlays/keyboard/mod.rs @@ -1,8 +1,8 @@ use std::{ - cell::Cell, + cell::{Cell, LazyCell}, collections::HashMap, process::{Child, Command}, - sync::atomic::Ordering, + sync::{LazyLock, atomic::Ordering}, }; use crate::{ @@ -22,6 +22,7 @@ use crate::{ }; use anyhow::Context; use glam::{Affine3A, Quat, Vec3, vec3}; +use regex::Regex; use slotmap::{SlotMap, new_key_type}; use wgui::{ drawing, @@ -62,6 +63,7 @@ pub fn create_keyboard(app: &mut AppState, wayland: bool) -> anyhow::Result Option { + pub fn from_layout_variant(layout: &str, variant: &str) -> Option { let context = xkb::Context::new(xkb::CONTEXT_NO_FLAGS); - xkb::Keymap::new_from_names(&context, "", "", layout, "", None, xkb::COMPILE_NO_FLAGS) - .map(|inner| XkbKeymap { inner }) + xkb::Keymap::new_from_names( + &context, + "", + "", + layout, + variant, + None, + xkb::COMPILE_NO_FLAGS, + ) + .map(|inner| XkbKeymap { inner }) } pub fn get_name(&self) -> Option<&str> {