Yes, you use the screen API. It is not documented other than you will get the function signatures in the ZeroBrane editor. The two staples are:
string: value, number: rc = scr.GetProperty(string: ctrlName, string: propertyName)
number: rc = scr.SetProperty(string: ctrlName, string: propertyName, string: value)
The control name is the name you have given the screen element in the Name property. It is case sensitive.
The property name is the name of the property as spelled in the property grid. Value, for example. Or Top, Left, Width, Height, etc...
The value of the property is always a string. Use tonumber() to convert a string to a number in LUA. Conversely, use tostring() to convert a number to a string. Some properties are lists, which have values associated with the string description in the list. In this case, you will get the value instead of the string description.
Keep in mid that it is ALWAYS better to use the underlying data that backs the screen element instead of the screen element itself, if possible. For instance, if there is a slider on the screen named "myFROslider" that sets the feed rate override, use mc.mcCntlGetFRO() instead of scr.GetProperty('myFROslider', 'Value"). This is part of the reason that this stuff is not documented. Because people will use it and not use the main Mach API proper. I JUST ran into this when support gave me a supposed "BUG" the other day. It wasn't a bug. The slider is imprecise because it is pixel based. If the slider has a range of 0 to 250, but the slider is displayed in less than 250 pixels, well... there are going to be gaps in the range when using the slider. Meaning you can start sliding it up from zero and get counts like 1, 2, 3, 5, 6, 7, 9. So it wasn't a bug at all!!!! It is why the FRO slider in fresh on my mind. Yeah, I went down that rabbit hole.
The other reason is I just don't like writing documentation. LOL
99% of the time, these scr.* functions are not needed. If you find yourself needing them all of the time, take a step back and think about how it could be done some other way. Most of the time, the ONLY time you may absolutely need them is for a screen specific function. Like the figuring out what tab is current to make the Start Cycle button process MDI commands instead of running a file.
Steve