/*
* This file is part of lanterna (http://code.google.com/p/lanterna/).
*
* lanterna is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Copyright (C) 2010-2017 Martin Berglund
*/
package com.googlecode.lanterna.input;
/**
* This enum is a categorization of the various keys available on a normal computer keyboard that are usable
* (detectable) by a terminal environment. For ordinary numbers, letters and symbols, the enum value is <i>Character</i>
* but please keep in mind that newline and tab, usually represented by \n and \t, are considered their own separate
* values by this enum (<i>Enter</i> and <i>Tab</i>).
* <p>
* Previously (before Lanterna 3.0), this enum was embedded inside the Key class.
*
* @author Martin
*/
public enum KeyType {
/**
* This value corresponds to a regular character 'typed', usually alphanumeric or a symbol. The one special case
* here is the enter key which could be expected to be returned as a '\n' character but is actually returned as a
* separate {@code KeyType} (see below). Tab, backspace and some others works this way too.
*/
Character,
Escape,
Backspace,
ArrowLeft,
ArrowRight,
ArrowUp,
ArrowDown,
Insert,
Delete,
Home,
End,
PageUp,
PageDown,
Tab,
ReverseTab,
Enter,
F1,
F2,
F3,
F4,
F5,
F6,
F7,
F8,
F9,
F10,
F11,
F12,
F13,
F14,
F15,
F16,
F17,
F18,
F19,
Unknown,
//"Virtual" KeyStroke types
/**
* This value is only internally within Lanterna to understand where the cursor currently is, it's not expected to
* be returned by the API to an input read call.
*/
CursorLocation,
/**
* This type is not really a key stroke but actually a 'catch-all' for mouse related events. Please note that mouse
* event capturing must first be enabled and many terminals don't suppose this extension at all.
*/
MouseEvent,
/**
* This value is returned when you try to read input and the input stream has been closed.
*/
EOF,
;
}