[issue15785] curses.get_wch() returns keypad codes incorrectly
Adam Simpkins
report at bugs.python.org
Tue Aug 28 05:23:42 CEST 2012
Adam Simpkins added the comment:
> + Get a wide character as (is_key_code, key). *is_key_code* is True for
> + function keys, keypad keys and so, in this case, *key* is a multibyte string
> + containing the key name. Otherwise, *key* is a single character
> + corresponding to the key.
The curses module already exposes the integer KEY_* constants. I think the
API would be easier to use if it simply returned the integer keycode constant
rather than returning the human-readable name returned by keyname().
I suspect most callers will want to compare the keycode against one of these
KEY_* constants to see what type of key was pressed so they can take action on
specific keys. Comparing the return value against one of the curses.KEY_*
constants seems easier than having to compare it to the result of
curses.keyname(curses.KEY_*)
The curses module also already exposes the keyname() function if callers do
want to get the human-readable string for an integer keycode.
If the function returned either a single-character unicode string or an integer
keycode, this would also make it possible to completely drop the is_key_code
part of the return value. (Callers could simply check the type of the return
value to see if it is a keycode.)
----------
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue15785>
_______________________________________
More information about the Python-bugs-list
mailing list