feat(layout): add tamil99 layout (@ving-sh) (#7313)

### Description

<!-- Please describe the change(s) made in your PR -->

### Checks

- [ ] Adding/modifying Typescript code?
  - [ ] I have used `qs`, `qsa` or `qsr` instead of JQuery selectors.
- [ ] 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 screenshots 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`
- [x] Make sure the PR title follows the Conventional Commits standard.
(https://www.conventionalcommits.org for more info)
- [x] Check if any open issues are related to this PR; if so, be sure to
tag them below.
- [x] 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! :) -->

[Discussion
#6483](https://github.com/monkeytypegame/monkeytype/discussions/6483)

Layout Documentation
https://learn.microsoft.com/en-us/globalization/keyboards/kbdtam99
http://kbdlayout.info/KBDTAM99?arrangement=ANSI104

---------

Co-authored-by: Jack <jack@monkeytype.com>
This commit is contained in:
Vignesh 2026-01-06 20:50:15 +05:30 committed by GitHub
parent 7e0d99244f
commit bd2df3971f
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

@ -231,6 +231,7 @@ export const LayoutNameSchema = z.enum(
"persian_farsi_colemak",
"persian_standard_colemak",
"ergo_split46",
"tamil99",
],
{
errorMap: customEnumErrorHandler("Must be a supported layout"),