feat(layout): add Rulemak layout (@poli0iq) (#6835)

### Description

Add Rulemak Cyrillic layout, as found in
23fec5367a/symbols/ru (L722).

It's primarily designed for Russian, but can also be used for Ukrainian,
Serbian, Bulgarian, Belarusian and Macedonian, thanks to its layer 3-4
symbols.

### Checks

- [ ] Adding quotes?
- [ ] Make sure to include translations for the quotes in the
description (or another comment) so we can verify their content.
- [ ] Adding a language?
- Make sure to follow the [languages
documentation](https://github.com/monkeytypegame/monkeytype/blob/master/docs/LANGUAGES.md)
  - [ ] Add language to `packages/schemas/src/languages.ts`
- [ ] Add language to exactly one group in
`frontend/src/ts/constants/languages.ts`
  - [ ] Add language json file to `frontend/static/languages` 
- [ ] Adding a theme?
- Make sure to follow the [themes
documentation](https://github.com/monkeytypegame/monkeytype/blob/master/docs/THEMES.md)
  - [ ] Add theme to `packages/schemas/src/themes.ts`
  - [ ] Add theme to `frontend/src/ts/constants/themes.ts`
  - [ ] Add theme css file to `frontend/static/themes`
- [ ] Add some screenshot of the theme, especially with different test
settings (colorful, flip colors) to your pull request
- [x] Adding a layout?
- [x] Make sure to follow the [layouts
documentation](https://github.com/monkeytypegame/monkeytype/blob/master/docs/LAYOUTS.md)
  - [x] Add layout to `packages/schemas/src/layouts.ts`
  - [x] Add layout json file to `frontend/static/layouts` 
- [ ] Adding a font?
- Make sure to follow the [themes
documentation](https://github.com/monkeytypegame/monkeytype/blob/master/docs/FONTS.md)
  - [ ] Add font file  to `frontend/static/webfonts`
  - [ ] Add font to `packages/schemas/src/fonts.ts`
  - [ ] Add font to `frontend/src/ts/constants/fonts.ts`
- [ ] Check if any open issues are related to this PR; if so, be sure to
tag them below.
- [ ] Make sure the PR title follows the Conventional Commits standard.
(https://www.conventionalcommits.org for more info)
- [ ] Make sure to include your GitHub username prefixed with @ inside
parentheses at the end of the PR title.

<!-- label(optional scope): pull request title (@your_github_username)
-->

<!-- I know I know they seem boring but please do them, they help us and
you will find out it also helps you.-->

Closes #

<!-- the issue(s) your PR resolves if any (delete if that is not the
case) -->
<!-- please also reference any issues and or PRs related to your pull
request -->
<!-- Also remove it if you are not following any issues. -->

<!-- pro tip: you can mention an issue, PR, or discussion on GitHub by
referencing its hash number e.g:
[#1234](https://github.com/monkeytypegame/monkeytype/pull/1234) -->

<!-- pro tip: you can press . (dot or period) in the code tab of any
GitHub repo to get access to GitHub's VS Code web editor Enjoy! :) -->
This commit is contained in:
Polina 2025-08-05 15:22:00 +03:00 committed by GitHub
parent af0f23c940
commit 821c640888
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 63 additions and 0 deletions

View file

@ -0,0 +1,62 @@
{
"keymapShowTopRow": false,
"type": "ansi",
"keys": {
"row1": [
["ё", "Ё"],
["1", "!"],
["2", "\""],
["3", "№", "#", "³"],
["4", ";", "$", "£"],
["5", "%", "€", "%"],
["6", ":"],
["7", "?", "&"],
["8", "*", "₽", "₴"],
["9", "(", "[", "{"],
["0", ")", "]", "}"],
["-", "_", "", "—"],
["=", "+", "×", "÷"]
],
"row2": [
["я", "Я", "ѣ", "Ѣ"],
["ж", "Ж", "ѵ", "Ѵ"],
["ф", "Ф", "ѳ", "Ѳ"],
["п", "П", "п", "П"],
["г", "Г", "ґ", "Ґ"],
["й", "Й", "ј", "Ј"],
["л", "Л", "љ", "Љ"],
["у", "У", "ў", "Ў"],
["ы", "Ы", "ї", "Ї"],
["ю", "Ю", ";", ":"],
["ш", "Ш", "«", "„"],
["щ", "Щ", "»", "“"],
["э", "Э", "", "”"]
],
"row3": [
["а", "А", "'", "ʼ"],
["р", "Р", "®"],
["с", "С", "@"],
["т", "Т", "ћ", "Ћ"],
["д", "Д", "ђ", "Ђ"],
["ч", "Ч", "џ", "Џ"],
["н", "Н", "њ", "Њ"],
["е", "Е", "є", "Є"],
["и", "И", "і", "І"],
["о", "О", "о", "О"],
["ь", "Ь", "ъ", "Ъ"]
],
"row4": [
["з", "З", "ѕ", "Ѕ"],
["х", "Х", "х", "Х"],
["ц", "Ц", "©"],
["в", "В", "в", "В"],
["б", "Б", "ѓ", "Ѓ"],
["к", "К", "ќ", "Ќ"],
["м", "М", "м", "М"],
[",", ";", "<"],
[".", ":", ">"],
["/", "?", "\\", "|"]
],
"row5": [[" "]]
}
}

View file

@ -218,6 +218,7 @@ export const LayoutNameSchema = z.enum([
"tarmak_2",
"tarmak_3",
"tarmak_4",
"rulemak",
],
{
errorMap: customEnumErrorHandler("Must be a supported layout"),