diff --git a/keyboards/planck/planck.c b/keyboards/planck/planck.c
index a17036fcf1..e9bd90bdfe 100644
--- a/keyboards/planck/planck.c
+++ b/keyboards/planck/planck.c
@@ -27,3 +27,23 @@ const uint8_t music_map[MATRIX_ROWS][MATRIX_COLS] = LAYOUT_planck_grid(
 	12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
 	 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11
 );
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+    if (!encoder_update_user(index, clockwise)) { return false; }
+    if (get_highest_layer(layer_state) > 0) {
+        if (clockwise) {
+            tap_code_delay(KC_VOLU, 10);
+        } else {
+            tap_code_delay(KC_VOLD, 10);
+        }
+    } else {
+        if (clockwise) {
+            tap_code(KC_PGDN);
+        } else {
+            tap_code(KC_PGUP);
+        }
+    }
+    return true;
+}
+#endif
diff --git a/keyboards/preonic/preonic.c b/keyboards/preonic/preonic.c
index 16c99d9a80..2b56805202 100644
--- a/keyboards/preonic/preonic.c
+++ b/keyboards/preonic/preonic.c
@@ -7,3 +7,23 @@ const uint8_t music_map[MATRIX_ROWS][MATRIX_COLS] = LAYOUT_preonic_grid(
   12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
    0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11
 );
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+    if (!encoder_update_user(index, clockwise)) { return false; }
+    if (get_highest_layer(layer_state) > 0) {
+        if (clockwise) {
+            tap_code_delay(KC_VOLU, 10);
+        } else {
+            tap_code_delay(KC_VOLD, 10);
+        }
+    } else {
+        if (clockwise) {
+            tap_code(KC_PGDN);
+        } else {
+            tap_code(KC_PGUP);
+        }
+    }
+    return true;
+}
+#endif