Skip to content

Commit 939c12d

Browse files
committed
remove height attribute; update error messages; add full key bindings; add default highlights
1 parent 397e1df commit 939c12d

7 files changed

Lines changed: 83 additions & 44 deletions

File tree

layouts/60.tvkl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#esc_len = $5
44
#esc_color = @($201, $113, $217)
55

6-
:| Esc [#esc_len,,#esc_color] | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | '-' | '=' | Back [$8] |-
6+
:| Esc [#esc_len,#esc_color] | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | '-' | '=' | Back [$8] |-
77
:| Tab [$7] | Q | W | E | R | T | Y | U | I | O | P | '[' | ']' | '\' [$6] |-
88
:| Caps [$8] | A | S | D | F | G | H | J | K | L | ';' | "'" | Enter [$9] |-
99
:| LShift [$10] | Z | X | C | V | B | N | M | ',' | '.' | '/' | RShift [$11] |-

layouts/60_blue.tvkl

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,31 +13,31 @@
1313
#mod_len = $7
1414
#space_len = $20
1515

16-
:| Esc [#esc_len,,#esc_color]
16+
:| Esc [#esc_len,#esc_color]
1717
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0
1818
| '-' | '='
19-
| Back [$9,,#fn_border] |-
19+
| Back [$9,#fn_border] |-
2020

21-
:| Tab [$8,,#fn_border]
21+
:| Tab [$8,#fn_border]
2222
| Q | W | E | R | T | Y | U | I | O | P
2323
| '[' | ']'
24-
| '\' [$7,,#fn_border] |-
24+
| '\' [$7,#fn_border] |-
2525

26-
:| Caps [$9,,#fn_border]
26+
:| Caps [$9,#fn_border]
2727
| A | S | D | F | G | H | J | K | L
2828
| ';' | "'"
29-
| Enter [$10,,#enter_color] |-
29+
| Enter [$10,#enter_color] |-
3030

31-
:| LShift [$12,,#fn_border]
31+
:| LShift [$12,#fn_border]
3232
| Z | X | C | V | B | N | M
3333
| ',' | '.' | '/'
34-
| RShift [$11,,#fn_border] |-
35-
36-
:| LCtrl [#mod_len,,#fn_border]
37-
| Win [$5,,#fn_border]
38-
| LAlt [#mod_len,,#fn_border]
39-
| Space [#space_len,,#space_color]
40-
| RAlt [#mod_len,,#fn_border]
41-
| Win [$5,,#fn_border]
42-
| App [$5,,#fn_border]
43-
| RCtrl [#mod_len,,#fn_border] |-
34+
| RShift [$11,#fn_border] |-
35+
36+
:| LCtrl [#mod_len,#fn_border]
37+
| Win [$5,#fn_border]
38+
| LAlt [#mod_len,#fn_border]
39+
| Space [#space_len,#space_color]
40+
| RAlt [#mod_len,#fn_border]
41+
| Win [$5,#fn_border]
42+
| App [$5,#fn_border]
43+
| RCtrl [#mod_len,#fn_border] |-

layouts/multi_binds.tvkl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1+
#highlight_l4 = @($227, $77, $77)
2+
13
:| A, B, C, D | 1, 2, 3, 4, 5, 6, 7, 8, 9, 0|-

src/layout.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ pub struct Layout {
1010
#[derive(Debug)]
1111
pub struct Attr {
1212
pub width: u16,
13-
pub height: u16,
1413
pub border_color: Option<Color>,
1514
pub highlight: Option<Color>,
1615
}
@@ -23,7 +22,6 @@ impl Attr {
2322
};
2423
Self {
2524
width,
26-
height: 3,
2725
border_color: None,
2826
highlight: None,
2927
}

src/main.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,13 @@ struct AppState {
3737
kps_events: Vec<Instant>,
3838
}
3939

40-
fn main() -> Result<(), AppError> {
40+
fn main() {
41+
if let Err(e) = run() {
42+
eprintln!("{}", e);
43+
}
44+
}
45+
46+
fn run() -> Result<(), AppError> {
4147

4248
let mut env = Env::new();
4349
let args = Args::parse();

src/parser.rs

Lines changed: 52 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,8 @@ impl Parser {
139139
}
140140

141141
fn parse_attr(&mut self, attr: &mut Attr, env: &Env) -> Result<(), ParserError> {
142-
// [width, height, border_color, highlight]
143-
self.consume(TokenType::LBracket)?; // [
142+
// [width, border_color, highlight]
143+
self.consume(TokenType::LBracket)?;
144144

145145
let mut pos = 0;
146146

@@ -163,22 +163,14 @@ impl Parser {
163163
}
164164
}
165165
1 => {
166-
// height
167-
if let Value::Number(h) = self.parse_value(env)? {
168-
attr.height = h;
169-
} else {
170-
return Err(ParserError::Err("Height must be a number".into()));
171-
}
172-
}
173-
2 => {
174166
// border_color
175167
if let Value::RGB(r, g, b) = self.parse_value(env)? {
176168
attr.border_color = Some(Color::Rgb(r, g, b));
177169
} else {
178170
return Err(ParserError::Err("Border color must be RGB".into()));
179171
}
180172
}
181-
3 => {
173+
2 => {
182174
// highlight
183175
if let Value::RGB(r, g, b) = self.parse_value(env)? {
184176
attr.highlight = Some(Color::Rgb(r, g, b));
@@ -204,7 +196,6 @@ impl Parser {
204196

205197
fn get_rdev_key(name: &str) -> Option<Key> {
206198
match name.to_lowercase().as_str() {
207-
"esc" | "escape" => Some(Key::Escape),
208199
"1" => Some(Key::Num1),
209200
"2" => Some(Key::Num2),
210201
"3" => Some(Key::Num3),
@@ -215,8 +206,7 @@ fn get_rdev_key(name: &str) -> Option<Key> {
215206
"8" => Some(Key::Num8),
216207
"9" => Some(Key::Num9),
217208
"0" => Some(Key::Num0),
218-
"back" | "backspace" => Some(Key::Backspace),
219-
"tab" => Some(Key::Tab),
209+
220210
"q" => Some(Key::KeyQ),
221211
"w" => Some(Key::KeyW),
222212
"e" => Some(Key::KeyE),
@@ -227,8 +217,6 @@ fn get_rdev_key(name: &str) -> Option<Key> {
227217
"i" => Some(Key::KeyI),
228218
"o" => Some(Key::KeyO),
229219
"p" => Some(Key::KeyP),
230-
"enter" | "return" => Some(Key::Return),
231-
"caps" | "capslock" => Some(Key::CapsLock),
232220
"a" => Some(Key::KeyA),
233221
"s" => Some(Key::KeyS),
234222
"d" => Some(Key::KeyD),
@@ -238,20 +226,65 @@ fn get_rdev_key(name: &str) -> Option<Key> {
238226
"j" => Some(Key::KeyJ),
239227
"k" => Some(Key::KeyK),
240228
"l" => Some(Key::KeyL),
241-
"lshift" | "shift" => Some(Key::ShiftLeft),
242-
"rshift" => Some(Key::ShiftRight),
243229
"z" => Some(Key::KeyZ),
244230
"x" => Some(Key::KeyX),
245231
"c" => Some(Key::KeyC),
246232
"v" => Some(Key::KeyV),
247233
"b" => Some(Key::KeyB),
248234
"n" => Some(Key::KeyN),
249235
"m" => Some(Key::KeyM),
236+
237+
"lshift" | "shift" => Some(Key::ShiftLeft),
238+
"rshift" => Some(Key::ShiftRight),
239+
"esc" | "escape" => Some(Key::Escape),
250240
"ctrl" | "lctrl" => Some(Key::ControlLeft),
251241
"rctrl" => Some(Key::ControlRight),
252242
"alt" | "lalt" => Some(Key::Alt),
253243
"ralt" | "altgr" => Some(Key::AltGr),
254244
"space" => Some(Key::Space),
245+
"enter" | "return" => Some(Key::Return),
246+
"caps" | "capslock" => Some(Key::CapsLock),
247+
"back" | "backspace" => Some(Key::Backspace),
248+
"tab" => Some(Key::Tab),
249+
250+
"up" => Some(Key::UpArrow),
251+
"down" => Some(Key::DownArrow),
252+
"left" => Some(Key::LeftArrow),
253+
"right" => Some(Key::RightArrow),
254+
255+
"ins" | "insert" => Some(Key::Insert),
256+
"del" | "delete" => Some(Key::Delete),
257+
"home" => Some(Key::Home),
258+
"end" => Some(Key::End),
259+
"pgup" | "pageup" => Some(Key::PageUp),
260+
"pgdn" | "pagedown" => Some(Key::PageDown),
261+
262+
"`" | "backquote" => Some(Key::BackQuote),
263+
"-" | "minus" => Some(Key::Minus),
264+
"=" | "equal" => Some(Key::Equal),
265+
"[" | "leftbracket" => Some(Key::LeftBracket),
266+
"]" | "rightbracket" => Some(Key::RightBracket),
267+
";" | "semicolon" => Some(Key::SemiColon),
268+
"'" | "quote" => Some(Key::Quote),
269+
"\\" | "backslash" => Some(Key::BackSlash),
270+
"," | "comma" => Some(Key::Comma),
271+
"." | "dot" => Some(Key::Dot),
272+
"/" | "slash" => Some(Key::Slash),
273+
274+
"f1" => Some(Key::F1),
275+
"f2" => Some(Key::F2),
276+
"f3" => Some(Key::F3),
277+
"f4" => Some(Key::F4),
278+
"f5" => Some(Key::F5),
279+
"f6" => Some(Key::F6),
280+
"f7" => Some(Key::F7),
281+
"f8" => Some(Key::F8),
282+
"f9" => Some(Key::F9),
283+
"f10" => Some(Key::F10),
284+
"f11" => Some(Key::F11),
285+
"f12" => Some(Key::F12),
286+
287+
"win" | "meta" | "command" => Some(Key::MetaLeft),
255288
_ => None,
256289
}
257290
}
@@ -470,7 +503,7 @@ mod tests {
470503
assert_eq!(result.layer[0][0].binds[0].0.as_ref(), "Tab");
471504
assert_eq!(result.layer[0][0].binds[0].1, Some(Key::Tab));
472505
assert_eq!(result.layer[0][0].attr.width, 10);
473-
assert_eq!(result.layer[0][0].attr.border_color, Some(Color::Rgb(1, 1, 1)));
506+
assert_eq!(result.layer[0][0].attr.highlight, Some(Color::Rgb(1, 1, 1)));
474507
}
475508

476509
#[test]

src/render.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ pub fn render_ui(
1313
kbd_layout: &Layout,
1414
env: &Env,
1515
) {
16-
let area = f.size();
16+
let area = f.area();
1717

1818
// Resolve Global Defaults from Env
1919
let default_border_color = Color::Rgb(176, 176, 176);
@@ -152,9 +152,9 @@ pub fn render_ui(
152152
}
153153

154154
fn get_highlight(l: usize, env: &Env) -> Color {
155-
let default_highlight_l2 = Color::Rgb(176, 176, 176);
156-
let default_highlight_l3 = Color::Rgb(176, 176, 176);
157-
let default_highlight_other = Color::Rgb(176, 176, 176);
155+
let default_highlight_l2 = Color::Rgb(169, 204, 203);
156+
let default_highlight_l3 = Color::Rgb(169, 173, 204);
157+
let default_highlight_other = Color::Rgb(200, 169, 204);
158158
match env.get(format!("highlight_l{}", l.to_string()).as_str()) {
159159
Some(bc) => match bc {
160160
Value::RGB(r, g, b) => Color::Rgb(*r, *g, *b),

0 commit comments

Comments
 (0)