# Emulation of has_key() function for platforms that don't use ncurses
# Table mapping curses keys to the terminfo capability name
_curses
.KEY_BACKSPACE
: 'kbs',
_curses
.KEY_BTAB
: 'kcbt',
_curses
.KEY_CANCEL
: 'kcan',
_curses
.KEY_CATAB
: 'ktbc',
_curses
.KEY_CLEAR
: 'kclr',
_curses
.KEY_CLOSE
: 'kclo',
_curses
.KEY_COMMAND
: 'kcmd',
_curses
.KEY_COPY
: 'kcpy',
_curses
.KEY_CREATE
: 'kcrt',
_curses
.KEY_CTAB
: 'kctab',
_curses
.KEY_DOWN
: 'kcud1',
_curses
.KEY_EIC
: 'krmir',
_curses
.KEY_ENTER
: 'kent',
_curses
.KEY_EXIT
: 'kext',
_curses
.KEY_FIND
: 'kfnd',
_curses
.KEY_HELP
: 'khlp',
_curses
.KEY_HOME
: 'khome',
_curses
.KEY_LEFT
: 'kcub1',
_curses
.KEY_MARK
: 'kmrk',
_curses
.KEY_MESSAGE
: 'kmsg',
_curses
.KEY_MOVE
: 'kmov',
_curses
.KEY_NEXT
: 'knxt',
_curses
.KEY_NPAGE
: 'knp',
_curses
.KEY_OPEN
: 'kopn',
_curses
.KEY_OPTIONS
: 'kopt',
_curses
.KEY_PPAGE
: 'kpp',
_curses
.KEY_PREVIOUS
: 'kprv',
_curses
.KEY_PRINT
: 'kprt',
_curses
.KEY_REDO
: 'krdo',
_curses
.KEY_REFERENCE
: 'kref',
_curses
.KEY_REFRESH
: 'krfr',
_curses
.KEY_REPLACE
: 'krpl',
_curses
.KEY_RESTART
: 'krst',
_curses
.KEY_RESUME
: 'kres',
_curses
.KEY_RIGHT
: 'kcuf1',
_curses
.KEY_SAVE
: 'ksav',
_curses
.KEY_SBEG
: 'kBEG',
_curses
.KEY_SCANCEL
: 'kCAN',
_curses
.KEY_SCOMMAND
: 'kCMD',
_curses
.KEY_SCOPY
: 'kCPY',
_curses
.KEY_SCREATE
: 'kCRT',
_curses
.KEY_SELECT
: 'kslt',
_curses
.KEY_SEND
: 'kEND',
_curses
.KEY_SEOL
: 'kEOL',
_curses
.KEY_SEXIT
: 'kEXT',
_curses
.KEY_SFIND
: 'kFND',
_curses
.KEY_SHELP
: 'kHLP',
_curses
.KEY_SHOME
: 'kHOM',
_curses
.KEY_SLEFT
: 'kLFT',
_curses
.KEY_SMESSAGE
: 'kMSG',
_curses
.KEY_SMOVE
: 'kMOV',
_curses
.KEY_SNEXT
: 'kNXT',
_curses
.KEY_SOPTIONS
: 'kOPT',
_curses
.KEY_SPREVIOUS
: 'kPRV',
_curses
.KEY_SPRINT
: 'kPRT',
_curses
.KEY_SREDO
: 'kRDO',
_curses
.KEY_SREPLACE
: 'kRPL',
_curses
.KEY_SRIGHT
: 'kRIT',
_curses
.KEY_SRSUME
: 'kRES',
_curses
.KEY_SSAVE
: 'kSAV',
_curses
.KEY_SSUSPEND
: 'kSPD',
_curses
.KEY_STAB
: 'khts',
_curses
.KEY_SUNDO
: 'kUND',
_curses
.KEY_SUSPEND
: 'kspd',
_curses
.KEY_UNDO
: 'kund',
# Figure out the correct capability name for the keycode.
capability_name
= _capability_names
.get(ch
)
if capability_name
is None:
#Check the current terminal description for that capability;
#if present, return true, else return false.
if _curses
.tigetstr( capability_name
):
if __name__
== '__main__':
# Compare the output of this implementation and the ncurses has_key,
# on platforms where has_key is already available
for key
in _capability_names
.keys():
system
= _curses
.has_key(key
)
L
.append( 'Mismatch for key %s, system=%i, Python=%i'
% (_curses
.keyname( key
), system
, python
) )