From 7d3eecb20516c2ef6063b1abcff56ec159ec3e1c Mon Sep 17 00:00:00 2001 From: Corey Farwell Date: Wed, 13 Jan 2016 18:35:50 -0500 Subject: [PATCH] Switch from rust-mmap to memmap-rs Closes #6 --- Cargo.toml | 2 +- src/lib.rs | 2 +- src/mapped_keyboard.rs | 16 ++++++++-------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 20d2517a..d663de4a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,7 @@ description = "Keyboard mapping utility for wayland-client using libxkbcommon." [dependencies] bitflags = "0.3" lazy_static = "0.1" -mmap = "0.1" +memmap = "0.2" wayland-client = "0.5" dlib = "0.2" diff --git a/src/lib.rs b/src/lib.rs index a66e3498..662441c3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -17,7 +17,7 @@ #[macro_use] extern crate bitflags; #[macro_use] extern crate dlib; #[macro_use] extern crate lazy_static; -extern crate mmap; +extern crate memmap; extern crate wayland_client; mod ffi; diff --git a/src/mapped_keyboard.rs b/src/mapped_keyboard.rs index c9f91439..d38d4edc 100644 --- a/src/mapped_keyboard.rs +++ b/src/mapped_keyboard.rs @@ -1,12 +1,13 @@ use wayland_client::{Event, EventIterator, Proxy}; use wayland_client::wayland::seat::{WlSeat, WlKeyboard, WlKeyboardEvent, WlKeyboardKeyState}; +use std::fs::File; use std::iter::Iterator; use std::ptr; -use std::os::unix::io::RawFd; +use std::os::unix::io::{FromRawFd, RawFd}; use std::sync::{Arc, Mutex}; -use mmap::{MemoryMap, MapOption}; +use memmap::{Mmap, Protection}; use ffi; use ffi::XKBCOMMON_HANDLE as XKBH; @@ -26,7 +27,7 @@ impl KbState { } pub fn get_one_sym(&self, keycode: u32) -> u32 { - unsafe { + unsafe { (XKBH.xkb_state_key_get_one_sym)( self.xkb_state, keycode + 8) } @@ -152,16 +153,15 @@ impl MappedKeyboard { fn init(&mut self, fd: RawFd, size: usize) { let mut state = self.state.lock().unwrap(); - let map = MemoryMap::new( - size as usize, - &[MapOption::MapReadable, MapOption::MapFd(fd)] - ).unwrap(); + let map = unsafe { + Mmap::open_with_offset(&File::from_raw_fd(fd), Protection::Read, 0, size).unwrap() + }; let xkb_keymap = { unsafe { (XKBH.xkb_keymap_new_from_string)( state.xkb_context, - map.data() as *const _, + map.ptr() as *const _, ffi::xkb_keymap_format::XKB_KEYMAP_FORMAT_TEXT_V1, ffi::xkb_keymap_compile_flags::XKB_KEYMAP_COMPILE_NO_FLAGS )