i think the up arrow is chr$(0) + chr$(72), or, as i like to represent it, mki$(&h4800). i think you are right about the down arrow.
if there is no keystroke waiting in the buffer, inkey$ returns an empty string (0 bytes). if there is a keystroke waiting, inkey$ returns either a 1 byte or 2 byte string. if it returns a 1 byte string, it is an ascii code. thebob's post tells you how to find a list of their values in the help. if inkey$ returns a 2 bytes string, the first byte is null (chr$(0)), and the second byte is a scan code. you can find a list of scan codes in the qbasic help. the link to it is just below the link to the ascii list in the qbasic help.