mirror of
https://github.com/wez/wezterm.git
synced 2024-12-22 21:01:36 +03:00
window: point to re-integrated xkbcommon
refs: https://github.com/rust-x-bindings/xkbcommon-rs/pull/30
This commit is contained in:
parent
8523a1b0e7
commit
e5a483ff8b
25
Cargo.lock
generated
25
Cargo.lock
generated
@ -2066,16 +2066,6 @@ version = "2.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
||||
|
||||
[[package]]
|
||||
name = "memmap"
|
||||
version = "0.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"winapi 0.3.9",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "memmap2"
|
||||
version = "0.2.3"
|
||||
@ -2094,6 +2084,15 @@ dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "memmap2"
|
||||
version = "0.5.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "057a3db23999c867821a7a59feb06a578fcb03685e983dff90daf9e7d24ac08f"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "memmem"
|
||||
version = "0.1.1"
|
||||
@ -5193,11 +5192,11 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "xkbcommon"
|
||||
version = "0.6.0"
|
||||
source = "git+https://github.com/wez/xkbcommon-rs.git?rev=69a29877e99369b4ec74703d3193b6dd694145e9#69a29877e99369b4ec74703d3193b6dd694145e9"
|
||||
version = "0.5.0-beta.0"
|
||||
source = "git+https://github.com/wez/xkbcommon-rs.git?branch=key-by-name#546ba7dbf2ace214b9947fc4646a0f4afd70cb0a"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"memmap",
|
||||
"memmap2 0.5.3",
|
||||
"xcb",
|
||||
]
|
||||
|
||||
|
@ -68,7 +68,7 @@ dirs-next = "2.0"
|
||||
filedescriptor = { version="0.8", path = "../filedescriptor" }
|
||||
x11 = {version ="2.19", features = ["xlib_xcb"]}
|
||||
xcb = {version="1.1", features=["render", "randr", "xkb", "xlib_xcb"]}
|
||||
xkbcommon = { version = "0.6", features = ["x11", "wayland"], git="https://github.com/wez/xkbcommon-rs.git", rev="69a29877e99369b4ec74703d3193b6dd694145e9"}
|
||||
xkbcommon = { version = "0.5.0-beta.0", features = ["x11", "wayland"], git="https://github.com/wez/xkbcommon-rs.git", branch="key-by-name"}
|
||||
#xkbcommon = { version = "0.6", features = ["x11", "wayland"], path="../../xkbcommon-rs" }
|
||||
mio = {version="0.8", features=["os-ext"]}
|
||||
libc = "0.2"
|
||||
|
@ -7,7 +7,8 @@ use anyhow::{anyhow, ensure};
|
||||
use libc;
|
||||
use std::cell::RefCell;
|
||||
use std::collections::HashMap;
|
||||
use std::ffi::CStr;
|
||||
use std::ffi::{CStr, OsStr};
|
||||
use std::os::unix::ffi::OsStrExt;
|
||||
use wezterm_input_types::PhysKeyCode;
|
||||
use xkb::compose::Status as ComposeStatus;
|
||||
use xkbcommon::xkb;
|
||||
@ -141,12 +142,9 @@ impl Keyboard {
|
||||
let state = xkb::State::new(&keymap);
|
||||
let locale = query_lc_ctype()?;
|
||||
|
||||
let table = xkb::compose::Table::new_from_locale(
|
||||
&context,
|
||||
locale.to_str()?,
|
||||
xkb::compose::COMPILE_NO_FLAGS,
|
||||
)
|
||||
.map_err(|_| anyhow!("Failed to acquire compose table from locale"))?;
|
||||
let table =
|
||||
xkb::compose::Table::new_from_locale(&context, locale, xkb::compose::COMPILE_NO_FLAGS)
|
||||
.map_err(|_| anyhow!("Failed to acquire compose table from locale"))?;
|
||||
let compose_state = xkb::compose::State::new(&table, xkb::compose::STATE_NO_FLAGS);
|
||||
|
||||
let phys_code_map = build_physkeycode_map(&keymap);
|
||||
@ -184,12 +182,9 @@ impl Keyboard {
|
||||
|
||||
let locale = query_lc_ctype()?;
|
||||
|
||||
let table = xkb::compose::Table::new_from_locale(
|
||||
&context,
|
||||
locale.to_str()?,
|
||||
xkb::compose::COMPILE_NO_FLAGS,
|
||||
)
|
||||
.map_err(|_| anyhow!("Failed to acquire compose table from locale"))?;
|
||||
let table =
|
||||
xkb::compose::Table::new_from_locale(&context, locale, xkb::compose::COMPILE_NO_FLAGS)
|
||||
.map_err(|_| anyhow!("Failed to acquire compose table from locale"))?;
|
||||
let compose_state = xkb::compose::State::new(&table, xkb::compose::STATE_NO_FLAGS);
|
||||
|
||||
{
|
||||
@ -487,10 +482,11 @@ impl Keyboard {
|
||||
}
|
||||
}
|
||||
|
||||
fn query_lc_ctype() -> anyhow::Result<&'static CStr> {
|
||||
fn query_lc_ctype() -> anyhow::Result<&'static OsStr> {
|
||||
let ptr = unsafe { libc::setlocale(libc::LC_CTYPE, std::ptr::null()) };
|
||||
ensure!(!ptr.is_null(), "failed to query locale");
|
||||
unsafe { Ok(CStr::from_ptr(ptr)) }
|
||||
let cstr = unsafe { CStr::from_ptr(ptr) };
|
||||
Ok(OsStr::from_bytes(cstr.to_bytes()))
|
||||
}
|
||||
|
||||
fn build_physkeycode_map(keymap: &xkb::Keymap) -> HashMap<xkb::Keycode, PhysKeyCode> {
|
||||
|
Loading…
Reference in New Issue
Block a user