mirror of
https://github.com/lihop/godot-xterm.git
synced 2024-11-23 02:00:25 +01:00
d8c8b5b272
Makes libtsm a static library rather than dynamic so that it doesn't have to be installed as a system library on the user's operating system. Also updates SConstruct to work on more operating systems other than just NixOS. Adds a number of docker files for building the library on various distributions (NixOS, Arch Linux, Ubuntu). Uses a fork of godot-cpp with an updated godot_headers submodule that includes godotengine/godot_headers#76. We should go back to tracking https://github.com/godotengine/godot-cpp once the submodule has been updated in that repo.
55 lines
1.4 KiB
GDScript
55 lines
1.4 KiB
GDScript
extends Container
|
|
# This Container ensures that the terminal always fills
|
|
# the window and/or screen. It also connects the terminal
|
|
# to the input/output of the Psuedoterminal.
|
|
|
|
const ESCAPE = 27
|
|
const BACKSPACE = 8
|
|
const BEEP = 7
|
|
const SPACE = 32
|
|
const LEFT_BRACKET = 91
|
|
const ENTER = 10
|
|
const BACKSPACE_ALT = 127
|
|
|
|
onready var viewport = get_viewport()
|
|
|
|
func _ready():
|
|
$Pseudoterminal.connect("data_received", $Terminal, "write")
|
|
|
|
viewport.connect("size_changed", self, "_resize")
|
|
_resize()
|
|
|
|
|
|
func _input(event):
|
|
#return
|
|
if event is InputEventKey and event.pressed:
|
|
var data = PoolByteArray([])
|
|
accept_event()
|
|
|
|
# TODO: Handle more of these.
|
|
if (event.control and event.scancode == KEY_C):
|
|
data.append(3)
|
|
elif event.unicode:
|
|
data.append(event.unicode)
|
|
elif event.scancode == KEY_ENTER:
|
|
data.append(ENTER)
|
|
elif event.scancode == KEY_BACKSPACE:
|
|
data.append(BACKSPACE_ALT)
|
|
elif event.scancode == KEY_ESCAPE:
|
|
data.append(27)
|
|
elif event.scancode == KEY_TAB:
|
|
data.append(9)
|
|
elif OS.get_scancode_string(event.scancode) == "Shift":
|
|
pass
|
|
elif OS.get_scancode_string(event.scancode) == "Control":
|
|
pass
|
|
else:
|
|
pass
|
|
#push_warning('Unhandled input. scancode: ' + str(OS.get_scancode_string(event.scancode)))
|
|
#emit_signal("output", data)
|
|
$Pseudoterminal.put_data(data)
|
|
|
|
|
|
func _resize():
|
|
rect_size = viewport.size
|
|
$Terminal.rect_size = rect_size
|