Keyboard functions are not supported because the game polls and synchronizes only a number of inputs, as well as handling keyboard<->gamepad mapping (see Input API). I may add keyboard_check alias for these in future just for convenience, but they would only work for the existing keys, which would be confusing.
keyboard_key_press probably isn't going to be implemented, since the game polls multiple physical inputs (as mentioned) for every virtual input, so I'd have to add hacks for that.
Surface functions are not supported because surfaces are volatile (can vanish anytime), therefore are not something that would work consistently when playing online (where each player has their own things)
In general, scripting system supports functions that are deterministic by nature (math, data structures, etc.) or could be forced to work in a deterministic way. The list of supported functions can be found in %LOCALAPPDATA%/nuclearthrone/api/api.gml after doing /gmlapi. There might be some additions in future, but these are generally time-consuming to implement, and there are already too many things to do as-is.