# dselect - Debian package maintenance user interface
# keyoverride - override strings for ncurses key names
#
# Copyright © 1995 Ian Jackson <ian@chiark.greenend.org.uk>
#
# This is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

32		Space
13		Return
27		Escape
28		^\
29		^]
30		^^
31		^_
34		Quote
39		Apostrophe
44		Comma
45		Hyphen
47		Slash
59		Semicolon
92		Backslash
96		Backquote
127		DEL
KEY_UP		Up
KEY_DOWN	Down
KEY_RIGHT	Right
KEY_LEFT	Left
KEY_IC		Insert
KEY_SIC		Shift Insert
KEY_DC		Delete
KEY_SDC		Shift Delete
KEY_NPAGE	Page Down
KEY_PPAGE	Page Up
KEY_CATAB	Clear Tabs
KEY_EIC		EIC
KEY_EOL		EOL
KEY_SEOL	Shift EOL
KEY_EOS		EOS
KEY_LL		Bottom
KEY_SF		Scroll Forward
KEY_SR		Scroll Reverse
KEY_SRESET	Soft Reset
KEY_SLEFT	Shift Left
KEY_SRIGHT	Shift Right
KEY_SPREVIOUS	Shift Previous
KEY_MAX		[elide]
KEY_MIN		[elide]
