From 1ddbfc7b5c115477fc1621987654b33bf712598d Mon Sep 17 00:00:00 2001 From: Nulo Date: Thu, 23 Dec 2021 13:36:03 -0300 Subject: [PATCH] Use the correct modifier independently of the layer --- menelaus.scm | 10 ++++------ usb_keyboard.c | 3 +++ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/menelaus.scm b/menelaus.scm index 1476fbe..2b18365 100644 --- a/menelaus.scm +++ b/menelaus.scm @@ -297,12 +297,12 @@ (press-key-aux keycode key))) ;; Record that a given key being released resulted in a modifier release. -(define (release-modifier keycode key n) +(define (release-modifier modifier key n) (if (= (or (vector-ref keys-for-modifiers n) (- 0 1)) key) (begin - (set! modifiers (^ modifiers (unmodify keycode))) + (set! modifiers (^ modifiers modifier)) (vector-set! keys-for-modifiers n #f)) - (and (< n 7) (release-modifier keycode key (+ n 1))))) + (and (< n 7) (release-modifier modifier key (+ n 1))))) ;; Record a key release, clearing it out of the press tracking data. (define (release-key key) @@ -320,9 +320,7 @@ (vector-set! keys-for-frame slot #f)) #f) (if modifier-slot - (begin - (release-modifier keycode key 0) - (release-key key)) + (release-modifier (call-c-func "mathpow" 2 modifier-slot) key 0) #f))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Send USB diff --git a/usb_keyboard.c b/usb_keyboard.c index fd1d6ee..51f988e 100644 --- a/usb_keyboard.c +++ b/usb_keyboard.c @@ -33,6 +33,9 @@ int16_t mathlog2(int x) { return round(log(x)/log(2)); } +int16_t mathpow(int x, int y) { + return round(pow(x, y)); +} /************************************************************************** *