Add key map converter table
This commit is contained in:
parent
52ec77137d
commit
dc1539d0d3
41
Cargo.lock
generated
41
Cargo.lock
generated
@ -7,6 +7,8 @@ dependencies = [
|
|||||||
"glib 0.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"glib 0.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"gtk 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
"gtk 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"neovim-lib 0.1.0",
|
"neovim-lib 0.1.0",
|
||||||
|
"phf 0.7.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"phf_codegen 0.7.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rmp 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rmp 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -233,11 +235,50 @@ dependencies = [
|
|||||||
"pkg-config 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"pkg-config 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "phf"
|
||||||
|
version = "0.7.14"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"phf_shared 0.7.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "phf_codegen"
|
||||||
|
version = "0.7.14"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"phf_generator 0.7.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"phf_shared 0.7.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "phf_generator"
|
||||||
|
version = "0.7.14"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"phf_shared 0.7.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "phf_shared"
|
||||||
|
version = "0.7.14"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pkg-config"
|
name = "pkg-config"
|
||||||
version = "0.3.8"
|
version = "0.3.8"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rand"
|
||||||
|
version = "0.3.14"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"libc 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rmp"
|
name = "rmp"
|
||||||
version = "0.7.3"
|
version = "0.7.3"
|
||||||
|
@ -10,6 +10,10 @@ glib = "0.0.8"
|
|||||||
gdk = "0.3.0"
|
gdk = "0.3.0"
|
||||||
#neovim-lib = "0.1"
|
#neovim-lib = "0.1"
|
||||||
rmp = "0.7"
|
rmp = "0.7"
|
||||||
|
phf = "0.7"
|
||||||
|
|
||||||
|
[build-dependencies]
|
||||||
|
phf_codegen = "0.7"
|
||||||
|
|
||||||
[dependencies.neovim-lib]
|
[dependencies.neovim-lib]
|
||||||
path = "../neovim-lib/"
|
path = "../neovim-lib/"
|
||||||
|
18
build.rs
18
build.rs
@ -1,5 +1,23 @@
|
|||||||
|
extern crate phf_codegen;
|
||||||
|
|
||||||
|
use std::env;
|
||||||
|
use std::fs::File;
|
||||||
|
use std::io::{BufWriter, Write};
|
||||||
|
use std::path::Path;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
if cfg!(target_os = "windows") {
|
if cfg!(target_os = "windows") {
|
||||||
println!("cargo:rustc-link-search=native=C:\\msys64\\mingw64\\lib");
|
println!("cargo:rustc-link-search=native=C:\\msys64\\mingw64\\lib");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let path = Path::new(&env::var("OUT_DIR").unwrap()).join("key_map_table.rs");
|
||||||
|
let mut file = BufWriter::new(File::create(&path).unwrap());
|
||||||
|
|
||||||
|
write!(&mut file, "static KEYVAL_MAP: phf::Map<&'static str, &'static str> = ").unwrap();
|
||||||
|
phf_codegen::Map::new()
|
||||||
|
.entry("Enter", "\"CR\"")
|
||||||
|
.entry("Return", "\"CR\"")
|
||||||
|
.build(&mut file)
|
||||||
|
.unwrap();
|
||||||
|
write!(&mut file, ";\n").unwrap();
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ extern crate glib;
|
|||||||
extern crate cairo;
|
extern crate cairo;
|
||||||
extern crate neovim_lib;
|
extern crate neovim_lib;
|
||||||
extern crate rmp;
|
extern crate rmp;
|
||||||
|
extern crate phf;
|
||||||
|
|
||||||
mod nvim;
|
mod nvim;
|
||||||
mod ui_model;
|
mod ui_model;
|
||||||
|
15
src/ui.rs
15
src/ui.rs
@ -96,6 +96,13 @@ impl Ui {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
use phf;
|
||||||
|
include!(concat!(env!("OUT_DIR"), "/key_map_table.rs"));
|
||||||
|
|
||||||
|
fn convert_keyval(input: &str) -> Option<&'static str> {
|
||||||
|
KEYVAL_MAP.get(input).cloned()
|
||||||
|
}
|
||||||
|
|
||||||
fn gtk_key_press(_: &Window, ev: &EventKey) -> Inhibit {
|
fn gtk_key_press(_: &Window, ev: &EventKey) -> Inhibit {
|
||||||
let keyval = ev.get_keyval();
|
let keyval = ev.get_keyval();
|
||||||
if let Some(keyval_name) = gdk::keyval_name(keyval) {
|
if let Some(keyval_name) = gdk::keyval_name(keyval) {
|
||||||
@ -106,7 +113,13 @@ fn gtk_key_press(_: &Window, ev: &EventKey) -> Inhibit {
|
|||||||
} else {
|
} else {
|
||||||
keyval_name
|
keyval_name
|
||||||
};
|
};
|
||||||
ui.nvim().input(&input).expect("Error run input command to nvim");
|
|
||||||
|
let converted_input: &str = if let Some(cnvt) = convert_keyval(&input) {
|
||||||
|
cnvt
|
||||||
|
} else {
|
||||||
|
&input
|
||||||
|
};
|
||||||
|
ui.nvim().input(converted_input).expect("Error run input command to nvim");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
Inhibit(true)
|
Inhibit(true)
|
||||||
|
Loading…
Reference in New Issue
Block a user