This repository has been archived on 2025-12-12. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
food-coop-waage/addons/onscreenkeyboard/keyboard_layout.gd
Felix 4b1796250c 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.
2025-05-11 19:19:24 +02:00

52 lines
1017 B
GDScript

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
}