#vim #key #codes #standardized #trie #keychords

keymaps

A rust crate which provides a standardized encoding for key codes

9 releases (1 stable)

1.0.0 Feb 1, 2025
0.3.1 Jan 31, 2025
0.2.1 Jan 31, 2025
0.1.2 Jul 20, 2024
0.0.0 Dec 23, 2023

#449 in Data structures

Download history 7/week @ 2024-12-10 554/week @ 2025-01-28 83/week @ 2025-02-04

637 downloads per month

LGPL-3.0-or-later

83KB
1.5K SLoC

Keymaps

A rust crate which provides a standardized encoding for key codes

Quickstart

use keymaps::{
    key_repr::{Key, Keys},
    map_tree::Trie,
};

fn main() {
    let mut tree = MapTrie::<&str>::new();

    let keys: Vec<Key> = Key::parse_multiple("<C-c>ab").unwrap();
    tree.insert(&keys, "first").unwrap();

    let keys: Vec<Key> = Key::parse_multiple("<CA-B>ac").unwrap();
    tree.insert(&keys, "second").unwrap();

    let keys: Keys = ("<AMC-0>d").parse().unwrap();
    tree.insert(&keys, "third").unwrap();

    println!("Got value: '{}'", tree.get(&keys).unwrap().value().unwrap());

    println!("Tree is: \n{tree}");
}

Licence

This program is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Dependencies

~0.2–9MB
~103K SLoC