Great!
I did some reading about ncurses input this morning. I think it's possible to update Term_xtra_gcu_event() to behave a little more like how the other ports handle input. You just need to explicitly map all of the ncurses key codes to Angband key codes.
The catch is that the key codes are dependent on the terminal emulator (for example, some return the same key code for <Right_Arrow> and <Shift><Right_Arrow>), but my understanding is that most modern terminal emulators behave similarly. You could keep the existing, odd behavior, for older terminals and use the new mappings for newer ones.
A side effect of changing the GCU key code mappings to behave like the other ports is that it may break some players' custom mappings. For example:
Input: <Shift><Right_Arrow>
Current GCU passes to Angband: \xb5
After fix: {S}[Right]
I did some reading about ncurses input this morning. I think it's possible to update Term_xtra_gcu_event() to behave a little more like how the other ports handle input. You just need to explicitly map all of the ncurses key codes to Angband key codes.
The catch is that the key codes are dependent on the terminal emulator (for example, some return the same key code for <Right_Arrow> and <Shift><Right_Arrow>), but my understanding is that most modern terminal emulators behave similarly. You could keep the existing, odd behavior, for older terminals and use the new mappings for newer ones.
A side effect of changing the GCU key code mappings to behave like the other ports is that it may break some players' custom mappings. For example:
Input: <Shift><Right_Arrow>
Current GCU passes to Angband: \xb5
After fix: {S}[Right]
Comment