mirror of
https://github.com/hypervortex/VH-Bombsquad-Modded-Server-Files
synced 2025-11-07 17:36:08 +00:00
84 lines
1.9 KiB
Python
84 lines
1.9 KiB
Python
# Released under the MIT License. See LICENSE for details.
|
|
#
|
|
"""Defines a default keyboards."""
|
|
|
|
# ba_meta require api 7
|
|
# (see https://ballistica.net/wiki/meta-tag-system)
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import TYPE_CHECKING
|
|
|
|
import ba
|
|
|
|
if TYPE_CHECKING:
|
|
from typing import Iterable
|
|
|
|
|
|
def split(chars: Iterable[str], maxlen: int) -> list[list[str]]:
|
|
"""Returns char groups with a fixed number of elements"""
|
|
result = []
|
|
shatter: list[str] = []
|
|
for i in chars:
|
|
if len(shatter) < maxlen:
|
|
shatter.append(i)
|
|
else:
|
|
result.append(shatter)
|
|
shatter = [i]
|
|
if shatter:
|
|
while len(shatter) < maxlen:
|
|
shatter.append('')
|
|
result.append(shatter)
|
|
return result
|
|
|
|
|
|
def generate_emojis(maxlen: int) -> list[list[str]]:
|
|
"""Generates a lot of UTF8 emojis prepared for ba.Keyboard pages"""
|
|
all_emojis = split([chr(i) for i in range(0x1F601, 0x1F650)], maxlen)
|
|
all_emojis += split([chr(i) for i in range(0x2702, 0x27B1)], maxlen)
|
|
all_emojis += split([chr(i) for i in range(0x1F680, 0x1F6C1)], maxlen)
|
|
return all_emojis
|
|
|
|
|
|
# ba_meta export keyboard
|
|
class EnglishKeyboard(ba.Keyboard):
|
|
"""Default English keyboard."""
|
|
|
|
name = 'English'
|
|
chars = [
|
|
('q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'),
|
|
('a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'),
|
|
('z', 'x', 'c', 'v', 'b', 'n', 'm'),
|
|
]
|
|
nums = (
|
|
'1',
|
|
'2',
|
|
'3',
|
|
'4',
|
|
'5',
|
|
'6',
|
|
'7',
|
|
'8',
|
|
'9',
|
|
'0',
|
|
'-',
|
|
'/',
|
|
':',
|
|
';',
|
|
'(',
|
|
')',
|
|
'$',
|
|
'&',
|
|
'@',
|
|
'"',
|
|
'.',
|
|
',',
|
|
'?',
|
|
'!',
|
|
'\'',
|
|
'_',
|
|
)
|
|
pages: dict[str, tuple[str, ...]] = {
|
|
f'emoji{i}': tuple(page)
|
|
for i, page in enumerate(generate_emojis(len(nums)))
|
|
}
|