There are several ways it can be handled, but the most common, and what is probably used by your module, is probably the local alpha labels (A through E, a through e, and F through J) and USER keyboard. From page 300 of the 41cx manual:
Local Alpha Labels. Local Alpha labels require two bytes of program memory and can be used for branching any distance within a program. They are designed for manual execution: when the User keyboard is active, a local Alpha label is automatically assigned to each key on the top two rows (as described in "The Top Two Rows" in section 9). You can then use these keys to execute the corresponding local Alpha labels in the current program.
Program Example. The program <sigma> [I don't know how to put the Greek character here] in section 22 displays CLEAR D, J? E, which is a menu offering three alternatives. You can press D to clear days, press J to clear a job, or press E to exit. When you press one of these keys, program execution starts at the corresponding local Alpha label.
Page 169 however says that if you have something else assigned to the key, your own assignment gets priority over the program's local alpha labels' assignments.
Another way I have used a lot is GETKEY, GTO IND X with numeric labels so I'm not limited to the top two rows. I make any error condition just put you back to the GETKEY line to try again. Less-suitable methods would be to read a key-assignments file on mass storage with READK, or have the program re-assign the keys with PASN.