1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
// license:BSD-3-Clause
// copyright-holders:Juergen Buchmueller
/*****************************************************************************
*
* Xerox AltoII keyboard hardware (KBD)
*
*****************************************************************************/
#ifdef ALTO2_DEFINE_CONSTANTS
//! make an Xerox AltoII key bit mask
#define MAKE_KEY(a,b) (1 << (b))
#define A2_KEY_5 MAKE_KEY(0,017) //!< normal: 5 shifted: %
#define A2_KEY_4 MAKE_KEY(0,016) //!< normal: 4 shifted: $
#define A2_KEY_6 MAKE_KEY(0,015) //!< normal: 6 shifted: ~
#define A2_KEY_E MAKE_KEY(0,014) //!< normal: e shifted: E
#define A2_KEY_7 MAKE_KEY(0,013) //!< normal: 7 shifted: &
#define A2_KEY_D MAKE_KEY(0,012) //!< normal: d shifted: D
#define A2_KEY_U MAKE_KEY(0,011) //!< normal: u shifted: U
#define A2_KEY_V MAKE_KEY(0,010) //!< normal: v shifted: V
#define A2_KEY_0 MAKE_KEY(0,007) //!< normal: 0 shifted: )
#define A2_KEY_K MAKE_KEY(0,006) //!< normal: k shifted: K
#define A2_KEY_MINUS MAKE_KEY(0,005) //!< normal: - shifted: _
#define A2_KEY_P MAKE_KEY(0,004) //!< normal: p shifted: P
#define A2_KEY_SLASH MAKE_KEY(0,003) //!< normal: / shifted: ?
#define A2_KEY_BACKSLASH MAKE_KEY(0,002) //!< normal: \ shifted: |
#define A2_KEY_LF MAKE_KEY(0,001) //!< normal: LF
#define A2_KEY_BS MAKE_KEY(0,000) //!< normal: BS
#define A2_KEY_3 MAKE_KEY(1,017) //!< normal: 3 shifted: #
#define A2_KEY_2 MAKE_KEY(1,016) //!< normal: 2 shifted: @
#define A2_KEY_W MAKE_KEY(1,015) //!< normal: w shifted: W
#define A2_KEY_Q MAKE_KEY(1,014) //!< normal: q shifted: Q
#define A2_KEY_S MAKE_KEY(1,013) //!< normal: s shifted: S
#define A2_KEY_A MAKE_KEY(1,012) //!< normal: a shifted: A
#define A2_KEY_9 MAKE_KEY(1,011) //!< normal: 9 shifted: (
#define A2_KEY_I MAKE_KEY(1,010) //!< normal: i shifted: I
#define A2_KEY_X MAKE_KEY(1,007) //!< normal: x shifted: X
#define A2_KEY_O MAKE_KEY(1,006) //!< normal: o shifted: O
#define A2_KEY_L MAKE_KEY(1,005) //!< normal: l shifted: L
#define A2_KEY_COMMA MAKE_KEY(1,004) //!< normal: , shifted: <
#define A2_KEY_QUOTE MAKE_KEY(1,003) //!< normal: ' shifted: "
#define A2_KEY_RBRACKET MAKE_KEY(1,002) //!< normal: ] shifted: }
#define A2_KEY_BLANK_MID MAKE_KEY(1,001) //!< middle blank key
#define A2_KEY_BLANK_TOP MAKE_KEY(1,000) //!< top blank key
#define A2_KEY_1 MAKE_KEY(2,017) //!< normal: 1 shifted: !
#define A2_KEY_ESCAPE MAKE_KEY(2,016) //!< normal: ESC shifted: ?
#define A2_KEY_TAB MAKE_KEY(2,015) //!< normal: TAB shifted: ?
#define A2_KEY_F MAKE_KEY(2,014) //!< normal: f shifted: F
#define A2_KEY_CTRL MAKE_KEY(2,013) //!< CTRL
#define A2_KEY_C MAKE_KEY(2,012) //!< normal: c shifted: C
#define A2_KEY_J MAKE_KEY(2,011) //!< normal: j shifted: J
#define A2_KEY_B MAKE_KEY(2,010) //!< normal: b shifted: B
#define A2_KEY_Z MAKE_KEY(2,007) //!< normal: z shifted: Z
#define A2_KEY_LSHIFT MAKE_KEY(2,006) //!< LSHIFT
#define A2_KEY_PERIOD MAKE_KEY(2,005) //!< normal: . shifted: >
#define A2_KEY_SEMICOLON MAKE_KEY(2,004) //!< normal: ; shifted: :
#define A2_KEY_RETURN MAKE_KEY(2,003) //!< RETURN
#define A2_KEY_LEFTARROW MAKE_KEY(2,002) //!< normal: <- shifted: ^ (caret?)
#define A2_KEY_DEL MAKE_KEY(2,001) //!< normal: DEL
#define A2_KEY_MSW_2_17 MAKE_KEY(2,000) //!< unused on Microswitch KDB
#define A2_KEY_R MAKE_KEY(3,017) //!< normal: r shifted: R
#define A2_KEY_T MAKE_KEY(3,016) //!< normal: t shifted: T
#define A2_KEY_G MAKE_KEY(3,015) //!< normal: g shifted: G
#define A2_KEY_Y MAKE_KEY(3,014) //!< normal: y shifted: Y
#define A2_KEY_H MAKE_KEY(3,013) //!< normal: h shifted: H
#define A2_KEY_8 MAKE_KEY(3,012) //!< normal: 8 shifted: *
#define A2_KEY_N MAKE_KEY(3,011) //!< normal: n shifted: N
#define A2_KEY_M MAKE_KEY(3,010) //!< normal: m shifted: M
#define A2_KEY_LOCK MAKE_KEY(3,007) //!< LOCK
#define A2_KEY_SPACE MAKE_KEY(3,006) //!< SPACE
#define A2_KEY_LBRACKET MAKE_KEY(3,005) //!< normal: [ shifted: {
#define A2_KEY_EQUALS MAKE_KEY(3,004) //!< normal: = shifted: +
#define A2_KEY_RSHIFT MAKE_KEY(3,003) //!< RSHIFT
#define A2_KEY_BLANK_BOT MAKE_KEY(3,002) //!< bottom blank key
#define A2_KEY_MSW_3_16 MAKE_KEY(3,001) //!< unused on Microswitch KDB
#define A2_KEY_MSW_3_17 MAKE_KEY(3,000) //!< unused on Microswitch KDB
#define A2_KEY_FR2 MAKE_KEY(0,002) //!< ADL right function key 2
#define A2_KEY_FL2 MAKE_KEY(0,001) //!< ADL left function key 1
#define A2_KEY_FR4 MAKE_KEY(1,001) //!< ADL right function key 4
#define A2_KEY_BW MAKE_KEY(1,000) //!< ADL BW (?)
#define A2_KEY_FR3 MAKE_KEY(2,002) //!< ADL right function key 3
#define A2_KEY_FL1 MAKE_KEY(2,001) //!< ADL left function key 1
#define A2_KEY_FL3 MAKE_KEY(2,000) //!< ADL left function key 3
#define A2_KEY_FR1 MAKE_KEY(3,002) //!< ADL right function key 4
#define A2_KEY_FL4 MAKE_KEY(3,001) //!< ADL left function key 4
#define A2_KEY_FR5 MAKE_KEY(3,000) //!< ADL right function key 5
#else // ALTO2_DEFINE_CONSTANTS
#ifndef _A2KBD_H_
#define _A2KBD_H_
struct {
uint16_t bootkey; //!< boot key - key code pressed before power on
uint16_t matrix[4]; //!< a bit map of the keys pressed (ioports ROW0 ... ROW3)
} m_kbd;
DECLARE_READ16_MEMBER( kbd_ad_r ); //!< read the keyboard matrix
void init_kbd(uint16_t bootkey = 0177777); //!< initialize the keyboard hardware, optionally set the boot key
void exit_kbd(); //!< deinitialize the keyboard hardware
void reset_kbd(); //!< reset the keyboard hardware
#endif // _A2KBD_H_
#endif // ALTO2_DEFINE_CONSTANTS
|