Initial commit

Half-baked state. Most of the UI is mostly done, but the integration
with Grist (or any other data provider) is still missing.
This commit is contained in:
Felix
2025-05-11 19:19:24 +02:00
commit 4b1796250c
106 changed files with 7092 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
class_name KeyboardLayout
extends Node
var data:Dictionary = {}
func generate_character_data(char:String) -> Dictionary:
if char == "":
return {}
char = char.to_upper()
data = {
"type": "char",
"output": char,
"display": char.to_lower(),
}
# if uppercase != lowercase
if char != char.to_lower():
data["display-uppercase"] = char
return data
func generate_characters_data(chars:String) -> Array:
var keys = []
for char in chars.split(""):
var data = generate_character_data(char)
if data != {}:
keys.append(data)
return keys
func set_special(keys):
for key in keys:
if !("type" in key):
key["type"] = "special"
func make_row(left_special_keys: Array, chars: String, right_special_keys: Array):
set_special(left_special_keys)
set_special(right_special_keys)
var keys = left_special_keys
var data = generate_characters_data(chars)
if data != []:
keys.append_array(data)
if right_special_keys != []:
keys.append_array(right_special_keys)
return {
"keys": keys
}