From 2274631c8fd4fb6b20f6dc9e571dfb43625f629e Mon Sep 17 00:00:00 2001
From: Robert Verst <github@verst.eu>
Date: Mon, 19 Apr 2021 11:22:49 +0200
Subject: [PATCH] [Keymap] Fix handling of RV_LOCK and RV_SNAP for windows
 (#12498)

Co-authored-by: Robert Verst <robert.verst@tobit.com>
---
 users/rverst/rverst.c | 39 +++++++--------------------------------
 1 file changed, 7 insertions(+), 32 deletions(-)

diff --git a/users/rverst/rverst.c b/users/rverst/rverst.c
index 0524c6011d..23391caa6a 100644
--- a/users/rverst/rverst.c
+++ b/users/rverst/rverst.c
@@ -197,15 +197,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
         // Lock computer
         case RV_LOCK:
             if (mode == MAC || mode == MAC_UNI) {
-                register_code(KC_LGUI);
-                register_code(KC_LCTL);
-                tap_code(KC_Q);
-                unregister_code(KC_LCTL);
-                unregister_code(KC_LGUI);
+                tap_code16(G(C(KC_Q)));
             } else if (mode == WINDOWS || mode == WINDOWS_UNI) {
-                register_code(KC_LGUI);
-                tap_code(KC_L);
-                register_code(KC_LGUI);
+                tap_code16(G(KC_L));
             }
             return false;
 
@@ -215,23 +209,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                 if (ls) unregister_code(KC_LSFT);
                 if (rs) unregister_code(KC_RSFT);
 
-                register_code(KC_LGUI);
-                register_code(KC_LSFT);
-                if (as)
-                    tap_code(KC_5);
-                else
-                    tap_code(KC_4);
-                unregister_code(KC_LSFT);
-                unregister_code(KC_LGUI);
+                tap_code16(G(S(as ? KC_4 : KC_5)));
 
                 if (ls) register_code(KC_LSFT);
                 if (rs) register_code(KC_RSFT);
             } else if (mode == WINDOWS || mode == WINDOWS_UNI) {
-                register_code(KC_LGUI);
-                register_code(KC_LSFT);
-                tap_code(KC_S);
-                register_code(KC_LSFT);
-                register_code(KC_LGUI);
+                tap_code16(G(S(KC_S)));
             }
             return false;
 
@@ -260,9 +243,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                 if (ls) unregister_code(KC_LSFT);
                 if (rs) unregister_code(KC_RSFT);
 
-                register_code(KC_LALT);
-                tap_code(KC_U);
-                unregister_code(KC_LALT);
+                tap_code16(A(KC_U));
 
                 if (as) register_code(KC_LSFT);
                 if (keycode == RV_AUML) {
@@ -318,11 +299,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
             if (is_unicode(mode)) {
                 send_unicode_string("€");
             } else if (mode == MAC) {
-                register_code(KC_LALT);
-                register_code(KC_LSFT);
-                tap_code(KC_2);
-                unregister_code(KC_LSFT);
-                unregister_code(KC_LALT);
+                tap_code16(S(A(KC_2)));
             } else if (mode == WINDOWS) {
                 register_code(KC_RALT);
                 tap_code(KC_0);
@@ -343,9 +320,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                     send_unicode_string("ß");
                 }
             } else if (mode == MAC) {
-                register_code(KC_LALT);
-                tap_code(KC_S);
-                unregister_code(KC_LALT);
+                tap_code16(A(KC_S));
             } else if (mode == WINDOWS) {
                 register_code(KC_RALT);
                 tap_code(KC_2);