extends LineEdit var available_characters: Array[String] = [ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ' ', ] func _ready() -> void: connect("text_changed", _text_to_upper) func _text_to_upper(new_text: String): var ascii_map := { "á":"a", "à":"a", "â":"a", "ä":"a", "ã":"a", "å":"a", "é":"e", "è":"e", "ê":"e", "ë":"e", "í":"i", "ì":"i", "î":"i", "ï":"i", "ó":"o", "ò":"o", "ô":"o", "ö":"o", "õ":"o", "ú":"u", "ù":"u", "û":"u", "ü":"u", "ñ":"n", "ç":"c", "Á":"A", "À":"A", "Â":"A", "Ä":"A", "Ã":"A", "Å":"A", "É":"E", "È":"E", "Ê":"E", "Ë":"E", "Í":"I", "Ì":"I", "Î":"I", "Ï":"I", "Ó":"O", "Ò":"O", "Ô":"O", "Ö":"O", "Õ":"O", "Ú":"U", "Ù":"U", "Û":"U", "Ü":"U", "Ñ":"N", "Ç":"C" } var filtered_text := "" for c in new_text.to_upper(): if ascii_map.has(c) and available_characters.has(ascii_map[c]): filtered_text += ascii_map[c] elif c.unicode_at(0) <= 127 and available_characters.has(c): filtered_text += c var last_caret_column = caret_column text = filtered_text caret_column = last_caret_column