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:
51
addons/onscreenkeyboard/keyboard_layout.gd
Normal file
51
addons/onscreenkeyboard/keyboard_layout.gd
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user