Format code
This commit is contained in:
parent
7d357149ff
commit
18515319a8
|
@ -3,9 +3,9 @@
|
|||
|
||||
use scopeguard::ScopeGuard;
|
||||
|
||||
use super::ffi::{XKB_CONTEXT_NO_FLAGS, xkb_context, xkb_context_new, xkb_context_unref};
|
||||
use thiserror::Error;
|
||||
use super::ffi::{xkb_context, xkb_context_new, xkb_context_unref, XKB_CONTEXT_NO_FLAGS};
|
||||
use anyhow::Result;
|
||||
use thiserror::Error;
|
||||
|
||||
pub struct Context {
|
||||
context: *mut xkb_context,
|
||||
|
@ -14,10 +14,8 @@ pub struct Context {
|
|||
impl Context {
|
||||
pub fn new() -> Result<Context> {
|
||||
let raw_context = unsafe { xkb_context_new(XKB_CONTEXT_NO_FLAGS) };
|
||||
let context = scopeguard::guard(raw_context, |raw_context| {
|
||||
unsafe {
|
||||
xkb_context_unref(raw_context);
|
||||
}
|
||||
let context = scopeguard::guard(raw_context, |raw_context| unsafe {
|
||||
xkb_context_unref(raw_context);
|
||||
});
|
||||
|
||||
if raw_context.is_null() {
|
||||
|
@ -46,4 +44,4 @@ impl Drop for Context {
|
|||
pub enum ContextError {
|
||||
#[error("could not create xkb context")]
|
||||
FailedCreation(),
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
use anyhow::Result;
|
||||
use libc::{input_event, size_t, ssize_t, EWOULDBLOCK, O_CLOEXEC, O_NONBLOCK, O_RDONLY};
|
||||
use log::{trace};
|
||||
use log::trace;
|
||||
use scopeguard::ScopeGuard;
|
||||
use std::os::unix::io::AsRawFd;
|
||||
use std::{
|
||||
|
@ -15,10 +15,9 @@ use thiserror::Error;
|
|||
|
||||
use super::{
|
||||
ffi::{
|
||||
is_keyboard, xkb_key_direction, xkb_keycode_t, xkb_keymap_key_repeats,
|
||||
xkb_state, xkb_state_get_keymap, xkb_state_key_get_one_sym,
|
||||
xkb_state_key_get_utf8, xkb_state_new, xkb_state_unref,
|
||||
xkb_state_update_key, EV_KEY,
|
||||
is_keyboard, xkb_key_direction, xkb_keycode_t, xkb_keymap_key_repeats, xkb_state,
|
||||
xkb_state_get_keymap, xkb_state_key_get_one_sym, xkb_state_key_get_utf8, xkb_state_new,
|
||||
xkb_state_unref, xkb_state_update_key, EV_KEY,
|
||||
},
|
||||
keymap::Keymap,
|
||||
};
|
||||
|
@ -66,10 +65,8 @@ impl Device {
|
|||
|
||||
let raw_state = unsafe { xkb_state_new(keymap.get_handle()) };
|
||||
// Automatically close the state if the function does not return correctly
|
||||
let state = scopeguard::guard(raw_state, |raw_state| {
|
||||
unsafe {
|
||||
xkb_state_unref(raw_state);
|
||||
}
|
||||
let state = scopeguard::guard(raw_state, |raw_state| unsafe {
|
||||
xkb_state_unref(raw_state);
|
||||
});
|
||||
|
||||
if raw_state.is_null() {
|
||||
|
@ -115,7 +112,7 @@ impl Device {
|
|||
}
|
||||
|
||||
let nevs: size_t = len as usize / std::mem::size_of::<input_event>();
|
||||
|
||||
|
||||
#[allow(clippy::needless_range_loop)]
|
||||
for i in 0..nevs {
|
||||
let event = self.process_event(evs[i].type_, evs[i].code, evs[i].value);
|
||||
|
|
|
@ -3,10 +3,13 @@
|
|||
|
||||
use scopeguard::ScopeGuard;
|
||||
|
||||
use thiserror::Error;
|
||||
use anyhow::Result;
|
||||
use thiserror::Error;
|
||||
|
||||
use super::{context::Context, ffi::{XKB_KEYMAP_COMPILE_NO_FLAGS, xkb_keymap, xkb_keymap_new_from_names, xkb_keymap_unref}};
|
||||
use super::{
|
||||
context::Context,
|
||||
ffi::{xkb_keymap, xkb_keymap_new_from_names, xkb_keymap_unref, XKB_KEYMAP_COMPILE_NO_FLAGS},
|
||||
};
|
||||
|
||||
pub struct Keymap {
|
||||
keymap: *mut xkb_keymap,
|
||||
|
@ -14,11 +17,15 @@ pub struct Keymap {
|
|||
|
||||
impl Keymap {
|
||||
pub fn new(context: &Context) -> Result<Keymap> {
|
||||
let raw_keymap = unsafe { xkb_keymap_new_from_names(context.get_handle(), std::ptr::null(), XKB_KEYMAP_COMPILE_NO_FLAGS) };
|
||||
let keymap = scopeguard::guard(raw_keymap, |raw_keymap| {
|
||||
unsafe {
|
||||
xkb_keymap_unref(raw_keymap);
|
||||
}
|
||||
let raw_keymap = unsafe {
|
||||
xkb_keymap_new_from_names(
|
||||
context.get_handle(),
|
||||
std::ptr::null(),
|
||||
XKB_KEYMAP_COMPILE_NO_FLAGS,
|
||||
)
|
||||
};
|
||||
let keymap = scopeguard::guard(raw_keymap, |raw_keymap| unsafe {
|
||||
xkb_keymap_unref(raw_keymap);
|
||||
});
|
||||
|
||||
if raw_keymap.is_null() {
|
||||
|
@ -47,4 +54,4 @@ impl Drop for Keymap {
|
|||
pub enum KeymapError {
|
||||
#[error("could not create xkb keymap")]
|
||||
FailedCreation(),
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@ mod device;
|
|||
mod ffi;
|
||||
mod keymap;
|
||||
|
||||
use anyhow::Result;
|
||||
use context::Context;
|
||||
use device::{get_devices, Device};
|
||||
use keymap::Keymap;
|
||||
|
@ -32,7 +33,6 @@ use libc::{
|
|||
__errno_location, close, epoll_ctl, epoll_event, epoll_wait, EINTR, EPOLLIN, EPOLL_CTL_ADD,
|
||||
};
|
||||
use log::{error, trace};
|
||||
use anyhow::Result;
|
||||
use thiserror::Error;
|
||||
|
||||
use crate::event::Status::*;
|
||||
|
@ -73,10 +73,10 @@ impl EVDEVSource {
|
|||
error!(
|
||||
"You can either add the current user to the 'input' group or run espanso as root"
|
||||
);
|
||||
return Err(EVDEVSourceError::PermissionDenied().into())
|
||||
return Err(EVDEVSourceError::PermissionDenied().into());
|
||||
}
|
||||
}
|
||||
return Err(error)
|
||||
return Err(error);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -165,7 +165,11 @@ impl From<RawInputEvent> for Option<InputEvent> {
|
|||
Some(keyboard_event.value)
|
||||
};
|
||||
|
||||
let status = if keyboard_event.is_down { Pressed } else { Released };
|
||||
let status = if keyboard_event.is_down {
|
||||
Pressed
|
||||
} else {
|
||||
Released
|
||||
};
|
||||
|
||||
return Some(InputEvent::Keyboard(KeyboardEvent {
|
||||
key,
|
||||
|
@ -177,7 +181,11 @@ impl From<RawInputEvent> for Option<InputEvent> {
|
|||
RawInputEvent::Mouse(mouse_event) => {
|
||||
let button = raw_to_mouse_button(mouse_event.code);
|
||||
|
||||
let status = if mouse_event.is_down { Pressed } else { Released };
|
||||
let status = if mouse_event.is_down {
|
||||
Pressed
|
||||
} else {
|
||||
Released
|
||||
};
|
||||
|
||||
if let Some(button) = button {
|
||||
return Some(InputEvent::Mouse(MouseEvent { button, status }));
|
||||
|
@ -253,10 +261,10 @@ fn key_sym_to_key(key_sym: i32) -> (Key, Option<Variant>) {
|
|||
fn raw_to_mouse_button(raw: u16) -> Option<MouseButton> {
|
||||
match raw {
|
||||
BTN_LEFT => Some(MouseButton::Left),
|
||||
BTN_RIGHT=> Some(MouseButton::Right),
|
||||
BTN_MIDDLE=> Some(MouseButton::Middle),
|
||||
BTN_SIDE=> Some(MouseButton::Button1),
|
||||
BTN_EXTRA=> Some(MouseButton::Button2),
|
||||
BTN_RIGHT => Some(MouseButton::Right),
|
||||
BTN_MIDDLE => Some(MouseButton::Middle),
|
||||
BTN_SIDE => Some(MouseButton::Button1),
|
||||
BTN_EXTRA => Some(MouseButton::Button2),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
@ -265,9 +273,12 @@ fn raw_to_mouse_button(raw: u16) -> Option<MouseButton> {
|
|||
mod tests {
|
||||
use device::RawMouseEvent;
|
||||
|
||||
use crate::event::{InputEvent, KeyboardEvent, Key::Other};
|
||||
use crate::event::{InputEvent, Key::Other, KeyboardEvent};
|
||||
|
||||
use super::{*, device::{RawInputEvent, RawKeyboardEvent}};
|
||||
use super::{
|
||||
device::{RawInputEvent, RawKeyboardEvent},
|
||||
*,
|
||||
};
|
||||
|
||||
#[test]
|
||||
fn raw_to_input_event_keyboard_works_correctly() {
|
||||
|
@ -305,4 +316,4 @@ mod tests {
|
|||
})
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,4 +26,4 @@ pub mod win32;
|
|||
pub mod x11;
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
pub mod evdev;
|
||||
pub mod evdev;
|
||||
|
|
|
@ -100,7 +100,7 @@ impl Win32Source {
|
|||
-2 => Win32SourceError::RawInputFailed(),
|
||||
_ => Win32SourceError::Unknown(),
|
||||
};
|
||||
return Err(error.into())
|
||||
return Err(error.into());
|
||||
}
|
||||
|
||||
self.handle = handle;
|
||||
|
|
|
@ -17,9 +17,7 @@
|
|||
* along with espanso. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
use std::{
|
||||
ffi::{c_void, CStr},
|
||||
};
|
||||
use std::ffi::{c_void, CStr};
|
||||
|
||||
use lazycell::LazyCell;
|
||||
use log::{error, trace, warn};
|
||||
|
@ -105,7 +103,7 @@ impl X11Source {
|
|||
-6 => X11SourceError::FailedRegistration("cannot enable XRecord context".to_owned()),
|
||||
_ => X11SourceError::Unknown(),
|
||||
};
|
||||
return Err(error.into())
|
||||
return Err(error.into());
|
||||
}
|
||||
|
||||
self.handle = handle;
|
||||
|
@ -307,7 +305,7 @@ fn raw_to_mouse_button(raw: i32) -> Option<MouseButton> {
|
|||
mod tests {
|
||||
use std::ffi::CString;
|
||||
|
||||
use super::*;
|
||||
use super::*;
|
||||
|
||||
fn default_raw_input_event() -> RawInputEvent {
|
||||
RawInputEvent {
|
||||
|
@ -380,4 +378,4 @@ mod tests {
|
|||
let result: Option<InputEvent> = raw.into();
|
||||
assert!(result.is_none());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,4 +9,4 @@ pub mod win32;
|
|||
pub mod linux;
|
||||
|
||||
#[cfg(target_os = "macos")]
|
||||
pub mod mac;
|
||||
pub mod mac;
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
* along with espanso. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
use std::{cmp::min, collections::HashMap, ffi::{CString}, os::raw::c_char, thread::ThreadId};
|
||||
use std::{cmp::min, collections::HashMap, ffi::CString, os::raw::c_char, thread::ThreadId};
|
||||
|
||||
use lazycell::LazyCell;
|
||||
use log::{error, trace};
|
||||
|
@ -49,10 +49,7 @@ pub struct RawUIEvent {
|
|||
#[allow(improper_ctypes)]
|
||||
#[link(name = "espansoui", kind = "static")]
|
||||
extern "C" {
|
||||
pub fn ui_initialize(
|
||||
_self: *const MacEventLoop,
|
||||
options: RawUIOptions,
|
||||
);
|
||||
pub fn ui_initialize(_self: *const MacEventLoop, options: RawUIOptions);
|
||||
pub fn ui_eventloop(
|
||||
event_callback: extern "C" fn(_self: *mut MacEventLoop, event: RawUIEvent),
|
||||
) -> i32;
|
||||
|
@ -80,10 +77,7 @@ pub fn create(options: MacUIOptions) -> (MacRemote, MacEventLoop) {
|
|||
icons.push(path.clone());
|
||||
}
|
||||
|
||||
let eventloop = MacEventLoop::new(
|
||||
icons,
|
||||
options.show_icon,
|
||||
);
|
||||
let eventloop = MacEventLoop::new(icons, options.show_icon);
|
||||
let remote = MacRemote::new(icon_indexes);
|
||||
|
||||
(remote, eventloop)
|
||||
|
@ -101,10 +95,7 @@ pub struct MacEventLoop {
|
|||
}
|
||||
|
||||
impl MacEventLoop {
|
||||
pub(crate) fn new(
|
||||
icons: Vec<String>,
|
||||
show_icon: bool,
|
||||
) -> Self {
|
||||
pub(crate) fn new(icons: Vec<String>, show_icon: bool) -> Self {
|
||||
Self {
|
||||
icons,
|
||||
show_icon,
|
||||
|
@ -118,7 +109,8 @@ impl MacEventLoop {
|
|||
let mut icon_paths: [[u8; MAX_FILE_PATH]; MAX_ICON_COUNT] =
|
||||
[[0; MAX_FILE_PATH]; MAX_ICON_COUNT];
|
||||
for (i, icon_path) in icon_paths.iter_mut().enumerate().take(self.icons.len()) {
|
||||
let c_path = CString::new(self.icons[i].clone()).expect("unable to create CString for UI tray icon path");
|
||||
let c_path = CString::new(self.icons[i].clone())
|
||||
.expect("unable to create CString for UI tray icon path");
|
||||
let len = min(c_path.as_bytes().len(), MAX_FILE_PATH - 1);
|
||||
icon_path[0..len].clone_from_slice(&c_path.as_bytes()[..len]);
|
||||
}
|
||||
|
@ -175,12 +167,8 @@ pub struct MacRemote {
|
|||
}
|
||||
|
||||
impl MacRemote {
|
||||
pub(crate) fn new(
|
||||
icon_indexes: HashMap<TrayIcon, usize>,
|
||||
) -> Self {
|
||||
Self {
|
||||
icon_indexes,
|
||||
}
|
||||
pub(crate) fn new(icon_indexes: HashMap<TrayIcon, usize>) -> Self {
|
||||
Self { icon_indexes }
|
||||
}
|
||||
|
||||
pub fn update_tray_icon(&self, icon: TrayIcon) {
|
||||
|
@ -196,10 +184,7 @@ impl MacRemote {
|
|||
match c_string {
|
||||
Ok(message) => unsafe { ui_show_notification(message.as_ptr(), 3.0) },
|
||||
Err(error) => {
|
||||
error!(
|
||||
"Unable to show notification {}",
|
||||
error
|
||||
);
|
||||
error!("Unable to show notification {}", error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -238,4 +223,4 @@ impl From<RawUIEvent> for Option<UIEvent> {
|
|||
|
||||
None
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@ void ui_initialize(void *_self, UIOptions _options)
|
|||
|
||||
int32_t ui_eventloop(EventCallback _callback)
|
||||
{
|
||||
AppDelegate *delegate = [[NSApplication sharedApplication] delegate];
|
||||
AppDelegate *delegate = (AppDelegate*)[[NSApplication sharedApplication] delegate];
|
||||
delegate->event_callback = _callback;
|
||||
|
||||
[NSApp run];
|
||||
|
@ -48,7 +48,7 @@ int32_t ui_eventloop(EventCallback _callback)
|
|||
void ui_update_tray_icon(int32_t index)
|
||||
{
|
||||
dispatch_async(dispatch_get_main_queue(), ^(void) {
|
||||
AppDelegate *delegate = [[NSApplication sharedApplication] delegate];
|
||||
AppDelegate *delegate = (AppDelegate*)[[NSApplication sharedApplication] delegate];
|
||||
[delegate setIcon: index];
|
||||
});
|
||||
}
|
||||
|
@ -57,7 +57,7 @@ void ui_show_notification(char *message, double delay)
|
|||
{
|
||||
NSString *nsMessage = [NSString stringWithUTF8String:message];
|
||||
dispatch_async(dispatch_get_main_queue(), ^(void) {
|
||||
AppDelegate *delegate = [[NSApplication sharedApplication] delegate];
|
||||
AppDelegate *delegate = (AppDelegate*)[[NSApplication sharedApplication] delegate];
|
||||
[delegate showNotification: nsMessage withDelay: delay];
|
||||
});
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ void ui_show_context_menu(char *payload)
|
|||
{
|
||||
NSString *nsPayload = [NSString stringWithUTF8String:payload];
|
||||
dispatch_async(dispatch_get_main_queue(), ^(void) {
|
||||
AppDelegate *delegate = [[NSApplication sharedApplication] delegate];
|
||||
AppDelegate *delegate = (AppDelegate*)[[NSApplication sharedApplication] delegate];
|
||||
[delegate popupMenu: nsPayload];
|
||||
});
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
use espanso_detect::event::{InputEvent, Status};
|
||||
use espanso_ui::{icons::TrayIcon, mac::*, menu::*, event::UIEvent::*};
|
||||
use espanso_ui::{event::UIEvent::*, icons::TrayIcon, mac::*, menu::*};
|
||||
use simplelog::{CombinedLogger, Config, LevelFilter, TermLogger, TerminalMode};
|
||||
|
||||
fn main() {
|
||||
|
@ -35,7 +35,6 @@ fn main() {
|
|||
),
|
||||
];
|
||||
|
||||
|
||||
// let (remote, mut eventloop) = espanso_ui::win32::create(espanso_ui::win32::Win32UIOptions {
|
||||
// show_icon: true,
|
||||
// icon_paths: &icon_paths,
|
||||
|
@ -48,7 +47,7 @@ fn main() {
|
|||
});
|
||||
|
||||
let handle = std::thread::spawn(move || {
|
||||
|
||||
|
||||
//let mut source = espanso_detect::win32::Win32Source::new();
|
||||
//let mut source = espanso_detect::x11::X11Source::new();
|
||||
// source.initialize();
|
||||
|
@ -91,6 +90,5 @@ fn main() {
|
|||
println!("item {:?}", menu.get_item_id(raw_id));
|
||||
}
|
||||
}
|
||||
|
||||
}));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user