Files
teipe/libxkbcommonrs/src/ffi.rs
2024-08-18 17:43:59 +02:00

62 lines
1.8 KiB
Rust

#![allow(non_upper_case_globals)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(unused)]
use std::fmt::{Debug, Display};
pub mod syms {
include!(concat!(env!("OUT_DIR"), "/libxkbcommon-keysyms.rs"));
}
include!(concat!(env!("OUT_DIR"), "/libxkbcommon.rs"));
impl From<log_level> for log::Level {
fn from(value: log_level) -> Self {
match value {
log_level::Debug => log::Level::Debug,
log_level::Info => log::Level::Info,
log_level::Warning => log::Level::Warn,
log_level::Error => log::Level::Error,
_ => log::Level::Debug,
}
}
}
impl From<log::Level> for log_level {
fn from(value: log::Level) -> Self {
match value {
log::Level::Trace | log::Level::Debug => log_level::Debug,
log::Level::Info => log_level::Info,
log::Level::Warn => log_level::Warning,
log::Level::Error => log_level::Error,
}
}
}
impl Display for Keysym {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let mut buffer = [0_u8; 32];
let written =
unsafe { keysym_to_utf8(*self, buffer.as_mut_ptr() as *mut _, buffer.len()) } as usize;
let str = std::str::from_utf8(&buffer[0..written]).unwrap_or("<invalid>");
write!(f, "{str}")
}
}
impl std::fmt::Debug for Keysym {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let mut buffer = [0_u8; 32];
let written =
unsafe { keysym_get_name(*self, buffer.as_mut_ptr() as *mut _, buffer.len()) } as usize;
let str = std::str::from_utf8(&buffer[0..written]).unwrap_or("<invalid>");
write!(f, "{str}")
}
}
impl From<u32> for Keysym {
fn from(value: u32) -> Self {
Self(value)
}
}