diff --git a/data/constants/keycodes/extras/keycodes_russian_typewriter_0.0.1.hjson b/data/constants/keycodes/extras/keycodes_russian_typewriter_0.0.1.hjson
new file mode 100644
index 0000000000..6ad03c58e5
--- /dev/null
+++ b/data/constants/keycodes/extras/keycodes_russian_typewriter_0.0.1.hjson
@@ -0,0 +1,291 @@
+{
+    "aliases": {
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ | │ № │ - │ / │ " │ : │ , │ . │ _ │ ? │ % │ ! │ ; │       │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │     │ Й │ Ц │ У │ К │ Е │ Н │ Г │ Ш │ Щ │ З │ Х │ Ъ │  )  │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │      │ Ф │ Ы │ В │ А │ П │ Р │ О │ Л │ Д │ Ж │ Э │        │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
+ * │        │ Я │ Ч │ С │ М │ И │ Т │ Ь │ Б │ Ю │ Ё │          │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │    │    │    │                        │    │    │    │    │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+        "KC_GRV": {
+            "key": "RU_PIPE",
+            "label": "|",
+        }
+        "KC_1": {
+            "key": "RU_NUM",
+            "label": "№",
+        }
+        "KC_2": {
+            "key": "RU_MINS",
+            "label": "-",
+        }
+        "KC_3": {
+            "key": "RU_SLSH",
+            "label": "/",
+        }
+        "KC_4": {
+            "key": "RU_DQUO",
+            "label": "\"",
+        }
+        "KC_5": {
+            "key": "RU_COLN",
+            "label": ":",
+        }
+        "KC_6": {
+            "key": "RU_COMM",
+            "label": ",",
+        }
+        "KC_7": {
+            "key": "RU_DOT",
+            "label": ".",
+        }
+        "KC_8": {
+            "key": "RU_UNDS",
+            "label": "_",
+        }
+        "KC_9": {
+            "key": "RU_QUES",
+            "label": "?",
+        }
+        "KC_0": {
+            "key": "RU_PERC",
+            "label": "%",
+        }
+        "KC_MINS": {
+            "key": "RU_EXLM",
+            "label": "!",
+        }
+        "KC_EQL": {
+            "key": "RU_SCLN",
+            "label": ";",
+        }
+        "KC_Q": {
+            "key": "RU_SHTI",
+            "label": "Й",
+        }
+        "KC_W": {
+            "key": "RU_TSE",
+            "label": "Ц",
+        }
+        "KC_E": {
+            "key": "RU_U",
+            "label": "У",
+        }
+        "KC_R": {
+            "key": "RU_KA",
+            "label": "К",
+        }
+        "KC_T": {
+            "key": "RU_IE",
+            "label": "Е",
+        }
+        "KC_Y": {
+            "key": "RU_EN",
+            "label": "Н",
+        }
+        "KC_U": {
+            "key": "RU_GHE",
+            "label": "Г",
+        }
+        "KC_I": {
+            "key": "RU_SHA",
+            "label": "Ш",
+        }
+        "KC_O": {
+            "key": "RU_SHCH",
+            "label": "Щ",
+        }
+        "KC_P": {
+            "key": "RU_ZE",
+            "label": "З",
+        }
+        "KC_LBRC": {
+            "key": "RU_HA",
+            "label": "Х",
+        }
+        "KC_RBRC": {
+            "key": "RU_HARD",
+            "label": "Ъ",
+        }
+        "KC_BSLS": {
+            "key": "RU_RPRN",
+            "label": ")",
+        }
+        "KC_A": {
+            "key": "RU_EF",
+            "label": "Ф",
+        }
+        "KC_S": {
+            "key": "RU_YERU",
+            "label": "Ы",
+        }
+        "KC_D": {
+            "key": "RU_VE",
+            "label": "В",
+        }
+        "KC_F": {
+            "key": "RU_A",
+            "label": "А",
+        }
+        "KC_G": {
+            "key": "RU_PE",
+            "label": "П",
+        }
+        "KC_H": {
+            "key": "RU_ER",
+            "label": "Р",
+        }
+        "KC_J": {
+            "key": "RU_O",
+            "label": "О",
+        }
+        "KC_K": {
+            "key": "RU_EL",
+            "label": "Л",
+        }
+        "KC_L": {
+            "key": "RU_DE",
+            "label": "Д",
+        }
+        "KC_SCLN": {
+            "key": "RU_ZHE",
+            "label": "Ж",
+        }
+        "KC_QUOT": {
+            "key": "RU_E",
+            "label": "Э",
+        }
+        "KC_Z": {
+            "key": "RU_YA",
+            "label": "Я",
+        }
+        "KC_X": {
+            "key": "RU_CHE",
+            "label": "Ч",
+        }
+        "KC_C": {
+            "key": "RU_ES",
+            "label": "С",
+        }
+        "KC_V": {
+            "key": "RU_EM",
+            "label": "М",
+        }
+        "KC_B": {
+            "key": "RU_I",
+            "label": "И",
+        }
+        "KC_N": {
+            "key": "RU_TE",
+            "label": "Т",
+        }
+        "KC_M": {
+            "key": "RU_SOFT",
+            "label": "Ь",
+        }
+        "KC_COMM": {
+            "key": "RU_BE",
+            "label": "Б",
+        }
+        "KC_DOT": {
+            "key": "RU_YU",
+            "label": "Ю",
+        }
+        "KC_SLSH": {
+            "key": "RU_YO",
+            "label": "Ё",
+        }
+/* Shifted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ + │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ = │ \ │       │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │     │   │   │   │   │   │   │   │   │   │   │   │   │  (  │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │      │   │   │   │   │   │   │   │   │   │   │   │        │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
+ * │        │   │   │   │   │   │   │   │   │   │   │          │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │    │    │    │                        │    │    │    │    │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+        "S(RU_PIPE)": {
+            "key": "RU_PLUS",
+            "label": "+",
+        }
+        "S(RU_NUM)": {
+            "key": "RU_1",
+            "label": "1",
+        }
+        "S(RU_MINS)": {
+            "key": "RU_2",
+            "label": "2",
+        }
+        "S(RU_SLSH)": {
+            "key": "RU_3",
+            "label": "3",
+        }
+        "S(RU_DQUO)": {
+            "key": "RU_4",
+            "label": "4",
+        }
+        "S(RU_COLN)": {
+            "key": "RU_5",
+            "label": "5",
+        }
+        "S(RU_COMM)": {
+            "key": "RU_6",
+            "label": "6",
+        }
+        "S(RU_DOT)": {
+            "key": "RU_7",
+            "label": "7",
+        }
+        "S(RU_UNDS)": {
+            "key": "RU_8",
+            "label": "8",
+        }
+        "S(RU_QUES)": {
+            "key": "RU_9",
+            "label": "9",
+        }
+        "S(RU_PERC)": {
+            "key": "RU_0",
+            "label": "0",
+        }
+        "S(RU_EXLM)": {
+            "key": "RU_EQL",
+            "label": "=",
+        }
+        "S(RU_SCLN)": {
+            "key": "RU_BSLS",
+            "label": "\\",
+        }
+        "S(RU_RPRN)": {
+            "key": "RU_LPRN",
+            "label": "(",
+        }
+/* AltGr symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │   │   │   │   │   │   │   │   │ ₽ │   │   │   │   │       │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │      │   │   │   │   │   │   │   │   │   │   │   │        │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
+ * │        │   │   │   │   │   │   │   │   │   │   │          │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │    │    │    │                        │    │    │    │    │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+        "ALGR(RU_UNDS)": {
+            "key": "RU_RUBL",
+            "label": "₽",
+        }
+    }
+}
diff --git a/quantum/keymap_extras/keymap_russian_typewriter.h b/quantum/keymap_extras/keymap_russian_typewriter.h
new file mode 100644
index 0000000000..59f341e38b
--- /dev/null
+++ b/quantum/keymap_extras/keymap_russian_typewriter.h
@@ -0,0 +1,93 @@
+// Copyright 2023 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+/*******************************************************************************
+  88888888888 888      d8b                .d888 d8b 888               d8b
+      888     888      Y8P               d88P"  Y8P 888               Y8P
+      888     888                        888        888
+      888     88888b.  888 .d8888b       888888 888 888  .d88b.       888 .d8888b
+      888     888 "88b 888 88K           888    888 888 d8P  Y8b      888 88K
+      888     888  888 888 "Y8888b.      888    888 888 88888888      888 "Y8888b.
+      888     888  888 888      X88      888    888 888 Y8b.          888      X88
+      888     888  888 888  88888P'      888    888 888  "Y8888       888  88888P'
+                                                        888                 888
+                                                        888                 888
+                                                        888                 888
+     .d88b.   .d88b.  88888b.   .d88b.  888d888 8888b.  888888 .d88b.   .d88888
+    d88P"88b d8P  Y8b 888 "88b d8P  Y8b 888P"      "88b 888   d8P  Y8b d88" 888
+    888  888 88888888 888  888 88888888 888    .d888888 888   88888888 888  888
+    Y88b 888 Y8b.     888  888 Y8b.     888    888  888 Y88b. Y8b.     Y88b 888
+     "Y88888  "Y8888  888  888  "Y8888  888    "Y888888  "Y888 "Y8888   "Y88888
+         888
+    Y8b d88P
+     "Y88P"
+*******************************************************************************/
+
+#pragma once
+#include "keycodes.h"
+// clang-format off
+
+// Aliases
+#define RU_PIPE KC_GRV  // |
+#define RU_NUM  KC_1    // №
+#define RU_MINS KC_2    // -
+#define RU_SLSH KC_3    // /
+#define RU_DQUO KC_4    // "
+#define RU_COLN KC_5    // :
+#define RU_COMM KC_6    // ,
+#define RU_DOT  KC_7    // .
+#define RU_UNDS KC_8    // _
+#define RU_QUES KC_9    // ?
+#define RU_PERC KC_0    // %
+#define RU_EXLM KC_MINS // !
+#define RU_SCLN KC_EQL  // ;
+#define RU_SHTI KC_Q    // Й
+#define RU_TSE  KC_W    // Ц
+#define RU_U    KC_E    // У
+#define RU_KA   KC_R    // К
+#define RU_IE   KC_T    // Е
+#define RU_EN   KC_Y    // Н
+#define RU_GHE  KC_U    // Г
+#define RU_SHA  KC_I    // Ш
+#define RU_SHCH KC_O    // Щ
+#define RU_ZE   KC_P    // З
+#define RU_HA   KC_LBRC // Х
+#define RU_HARD KC_RBRC // Ъ
+#define RU_RPRN KC_BSLS // )
+#define RU_EF   KC_A    // Ф
+#define RU_YERU KC_S    // Ы
+#define RU_VE   KC_D    // В
+#define RU_A    KC_F    // А
+#define RU_PE   KC_G    // П
+#define RU_ER   KC_H    // Р
+#define RU_O    KC_J    // О
+#define RU_EL   KC_K    // Л
+#define RU_DE   KC_L    // Д
+#define RU_ZHE  KC_SCLN // Ж
+#define RU_E    KC_QUOT // Э
+#define RU_YA   KC_Z    // Я
+#define RU_CHE  KC_X    // Ч
+#define RU_ES   KC_C    // С
+#define RU_EM   KC_V    // М
+#define RU_I    KC_B    // И
+#define RU_TE   KC_N    // Т
+#define RU_SOFT KC_M    // Ь
+#define RU_BE   KC_COMM // Б
+#define RU_YU   KC_DOT  // Ю
+#define RU_YO   KC_SLSH // Ё
+#define RU_PLUS S(RU_PIPE) // +
+#define RU_1    S(RU_NUM)  // 1
+#define RU_2    S(RU_MINS) // 2
+#define RU_3    S(RU_SLSH) // 3
+#define RU_4    S(RU_DQUO) // 4
+#define RU_5    S(RU_COLN) // 5
+#define RU_6    S(RU_COMM) // 6
+#define RU_7    S(RU_DOT)  // 7
+#define RU_8    S(RU_UNDS) // 8
+#define RU_9    S(RU_QUES) // 9
+#define RU_0    S(RU_PERC) // 0
+#define RU_EQL  S(RU_EXLM) // =
+#define RU_BSLS S(RU_SCLN) // (backslash)
+#define RU_LPRN S(RU_RPRN) // (
+#define RU_RUBL ALGR(RU_UNDS) // ₽
+