Heya,

I've created what you've explained so it acn be done.

str_width I've not tested yet but it might be able to achieve what you need for limiting string lengths (if it doesn't you'll need to calculate every character length in pixels for the font you're supporting)

create a TEXT* for displaying the lines
create a function for creating each line
for i < txt.strings txt.pstring[0] = str_create("")
create a function for writing a new line
for i < txt.strings txt.pstring[i+1] = txt.pstring[i]
txt.pstring[0] = new_string
create a blue bmap for the cursor the height of the text and 1pixel wide
create a PANEL* for for placing behind the text where the user will click to type

create 2 variables for storing the cursors start_position and selection_position
then the cursor position will be all the characters in the string combined width, from the cursor start_position to the selection_position

hope this gives you a pointer, and yes it's definately possible though you'll need to add to every other function
if!(new_inkey) or something similar

i never did find a way to check for capslock tho frown