| /* vax_lk.h: DEC Keyboard (LK201) |
| |
| Copyright (c) 2017, Matt Burke |
| |
| Permission is hereby granted, free of charge, to any person obtaining a |
| copy of this software and associated documentation files (the "Software"), |
| to deal in the Software without restriction, including without limitation |
| the rights to use, copy, modify, merge, publish, distribute, sublicense, |
| and/or sell copies of the Software, and to permit persons to whom the |
| Software is furnished to do so, subject to the following conditions: |
| |
| The above copyright notice and this permission notice shall be included in |
| all copies or substantial portions of the Software. |
| |
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
| THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER |
| IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
| CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
| |
| Except as contained in this notice, the name of the author shall not be |
| used in advertising or otherwise to promote the sale, use or other dealings |
| in this Software without prior written authorization from the author. |
| |
| lk LK201 keyboard |
| */ |
| |
| #ifndef _VAX_LK_H_ |
| #define _VAX_LK_H_ |
| |
| #include "vax_defs.h" |
| #include "sim_video.h" |
| |
| /* standard key codes */ |
| |
| #define LK_UNKNOWN 0x00 |
| |
| #define LK_TR_0 0xEF |
| #define LK_TR_1 0xC0 |
| #define LK_TR_2 0xC5 |
| #define LK_TR_3 0xCB |
| #define LK_TR_4 0xD0 |
| #define LK_TR_5 0xD6 |
| #define LK_TR_6 0xDB |
| #define LK_TR_7 0xE0 |
| #define LK_TR_8 0xE5 |
| #define LK_TR_9 0xEA |
| #define LK_A 0xC2 |
| #define LK_B 0xD9 |
| #define LK_C 0xCE |
| #define LK_D 0xCD |
| #define LK_E 0xCC |
| #define LK_F 0xD2 |
| #define LK_G 0xD8 |
| #define LK_H 0xDD |
| #define LK_I 0xE6 |
| #define LK_J 0xE2 |
| #define LK_K 0xE7 |
| #define LK_L 0xEC |
| #define LK_M 0xE3 |
| #define LK_N 0xDE |
| #define LK_O 0xEB |
| #define LK_P 0xF0 |
| #define LK_Q 0xC1 |
| #define LK_R 0xD1 |
| #define LK_S 0xC7 |
| #define LK_T 0xD7 |
| #define LK_U 0xE1 |
| #define LK_V 0xD3 |
| #define LK_W 0xC6 |
| #define LK_X 0xC8 |
| #define LK_Y 0xDC |
| #define LK_Z 0xC3 |
| #define LK_SPACE 0xD4 |
| #define LK_SEMICOLON 0xF2 |
| #define LK_PLUS 0xF5 |
| #define LK_COMMA 0xE8 |
| #define LK_UBAR 0xF9 |
| #define LK_PERIOD 0xED |
| #define LK_QMARK 0xF3 |
| #define LK_QUOTE 0xFB |
| #define LK_LBRACE 0xFA |
| #define LK_RBRACE 0xF6 |
| #define LK_VBAR 0xF7 |
| #define LK_TILDE 0xBF |
| #define LK_KP_0 0x92 |
| #define LK_KP_1 0x96 |
| #define LK_KP_2 0x97 |
| #define LK_KP_3 0x98 |
| #define LK_KP_4 0x99 |
| #define LK_KP_5 0x9A |
| #define LK_KP_6 0x9B |
| #define LK_KP_7 0x9D |
| #define LK_KP_8 0x9E |
| #define LK_KP_9 0x9F |
| #define LK_KP_PF1 0xA1 |
| #define LK_KP_PF2 0xA2 |
| #define LK_KP_PF3 0xA3 |
| #define LK_KP_PF4 0xA4 |
| #define LK_KP_HYPHEN 0xA0 |
| #define LK_KP_COMMA 0x9C |
| #define LK_KP_PERIOD 0x94 |
| #define LK_KP_ENTER 0x95 |
| #define LK_DELETE 0xBC |
| #define LK_TAB 0xBE |
| #define LK_RETURN 0xBD |
| #define LK_META 0xB1 |
| #define LK_LOCK 0xB0 |
| #define LK_SHIFT 0xAE |
| #define LK_CTRL 0xAF |
| #define LK_LEFT 0xA7 |
| #define LK_RIGHT 0xA8 |
| #define LK_UP 0xAA |
| #define LK_DOWN 0xA9 |
| #define LK_REMOVE 0x8C |
| #define LK_NEXT_SCREEN 0x8F |
| #define LK_PREV_SCREEN 0x8E |
| #define LK_INSERT_HERE 0x8B |
| #define LK_FIND 0x8A |
| #define LK_SELECT 0x8D |
| #define LK_F1 0x56 |
| #define LK_F2 0x57 |
| #define LK_F3 0x58 |
| #define LK_F4 0x59 |
| #define LK_F5 0x5A |
| #define LK_F6 0x64 |
| #define LK_F7 0x65 |
| #define LK_F8 0x66 |
| #define LK_F9 0x67 |
| #define LK_F10 0x68 |
| #define LK_F11 0x71 |
| #define LK_F12 0x72 |
| |
| /* special codes */ |
| |
| #define LK_ALLUP 0xB3 /* all up */ |
| #define LK_METRONOME 0xB4 /* metronome code */ |
| #define LK_OUTERR 0xB5 /* output error */ |
| #define LK_INERR 0xB6 /* input error */ |
| #define LK_LOCKACK 0xB7 /* kbd locked ack */ |
| #define LK_TESTACK 0xB8 /* test mode ack */ |
| #define LK_PREDOWN 0xB9 /* prefix to keys down */ |
| #define LK_MODEACK 0xBA /* mode change ack */ |
| |
| /* interface functions */ |
| |
| t_stat lk_wr (uint8 c); |
| t_stat lk_rd (uint8 *c); |
| void lk_event (SIM_KEY_EVENT *ev); |
| |
| #endif |