From 6f54084c0ee63f4b341f8f92efbc8b82d3dfa224 Mon Sep 17 00:00:00 2001 From: Samuel Fadel Date: Thu, 8 Dec 2022 18:25:18 +0100 Subject: Working example with keybindings done from Scheme. * main.scm: Added utility and keybinding calls * wm.scm: Added necessary bindings to C code * schewm.c: Some utility functions for grabbing keys --- main.scm | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) (limited to 'main.scm') diff --git a/main.scm b/main.scm index 6487a30..a591764 100644 --- a/main.scm +++ b/main.scm @@ -5,7 +5,7 @@ (make-config inner-border-width outer-border-width - manger-border-width + magnet-border-width offset-x offset-y offset-width @@ -30,16 +30,34 @@ 0 ; offset-height )) -(define keys - '(((make-key-chord (key-from-str "q")) . wm-quit))) +(define (make-key key) + (list #f (key-from-str key))) + +(define (make-shift-key key) + (list #t (key-from-str key))) + +(define wm-keybindings + `((,(make-shift-key "q") . ,wm-quit) + (,(make-key "Tab") . ,wm-focus-next))) + +(define (grab-keys keybindings) + (unless (null? keybindings) + (let* ((keybinding (car keybindings)) + (chord (car keybinding)) + (func (cdr keybinding)) + (with-shift (car chord)) + (key (car (cdr chord)))) + (if with-shift + (wm-grab-key-with-mod-shift key) + (wm-grab-key-with-mod key)) + (grab-keys (cdr keybindings))))) (when (wm-init) + (grab-keys wm-keybindings) (wm-set-key-press-handler! (lambda (mod keysym) (display (list mod keysym)) - (display "\n"))) - (display config) - (display "\n") + (newline))) (wm-run) (wm-quit)) -- cgit v1.2.3