Correct key mapping

This commit is contained in:
Andrew Kay
2020-06-09 09:00:52 -05:00
parent 30e18200f8
commit de7b9cb610
6 changed files with 99 additions and 115 deletions

View File

@@ -50,96 +50,79 @@ class Key(Enum):
DELETE = 265
LEFT = 266
LEFT_2 = 410
UP = 267
RIGHT = 268
RIGHT_2 = 411
DOWN = 269
ROLL_UP = 270
ROLL_DOWN = 271
LEFT_2 = 267
UP = 268
RIGHT = 269
RIGHT_2 = 270
DOWN = 271
HOME = 272
DUP = 273
BLANK_4 = 274
JUMP = 275 # Alt + BLANK_4
SWAP = 276 # Alt + BACKTAB
JUMP = 274
# Function
PF1 = 277
PF2 = 278
PF3 = 279
PF4 = 280
PF5 = 281
PF6 = 282
PF7 = 283
PF8 = 284
PF9 = 285
PF10 = 286
PF11 = 287
PF12 = 288
PF13 = 289
PF14 = 290
PF15 = 291
PF16 = 292
PF17 = 293
PF18 = 294
PF19 = 295
PF20 = 296
PF21 = 297
PF22 = 298
PF23 = 299
PF24 = 300
PF1 = 275
PF2 = 276
PF3 = 277
PF4 = 278
PF5 = 279
PF6 = 280
PF7 = 281
PF8 = 282
PF9 = 283
PF10 = 284
PF11 = 285
PF12 = 286
PF13 = 287
PF14 = 288
PF15 = 289
PF16 = 290
PF17 = 291
PF18 = 292
PF19 = 293
PF20 = 294
PF21 = 295
PF22 = 296
PF23 = 297
PF24 = 298
# Control
ENTER = 301
FIELD_EXIT = 302
RESET = 303
QUIT = 304
ENTER = 299
RESET = 300
QUIT = 301
DEVICE_CANCEL = 302
SYS_RQ = 305
ATTN = 306
BLANK_1 = 307
CLEAR = 308 # Alt + BLANK_1
BLANK_2 = 309
ERASE_INPUT = 310
PRINT = 311
HELP = 312
HEX = 313 # Alt + HELP
BLANK_3 = 314
PLAY = 315
TEST = 316 # Alt + PLAY
SET_UP = 317
RECORD = 318
PAUSE = 319 # Alt + RECORD
SYS_RQ = 303
ATTN = 304
CLEAR = 305
ERASE_INPUT = 306
PRINT = 307
TEST = 308
FIELD_MARK = 401
CURSOR_SELECT = 402
CURSOR_BLINK = 403
ERASE_EOF = 404
CLICKER = 405
ALT_CURSOR = 406
IDENT = 407
FIELD_MARK = 309
CURSOR_SELECT = 310
CURSOR_BLINK = 311
ERASE_EOF = 312
CLICKER = 313
ALT_CURSOR = 314
IDENT = 315
EXTEND_SELECT = 316
CTRL = 317
PA1 = 408
PA2 = 409
PA1 = 318
PA2 = 319
PA3 = 320
# Number Pad
NUMPAD_BLANK_1 = 320
NUMPAD_BLANK_2 = 321
NUMPAD_BLANK_3 = 322
NUMPAD_BLANK_4 = 323
NUMPAD_SEVEN = ord('7')
NUMPAD_EIGHT = ord('8')
NUMPAD_NINE = ord('9')
NUMPAD_FIELD_MINUS = 327
NUMPAD_FOUR = ord('4')
NUMPAD_FIVE = ord('5')
NUMPAD_SIX = ord('6')
NUMPAD_BLANK_5 = 331
NUMPAD_ONE = ord('1')
NUMPAD_TWO = ord('2')
NUMPAD_THREE = ord('3')
NUMPAD_FIELD_PLUS = 335
NUMPAD_ZERO = ord('0')
NUMPAD_PERIOD = ord('.')

View File

@@ -9,8 +9,8 @@ KEYMAP_DEFAULT = {
# Control Keys
80: Key.ATTN,
81: Key.CURSOR_SELECT,
82: Key.BLANK_1,
83: Key.BLANK_2,
82: None, # Blank
83: None, # Blank
84: Key.CURSOR_BLINK,
85: Key.ERASE_EOF,
86: Key.PRINT,
@@ -62,7 +62,7 @@ KEYMAP_DEFAULT = {
126: Key.SEMICOLON,
18: Key.SINGLE_QUOTE,
15: Key.LEFT_BRACE,
8: Key.FIELD_EXIT,
8: Key.NEWLINE,
# Fourth Row
77: Key.LEFT_SHIFT,
@@ -88,7 +88,7 @@ KEYMAP_DEFAULT = {
# Right
95: Key.DUP,
94: Key.FIELD_MARK,
12: Key.INSERT, # TODO: Confirm this mapping
12: Key.INSERT,
13: Key.DELETE,
14: Key.UP,
19: Key.DOWN,

View File

@@ -5,6 +5,9 @@ oec.keymap_3483
from .keyboard import Key, Keymap
# I have a 5250 keyboard for my 3483-V, this mapping is based on photographs
# of the 3270 keyboard and may not be correct.
KEYMAP_DEFAULT = {
# Function Keys
7: Key.PF1,
@@ -34,15 +37,15 @@ KEYMAP_DEFAULT = {
# Control Keys
5: Key.ATTN,
6: Key.BLANK_1,
4: Key.BLANK_2,
12: None, # ERASE_INPUT
3: Key.PRINT,
11: Key.HELP,
131: Key.BLANK_3,
10: Key.PLAY,
1: Key.SET_UP,
9: Key.RECORD,
6: Key.CLEAR,
4: Key.CURSOR_SELECT,
12: None, # Pause
3: Key.EXTEND_SELECT,
11: Key.ERASE_EOF,
131: Key.PRINT,
10: None, # Play
1: Key.PRINT,
9: Key.CTRL,
# First Row
14: Key.BACKTICK,
@@ -74,7 +77,7 @@ KEYMAP_DEFAULT = {
77: Key.LOWER_P,
84: Key.CENT,
91: Key.BACKSLASH,
90: Key.FIELD_EXIT,
90: Key.NEWLINE,
# Third Row
20: Key.CAPS_LOCK,
@@ -114,36 +117,36 @@ KEYMAP_DEFAULT = {
88: Key.ENTER,
# Center
103: Key.BACKTAB,
110: Key.DUP,
111: Key.BLANK_4,
100: Key.NEWLINE,
103: Key.PA1,
110: Key.PA2,
111: Key.JUMP,
100: Key.BACKTAB,
101: Key.INSERT,
109: Key.DELETE,
99: Key.UP,
97: Key.LEFT,
98: None, # RULE
98: None, # Rule
106: Key.RIGHT,
96: Key.DOWN,
# Number Pad
118: Key.NUMPAD_BLANK_1,
119: Key.NUMPAD_BLANK_2,
126: Key.NUMPAD_BLANK_3,
132: Key.NUMPAD_BLANK_4,
118: None, # Blank
119: None, # Blank
126: Key.COMMA,
132: Key.SPACE,
108: Key.NUMPAD_SEVEN,
117: Key.NUMPAD_EIGHT,
125: Key.NUMPAD_NINE,
124: Key.NUMPAD_FIELD_MINUS,
124: Key.TAB,
107: Key.NUMPAD_FOUR,
115: Key.NUMPAD_FIVE,
116: Key.NUMPAD_SIX,
123: Key.NUMPAD_BLANK_5,
123: Key.MINUS,
105: Key.NUMPAD_ONE,
114: Key.NUMPAD_TWO,
122: Key.NUMPAD_THREE,
121: Key.NUMPAD_FIELD_PLUS,
121: Key.ENTER,
112: Key.NUMPAD_ZERO,
113: Key.NUMPAD_PERIOD
}
@@ -152,8 +155,7 @@ KEYMAP_SHIFT = {
**KEYMAP_DEFAULT,
# Control Keys
5: Key.SYS_RQ,
12: Key.ERASE_INPUT,
10: None, # Copy
# First Row
14: Key.TILDE,
@@ -207,23 +209,30 @@ KEYMAP_SHIFT = {
50: Key.UPPER_B,
49: Key.UPPER_N,
58: Key.UPPER_M,
65: Key.COMMA, # TODO: ???
73: Key.CENTER_PERIOD, # TODO: ???
65: Key.COMMA, # TODO: Confirm this mapping
73: Key.CENTER_PERIOD, # TODO: Confirm this mapping
74: Key.QUESTION,
# Center
99: Key.ROLL_UP,
96: Key.ROLL_DOWN
103: Key.DUP,
110: Key.FIELD_MARK
}
KEYMAP_ALT = {
**KEYMAP_DEFAULT,
# Control Keys
6: Key.CLEAR,
5: Key.SYS_RQ,
12: Key.ERASE_INPUT,
131: Key.IDENT,
10: Key.TEST,
# Center
98: Key.HOME
111: Key.PA3,
97: Key.LEFT_2,
98: Key.HOME,
106: Key.RIGHT_2
}
KEYMAP = Keymap('3483', KEYMAP_DEFAULT, KEYMAP_SHIFT, KEYMAP_ALT, modifier_release=240)

View File

@@ -15,9 +15,9 @@ from .keyboard import Key, get_ebcdic_character_for_key
AID_KEY_MAP = {
Key.CLEAR: AID.CLEAR,
Key.ENTER: AID.ENTER,
#Key.PA1: AID.PA1,
#Key.PA2: AID.PA2,
#Key.PA3: AID.PA3,
Key.PA1: AID.PA1,
Key.PA2: AID.PA2,
Key.PA3: AID.PA3,
Key.PF1: AID.PF1,
Key.PF2: AID.PF2,
Key.PF3: AID.PF3,
@@ -111,7 +111,7 @@ class TN3270Session(Session):
self.emulator.tab()
elif key == Key.BACKTAB:
self.emulator.tab(direction=-1)
elif key in [Key.NEWLINE, Key.FIELD_EXIT]:
elif key == Key.NEWLINE:
self.emulator.newline()
elif key == Key.HOME:
self.emulator.home()

View File

@@ -22,7 +22,6 @@ VT100_KEY_MAP = {
Key.NEWLINE: b'\r',
Key.ENTER: b'\r',
Key.FIELD_EXIT: b'\r',
Key.BACKSPACE: b'\b',
Key.TAB: b'\t',

View File

@@ -144,13 +144,6 @@ class SessionHandleKeyTestCase(unittest.TestCase):
# Assert
self.session.emulator.newline.assert_called()
def test_field_exit(self):
# Act
self.session.handle_key(Key.FIELD_EXIT, KeyboardModifiers.NONE, None)
# Assert
self.session.emulator.newline.assert_called()
def test_home(self):
# Act
self.session.handle_key(Key.HOME, KeyboardModifiers.NONE, None)