view Keymap/kaypro1.h @ 33:df192346cf95

Adding Kaypro1 functional support - Uses USART instead of polling - Supports two way communication (only 3 commands to the keyboard though) - Kaypro sends data as ASCII, which severely limits the handling of modifiers - No release signal is sent, so even faking modifiers is next to impossible outside of Shift and Ctrl - Includes default QWERTY and Colemak layouts - Developed a new buffer macro, which will become the basic macro module once all the other modules have been ported (much more efficient, as it keeps serial scanning schemes serial, and parallel scanning schemes such as matrix, that already serialized into a sort of buffer for the debouncing evaluation) - This module is quite efficient, and would be able to handle very excessive macro processing in the future. - If more of the keypboard communication protocol is desired, I have a rom dump of the microcontroller (M5L8049)
author Jacob Alexander <triplehaata@gmail.com>
date Thu, 03 Nov 2011 00:09:10 -0700
parents
children
line wrap: on
line source

/* Copyright (C) 2011 by Jacob Alexander
 * 
 * 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
 * AUTHORS OR COPYRIGHT HOLDERS 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.
 */

#ifndef __KAYPRO1_H
#define __KAYPRO1_H

// This file contains various key layouts for the Kaypro 1 keyboard


// ----- Variables -----

static uint8_t kaypro1_ModifierMask[] = { 0xF5, 0xF6 };

static uint8_t kaypro1_DefaultMap[] = { 0,
				0, // 0x01
				0, // 0x02
				0, // 0x03
				0, // 0x04
				0, // 0x05
				0, // 0x06
				0, // 0x07
				KEY_BACKSPACE, // 0x08
				KEY_TAB, // 0x09
				0, // 0x0A
				0, // 0x0B
				0, // 0x0C
				KEY_ENTER, // 0x0D
				0, // 0x0E
				0, // 0x0F
				0, // 0x10
				0, // 0x11
				0, // 0x12
				0, // 0x13
				0, // 0x14
				0, // 0x15
				0, // 0x16
				0, // 0x17
				0, // 0x18
				0, // 0x19
				0, // 0x1A
				KEY_ESC, // 0x1B
				0, // 0x1C
				0, // 0x1D
				0, // 0x1E
				0, // 0x1F
				KEY_SPACE, // 0x20
				0, // 0x21
				0, // 0x22
				0, // 0x23
				0, // 0x24
				0, // 0x25
				0, // 0x26
				KEY_QUOTE, // 0x27
				0, // 0x28
				0, // 0x29
				0, // 0x2A
				0, // 0x2B
				KEY_COMMA, // 0x2C
				KEY_MINUS, // 0x2D
				KEY_PERIOD, // 0x2E
				KEY_SLASH, // 0x2F
				KEY_0, // 0x30
				KEY_1, // 0x31
				KEY_2, // 0x32
				KEY_3, // 0x33
				KEY_4, // 0x34
				KEY_5, // 0x35
				KEY_6, // 0x36
				KEY_7, // 0x37
				KEY_8, // 0x38
				KEY_9, // 0x39
				0, // 0x3A
				KEY_SEMICOLON, // 0x3B
				0, // 0x3C
				KEY_EQUAL, // 0x3D
				0, // 0x3E
				0, // 0x3F
				0, // 0x40
				0, // 0x41
				0, // 0x42
				0, // 0x43
				0, // 0x44
				0, // 0x45
				0, // 0x46
				0, // 0x47
				0, // 0x48
				0, // 0x49
				0, // 0x4A
				0, // 0x4B
				0, // 0x4C
				0, // 0x4D
				0, // 0x4E
				0, // 0x4F
				0, // 0x50
				0, // 0x51
				0, // 0x52
				0, // 0x53
				0, // 0x54
				0, // 0x55
				0, // 0x56
				0, // 0x57
				0, // 0x58
				0, // 0x59
				0, // 0x5A
				KEY_LEFT_BRACE, // 0x5B
				KEY_BACKSLASH, // 0x5C
				KEY_RIGHT_BRACE, // 0x5D
				0, // 0x5E
				0, // 0x5F
				KEY_TILDE, // 0x60
				KEY_A, // 0x61
				KEY_B, // 0x62
				KEY_C, // 0x63
				KEY_D, // 0x64
				KEY_E, // 0x65
				KEY_F, // 0x66
				KEY_G, // 0x67
				KEY_H, // 0x68
				KEY_I, // 0x69
				KEY_J, // 0x6A
				KEY_K, // 0x6B
				KEY_L, // 0x6C
				KEY_M, // 0x6D
				KEY_N, // 0x6E
				KEY_O, // 0x6F
				KEY_P, // 0x70
				KEY_Q, // 0x71
				KEY_R, // 0x72
				KEY_S, // 0x73
				KEY_T, // 0x74
				KEY_U, // 0x75
				KEY_V, // 0x76
				KEY_W, // 0x77
				KEY_X, // 0x78
				KEY_Y, // 0x79
				KEY_Z, // 0x7A
				0, // 0x7B
				0, // 0x7C
				0, // 0x7D
				0, // 0x7E
				KEY_DELETE, // 0x7F
				0, // 0x80
				0, // 0x81
				0, // 0x82
				0, // 0x83
				0, // 0x84
				0, // 0x85
				0, // 0x86
				0, // 0x87
				0, // 0x88
				0, // 0x89
				0, // 0x8A
				0, // 0x8B
				0, // 0x8C
				0, // 0x8D
				0, // 0x8E
				0, // 0x8F
				0, // 0x90
				0, // 0x91
				0, // 0x92
				0, // 0x93
				0, // 0x94
				0, // 0x95
				0, // 0x96
				0, // 0x97
				0, // 0x98
				0, // 0x99
				0, // 0x9A
				0, // 0x9B
				0, // 0x9C
				0, // 0x9D
				0, // 0x9E
				0, // 0x9F
				0, // 0xA0
				0, // 0xA1
				0, // 0xA2
				0, // 0xA3
				0, // 0xA4
				0, // 0xA5
				0, // 0xA6
				0, // 0xA7
				0, // 0xA8
				0, // 0xA9
				0, // 0xAA
				0, // 0xAB
				0, // 0xAC
				0, // 0xAD
				0, // 0xAE
				0, // 0xAF
				0, // 0xB0
				KEYPAD_0, // 0xB1
				KEYPAD_PERIOD, // 0xB2
				0, // 0xB3
				0, // 0xB4
				0, // 0xB5
				0, // 0xB6
				0, // 0xB7
				0, // 0xB8
				0, // 0xB9
				0, // 0xBA
				0, // 0xBB
				0, // 0xBC
				0, // 0xBD
				0, // 0xBE
				0, // 0xBF
				KEYPAD_1, // 0xC0
				KEYPAD_2, // 0xC1
				KEYPAD_3, // 0xC2
				KEYPAD_ENTER, // 0xC3
				0, // 0xC4
				0, // 0xC5
				0, // 0xC6
				0, // 0xC7
				0, // 0xC8
				0, // 0xC9
				0, // 0xCA
				0, // 0xCB
				0, // 0xCC
				0, // 0xCD
				0, // 0xCE
				0, // 0xCF
				KEYPAD_4, // 0xD0
				KEYPAD_5, // 0xD1
				KEYPAD_6, // 0xD2
				KEYPAD_COMMA, // 0xD3
				0, // 0xD4
				0, // 0xD5
				0, // 0xD6
				0, // 0xD7
				0, // 0xD8
				0, // 0xD9
				0, // 0xDA
				0, // 0xDB
				0, // 0xDC
				0, // 0xDD
				0, // 0xDE
				0, // 0xDF
				0, // 0xE0
				KEYPAD_7, // 0xE1
				KEYPAD_8, // 0xE2
				KEYPAD_9, // 0xE3
				KEYPAD_MINUS, // 0xE4
				0, // 0xE5
				0, // 0xE6
				0, // 0xE7
				0, // 0xE8
				0, // 0xE9
				0, // 0xEA
				0, // 0xEB
				0, // 0xEC
				0, // 0xED
				0, // 0xEE
				0, // 0xEF
				0, // 0xF0
				KEY_UP, // 0xF1
				KEY_DOWN, // 0xF2
				KEY_LEFT, // 0xF3
				KEY_RIGHT, // 0xF4
				KEY_LEFT_SHIFT, // 0xF5
				KEY_CTRL, // 0xF6
				0, // 0xF7
				0, // 0xF8
				0, // 0xF9
				0, // 0xFA
				0, // 0xFB
				0, // 0xFC
				0, // 0xFD
				0, // 0xFE
				0, // 0xFF
};

static uint8_t kaypro1_ColemakMap[] = { 0,
				0, // 0x01
				0, // 0x02
				0, // 0x03
				0, // 0x04
				0, // 0x05
				0, // 0x06
				0, // 0x07
				KEY_BACKSPACE, // 0x08
				KEY_TAB, // 0x09
				0, // 0x0A
				0, // 0x0B
				0, // 0x0C
				KEY_ENTER, // 0x0D
				0, // 0x0E
				0, // 0x0F
				0, // 0x10
				0, // 0x11
				0, // 0x12
				0, // 0x13
				0, // 0x14
				0, // 0x15
				0, // 0x16
				0, // 0x17
				0, // 0x18
				0, // 0x19
				0, // 0x1A
				KEY_ESC, // 0x1B
				0, // 0x1C
				0, // 0x1D
				0, // 0x1E
				0, // 0x1F
				KEY_SPACE, // 0x20
				0, // 0x21
				0, // 0x22
				0, // 0x23
				0, // 0x24
				0, // 0x25
				0, // 0x26
				KEY_QUOTE, // 0x27
				0, // 0x28
				0, // 0x29
				0, // 0x2A
				0, // 0x2B
				KEY_COMMA, // 0x2C
				KEY_MINUS, // 0x2D
				KEY_PERIOD, // 0x2E
				KEY_SLASH, // 0x2F
				KEY_0, // 0x30
				KEY_1, // 0x31
				KEY_2, // 0x32
				KEY_3, // 0x33
				KEY_4, // 0x34
				KEY_5, // 0x35
				KEY_6, // 0x36
				KEY_7, // 0x37
				KEY_8, // 0x38
				KEY_9, // 0x39
				0, // 0x3A
				KEY_O, // 0x3B
				0, // 0x3C
				KEY_EQUAL, // 0x3D
				0, // 0x3E
				0, // 0x3F
				0, // 0x40
				0, // 0x41
				0, // 0x42
				0, // 0x43
				0, // 0x44
				0, // 0x45
				0, // 0x46
				0, // 0x47
				0, // 0x48
				0, // 0x49
				0, // 0x4A
				0, // 0x4B
				0, // 0x4C
				0, // 0x4D
				0, // 0x4E
				0, // 0x4F
				0, // 0x50
				0, // 0x51
				0, // 0x52
				0, // 0x53
				0, // 0x54
				0, // 0x55
				0, // 0x56
				0, // 0x57
				0, // 0x58
				0, // 0x59
				0, // 0x5A
				KEY_LEFT_BRACE, // 0x5B
				KEY_BACKSLASH, // 0x5C
				KEY_RIGHT_BRACE, // 0x5D
				0, // 0x5E
				0, // 0x5F
				KEY_TILDE, // 0x60
				KEY_A, // 0x61
				KEY_B, // 0x62
				KEY_C, // 0x63
				KEY_S, // 0x64
				KEY_F, // 0x65
				KEY_T, // 0x66
				KEY_D, // 0x67
				KEY_H, // 0x68
				KEY_U, // 0x69
				KEY_N, // 0x6A
				KEY_E, // 0x6B
				KEY_I, // 0x6C
				KEY_M, // 0x6D
				KEY_K, // 0x6E
				KEY_Y, // 0x6F
				KEY_SEMICOLON, // 0x70
				KEY_Q, // 0x71
				KEY_P, // 0x72
				KEY_R, // 0x73
				KEY_G, // 0x74
				KEY_L, // 0x75
				KEY_V, // 0x76
				KEY_W, // 0x77
				KEY_X, // 0x78
				KEY_J, // 0x79
				KEY_Z, // 0x7A
				0, // 0x7B
				0, // 0x7C
				0, // 0x7D
				0, // 0x7E
				KEY_DELETE, // 0x7F
				0, // 0x80
				0, // 0x81
				0, // 0x82
				0, // 0x83
				0, // 0x84
				0, // 0x85
				0, // 0x86
				0, // 0x87
				0, // 0x88
				0, // 0x89
				0, // 0x8A
				0, // 0x8B
				0, // 0x8C
				0, // 0x8D
				0, // 0x8E
				0, // 0x8F
				0, // 0x90
				0, // 0x91
				0, // 0x92
				0, // 0x93
				0, // 0x94
				0, // 0x95
				0, // 0x96
				0, // 0x97
				0, // 0x98
				0, // 0x99
				0, // 0x9A
				0, // 0x9B
				0, // 0x9C
				0, // 0x9D
				0, // 0x9E
				0, // 0x9F
				0, // 0xA0
				0, // 0xA1
				0, // 0xA2
				0, // 0xA3
				0, // 0xA4
				0, // 0xA5
				0, // 0xA6
				0, // 0xA7
				0, // 0xA8
				0, // 0xA9
				0, // 0xAA
				0, // 0xAB
				0, // 0xAC
				0, // 0xAD
				0, // 0xAE
				0, // 0xAF
				0, // 0xB0
				KEYPAD_0, // 0xB1
				KEYPAD_PERIOD, // 0xB2
				0, // 0xB3
				0, // 0xB4
				0, // 0xB5
				0, // 0xB6
				0, // 0xB7
				0, // 0xB8
				0, // 0xB9
				0, // 0xBA
				0, // 0xBB
				0, // 0xBC
				0, // 0xBD
				0, // 0xBE
				0, // 0xBF
				KEYPAD_1, // 0xC0
				KEYPAD_2, // 0xC1
				KEYPAD_3, // 0xC2
				KEYPAD_ENTER, // 0xC3
				0, // 0xC4
				0, // 0xC5
				0, // 0xC6
				0, // 0xC7
				0, // 0xC8
				0, // 0xC9
				0, // 0xCA
				0, // 0xCB
				0, // 0xCC
				0, // 0xCD
				0, // 0xCE
				0, // 0xCF
				KEYPAD_4, // 0xD0
				KEYPAD_5, // 0xD1
				KEYPAD_6, // 0xD2
				KEYPAD_COMMA, // 0xD3
				0, // 0xD4
				0, // 0xD5
				0, // 0xD6
				0, // 0xD7
				0, // 0xD8
				0, // 0xD9
				0, // 0xDA
				0, // 0xDB
				0, // 0xDC
				0, // 0xDD
				0, // 0xDE
				0, // 0xDF
				0, // 0xE0
				KEYPAD_7, // 0xE1
				KEYPAD_8, // 0xE2
				KEYPAD_9, // 0xE3
				KEYPAD_MINUS, // 0xE4
				0, // 0xE5
				0, // 0xE6
				0, // 0xE7
				0, // 0xE8
				0, // 0xE9
				0, // 0xEA
				0, // 0xEB
				0, // 0xEC
				0, // 0xED
				0, // 0xEE
				0, // 0xEF
				0, // 0xF0
				KEY_UP, // 0xF1
				KEY_DOWN, // 0xF2
				KEY_LEFT, // 0xF3
				KEY_RIGHT, // 0xF4
				KEY_LEFT_SHIFT, // 0xF5
				KEY_CTRL, // 0xF6
				0, // 0xF7
				0, // 0xF8
				0, // 0xF9
				0, // 0xFA
				0, // 0xFB
				0, // 0xFC
				0, // 0xFD
				0, // 0xFE
				0, // 0xFF
};



#endif