mirror of
https://github.com/lowobservable/oec.git
synced 2026-05-04 06:59:31 +00:00
Correct key mapping
This commit is contained in:
121
oec/keyboard.py
121
oec/keyboard.py
@@ -50,96 +50,79 @@ class Key(Enum):
|
|||||||
DELETE = 265
|
DELETE = 265
|
||||||
|
|
||||||
LEFT = 266
|
LEFT = 266
|
||||||
LEFT_2 = 410
|
LEFT_2 = 267
|
||||||
UP = 267
|
UP = 268
|
||||||
RIGHT = 268
|
RIGHT = 269
|
||||||
RIGHT_2 = 411
|
RIGHT_2 = 270
|
||||||
DOWN = 269
|
DOWN = 271
|
||||||
ROLL_UP = 270
|
|
||||||
ROLL_DOWN = 271
|
|
||||||
HOME = 272
|
HOME = 272
|
||||||
|
|
||||||
DUP = 273
|
DUP = 273
|
||||||
BLANK_4 = 274
|
JUMP = 274
|
||||||
JUMP = 275 # Alt + BLANK_4
|
|
||||||
SWAP = 276 # Alt + BACKTAB
|
|
||||||
|
|
||||||
# Function
|
# Function
|
||||||
PF1 = 277
|
PF1 = 275
|
||||||
PF2 = 278
|
PF2 = 276
|
||||||
PF3 = 279
|
PF3 = 277
|
||||||
PF4 = 280
|
PF4 = 278
|
||||||
PF5 = 281
|
PF5 = 279
|
||||||
PF6 = 282
|
PF6 = 280
|
||||||
PF7 = 283
|
PF7 = 281
|
||||||
PF8 = 284
|
PF8 = 282
|
||||||
PF9 = 285
|
PF9 = 283
|
||||||
PF10 = 286
|
PF10 = 284
|
||||||
PF11 = 287
|
PF11 = 285
|
||||||
PF12 = 288
|
PF12 = 286
|
||||||
PF13 = 289
|
PF13 = 287
|
||||||
PF14 = 290
|
PF14 = 288
|
||||||
PF15 = 291
|
PF15 = 289
|
||||||
PF16 = 292
|
PF16 = 290
|
||||||
PF17 = 293
|
PF17 = 291
|
||||||
PF18 = 294
|
PF18 = 292
|
||||||
PF19 = 295
|
PF19 = 293
|
||||||
PF20 = 296
|
PF20 = 294
|
||||||
PF21 = 297
|
PF21 = 295
|
||||||
PF22 = 298
|
PF22 = 296
|
||||||
PF23 = 299
|
PF23 = 297
|
||||||
PF24 = 300
|
PF24 = 298
|
||||||
|
|
||||||
# Control
|
# Control
|
||||||
ENTER = 301
|
ENTER = 299
|
||||||
FIELD_EXIT = 302
|
RESET = 300
|
||||||
RESET = 303
|
QUIT = 301
|
||||||
QUIT = 304
|
DEVICE_CANCEL = 302
|
||||||
|
|
||||||
SYS_RQ = 305
|
SYS_RQ = 303
|
||||||
ATTN = 306
|
ATTN = 304
|
||||||
BLANK_1 = 307
|
CLEAR = 305
|
||||||
CLEAR = 308 # Alt + BLANK_1
|
ERASE_INPUT = 306
|
||||||
BLANK_2 = 309
|
PRINT = 307
|
||||||
ERASE_INPUT = 310
|
TEST = 308
|
||||||
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
|
|
||||||
|
|
||||||
FIELD_MARK = 401
|
FIELD_MARK = 309
|
||||||
CURSOR_SELECT = 402
|
CURSOR_SELECT = 310
|
||||||
CURSOR_BLINK = 403
|
CURSOR_BLINK = 311
|
||||||
ERASE_EOF = 404
|
ERASE_EOF = 312
|
||||||
CLICKER = 405
|
CLICKER = 313
|
||||||
ALT_CURSOR = 406
|
ALT_CURSOR = 314
|
||||||
IDENT = 407
|
IDENT = 315
|
||||||
|
EXTEND_SELECT = 316
|
||||||
|
CTRL = 317
|
||||||
|
|
||||||
PA1 = 408
|
PA1 = 318
|
||||||
PA2 = 409
|
PA2 = 319
|
||||||
|
PA3 = 320
|
||||||
|
|
||||||
# Number Pad
|
# Number Pad
|
||||||
NUMPAD_BLANK_1 = 320
|
|
||||||
NUMPAD_BLANK_2 = 321
|
|
||||||
NUMPAD_BLANK_3 = 322
|
|
||||||
NUMPAD_BLANK_4 = 323
|
|
||||||
NUMPAD_SEVEN = ord('7')
|
NUMPAD_SEVEN = ord('7')
|
||||||
NUMPAD_EIGHT = ord('8')
|
NUMPAD_EIGHT = ord('8')
|
||||||
NUMPAD_NINE = ord('9')
|
NUMPAD_NINE = ord('9')
|
||||||
NUMPAD_FIELD_MINUS = 327
|
|
||||||
NUMPAD_FOUR = ord('4')
|
NUMPAD_FOUR = ord('4')
|
||||||
NUMPAD_FIVE = ord('5')
|
NUMPAD_FIVE = ord('5')
|
||||||
NUMPAD_SIX = ord('6')
|
NUMPAD_SIX = ord('6')
|
||||||
NUMPAD_BLANK_5 = 331
|
|
||||||
NUMPAD_ONE = ord('1')
|
NUMPAD_ONE = ord('1')
|
||||||
NUMPAD_TWO = ord('2')
|
NUMPAD_TWO = ord('2')
|
||||||
NUMPAD_THREE = ord('3')
|
NUMPAD_THREE = ord('3')
|
||||||
NUMPAD_FIELD_PLUS = 335
|
|
||||||
NUMPAD_ZERO = ord('0')
|
NUMPAD_ZERO = ord('0')
|
||||||
NUMPAD_PERIOD = ord('.')
|
NUMPAD_PERIOD = ord('.')
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ KEYMAP_DEFAULT = {
|
|||||||
# Control Keys
|
# Control Keys
|
||||||
80: Key.ATTN,
|
80: Key.ATTN,
|
||||||
81: Key.CURSOR_SELECT,
|
81: Key.CURSOR_SELECT,
|
||||||
82: Key.BLANK_1,
|
82: None, # Blank
|
||||||
83: Key.BLANK_2,
|
83: None, # Blank
|
||||||
84: Key.CURSOR_BLINK,
|
84: Key.CURSOR_BLINK,
|
||||||
85: Key.ERASE_EOF,
|
85: Key.ERASE_EOF,
|
||||||
86: Key.PRINT,
|
86: Key.PRINT,
|
||||||
@@ -62,7 +62,7 @@ KEYMAP_DEFAULT = {
|
|||||||
126: Key.SEMICOLON,
|
126: Key.SEMICOLON,
|
||||||
18: Key.SINGLE_QUOTE,
|
18: Key.SINGLE_QUOTE,
|
||||||
15: Key.LEFT_BRACE,
|
15: Key.LEFT_BRACE,
|
||||||
8: Key.FIELD_EXIT,
|
8: Key.NEWLINE,
|
||||||
|
|
||||||
# Fourth Row
|
# Fourth Row
|
||||||
77: Key.LEFT_SHIFT,
|
77: Key.LEFT_SHIFT,
|
||||||
@@ -88,7 +88,7 @@ KEYMAP_DEFAULT = {
|
|||||||
# Right
|
# Right
|
||||||
95: Key.DUP,
|
95: Key.DUP,
|
||||||
94: Key.FIELD_MARK,
|
94: Key.FIELD_MARK,
|
||||||
12: Key.INSERT, # TODO: Confirm this mapping
|
12: Key.INSERT,
|
||||||
13: Key.DELETE,
|
13: Key.DELETE,
|
||||||
14: Key.UP,
|
14: Key.UP,
|
||||||
19: Key.DOWN,
|
19: Key.DOWN,
|
||||||
|
|||||||
@@ -5,6 +5,9 @@ oec.keymap_3483
|
|||||||
|
|
||||||
from .keyboard import Key, Keymap
|
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 = {
|
KEYMAP_DEFAULT = {
|
||||||
# Function Keys
|
# Function Keys
|
||||||
7: Key.PF1,
|
7: Key.PF1,
|
||||||
@@ -34,15 +37,15 @@ KEYMAP_DEFAULT = {
|
|||||||
|
|
||||||
# Control Keys
|
# Control Keys
|
||||||
5: Key.ATTN,
|
5: Key.ATTN,
|
||||||
6: Key.BLANK_1,
|
6: Key.CLEAR,
|
||||||
4: Key.BLANK_2,
|
4: Key.CURSOR_SELECT,
|
||||||
12: None, # ERASE_INPUT
|
12: None, # Pause
|
||||||
3: Key.PRINT,
|
3: Key.EXTEND_SELECT,
|
||||||
11: Key.HELP,
|
11: Key.ERASE_EOF,
|
||||||
131: Key.BLANK_3,
|
131: Key.PRINT,
|
||||||
10: Key.PLAY,
|
10: None, # Play
|
||||||
1: Key.SET_UP,
|
1: Key.PRINT,
|
||||||
9: Key.RECORD,
|
9: Key.CTRL,
|
||||||
|
|
||||||
# First Row
|
# First Row
|
||||||
14: Key.BACKTICK,
|
14: Key.BACKTICK,
|
||||||
@@ -74,7 +77,7 @@ KEYMAP_DEFAULT = {
|
|||||||
77: Key.LOWER_P,
|
77: Key.LOWER_P,
|
||||||
84: Key.CENT,
|
84: Key.CENT,
|
||||||
91: Key.BACKSLASH,
|
91: Key.BACKSLASH,
|
||||||
90: Key.FIELD_EXIT,
|
90: Key.NEWLINE,
|
||||||
|
|
||||||
# Third Row
|
# Third Row
|
||||||
20: Key.CAPS_LOCK,
|
20: Key.CAPS_LOCK,
|
||||||
@@ -114,36 +117,36 @@ KEYMAP_DEFAULT = {
|
|||||||
88: Key.ENTER,
|
88: Key.ENTER,
|
||||||
|
|
||||||
# Center
|
# Center
|
||||||
103: Key.BACKTAB,
|
103: Key.PA1,
|
||||||
110: Key.DUP,
|
110: Key.PA2,
|
||||||
111: Key.BLANK_4,
|
111: Key.JUMP,
|
||||||
100: Key.NEWLINE,
|
100: Key.BACKTAB,
|
||||||
101: Key.INSERT,
|
101: Key.INSERT,
|
||||||
109: Key.DELETE,
|
109: Key.DELETE,
|
||||||
|
|
||||||
99: Key.UP,
|
99: Key.UP,
|
||||||
97: Key.LEFT,
|
97: Key.LEFT,
|
||||||
98: None, # RULE
|
98: None, # Rule
|
||||||
106: Key.RIGHT,
|
106: Key.RIGHT,
|
||||||
96: Key.DOWN,
|
96: Key.DOWN,
|
||||||
|
|
||||||
# Number Pad
|
# Number Pad
|
||||||
118: Key.NUMPAD_BLANK_1,
|
118: None, # Blank
|
||||||
119: Key.NUMPAD_BLANK_2,
|
119: None, # Blank
|
||||||
126: Key.NUMPAD_BLANK_3,
|
126: Key.COMMA,
|
||||||
132: Key.NUMPAD_BLANK_4,
|
132: Key.SPACE,
|
||||||
108: Key.NUMPAD_SEVEN,
|
108: Key.NUMPAD_SEVEN,
|
||||||
117: Key.NUMPAD_EIGHT,
|
117: Key.NUMPAD_EIGHT,
|
||||||
125: Key.NUMPAD_NINE,
|
125: Key.NUMPAD_NINE,
|
||||||
124: Key.NUMPAD_FIELD_MINUS,
|
124: Key.TAB,
|
||||||
107: Key.NUMPAD_FOUR,
|
107: Key.NUMPAD_FOUR,
|
||||||
115: Key.NUMPAD_FIVE,
|
115: Key.NUMPAD_FIVE,
|
||||||
116: Key.NUMPAD_SIX,
|
116: Key.NUMPAD_SIX,
|
||||||
123: Key.NUMPAD_BLANK_5,
|
123: Key.MINUS,
|
||||||
105: Key.NUMPAD_ONE,
|
105: Key.NUMPAD_ONE,
|
||||||
114: Key.NUMPAD_TWO,
|
114: Key.NUMPAD_TWO,
|
||||||
122: Key.NUMPAD_THREE,
|
122: Key.NUMPAD_THREE,
|
||||||
121: Key.NUMPAD_FIELD_PLUS,
|
121: Key.ENTER,
|
||||||
112: Key.NUMPAD_ZERO,
|
112: Key.NUMPAD_ZERO,
|
||||||
113: Key.NUMPAD_PERIOD
|
113: Key.NUMPAD_PERIOD
|
||||||
}
|
}
|
||||||
@@ -152,8 +155,7 @@ KEYMAP_SHIFT = {
|
|||||||
**KEYMAP_DEFAULT,
|
**KEYMAP_DEFAULT,
|
||||||
|
|
||||||
# Control Keys
|
# Control Keys
|
||||||
5: Key.SYS_RQ,
|
10: None, # Copy
|
||||||
12: Key.ERASE_INPUT,
|
|
||||||
|
|
||||||
# First Row
|
# First Row
|
||||||
14: Key.TILDE,
|
14: Key.TILDE,
|
||||||
@@ -207,23 +209,30 @@ KEYMAP_SHIFT = {
|
|||||||
50: Key.UPPER_B,
|
50: Key.UPPER_B,
|
||||||
49: Key.UPPER_N,
|
49: Key.UPPER_N,
|
||||||
58: Key.UPPER_M,
|
58: Key.UPPER_M,
|
||||||
65: Key.COMMA, # TODO: ???
|
65: Key.COMMA, # TODO: Confirm this mapping
|
||||||
73: Key.CENTER_PERIOD, # TODO: ???
|
73: Key.CENTER_PERIOD, # TODO: Confirm this mapping
|
||||||
74: Key.QUESTION,
|
74: Key.QUESTION,
|
||||||
|
|
||||||
# Center
|
# Center
|
||||||
99: Key.ROLL_UP,
|
103: Key.DUP,
|
||||||
96: Key.ROLL_DOWN
|
110: Key.FIELD_MARK
|
||||||
}
|
}
|
||||||
|
|
||||||
KEYMAP_ALT = {
|
KEYMAP_ALT = {
|
||||||
**KEYMAP_DEFAULT,
|
**KEYMAP_DEFAULT,
|
||||||
|
|
||||||
# Control Keys
|
# Control Keys
|
||||||
6: Key.CLEAR,
|
5: Key.SYS_RQ,
|
||||||
|
12: Key.ERASE_INPUT,
|
||||||
|
131: Key.IDENT,
|
||||||
|
10: Key.TEST,
|
||||||
|
|
||||||
# Center
|
# 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)
|
KEYMAP = Keymap('3483', KEYMAP_DEFAULT, KEYMAP_SHIFT, KEYMAP_ALT, modifier_release=240)
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ from .keyboard import Key, get_ebcdic_character_for_key
|
|||||||
AID_KEY_MAP = {
|
AID_KEY_MAP = {
|
||||||
Key.CLEAR: AID.CLEAR,
|
Key.CLEAR: AID.CLEAR,
|
||||||
Key.ENTER: AID.ENTER,
|
Key.ENTER: AID.ENTER,
|
||||||
#Key.PA1: AID.PA1,
|
Key.PA1: AID.PA1,
|
||||||
#Key.PA2: AID.PA2,
|
Key.PA2: AID.PA2,
|
||||||
#Key.PA3: AID.PA3,
|
Key.PA3: AID.PA3,
|
||||||
Key.PF1: AID.PF1,
|
Key.PF1: AID.PF1,
|
||||||
Key.PF2: AID.PF2,
|
Key.PF2: AID.PF2,
|
||||||
Key.PF3: AID.PF3,
|
Key.PF3: AID.PF3,
|
||||||
@@ -111,7 +111,7 @@ class TN3270Session(Session):
|
|||||||
self.emulator.tab()
|
self.emulator.tab()
|
||||||
elif key == Key.BACKTAB:
|
elif key == Key.BACKTAB:
|
||||||
self.emulator.tab(direction=-1)
|
self.emulator.tab(direction=-1)
|
||||||
elif key in [Key.NEWLINE, Key.FIELD_EXIT]:
|
elif key == Key.NEWLINE:
|
||||||
self.emulator.newline()
|
self.emulator.newline()
|
||||||
elif key == Key.HOME:
|
elif key == Key.HOME:
|
||||||
self.emulator.home()
|
self.emulator.home()
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ VT100_KEY_MAP = {
|
|||||||
|
|
||||||
Key.NEWLINE: b'\r',
|
Key.NEWLINE: b'\r',
|
||||||
Key.ENTER: b'\r',
|
Key.ENTER: b'\r',
|
||||||
Key.FIELD_EXIT: b'\r',
|
|
||||||
|
|
||||||
Key.BACKSPACE: b'\b',
|
Key.BACKSPACE: b'\b',
|
||||||
Key.TAB: b'\t',
|
Key.TAB: b'\t',
|
||||||
|
|||||||
@@ -144,13 +144,6 @@ class SessionHandleKeyTestCase(unittest.TestCase):
|
|||||||
# Assert
|
# Assert
|
||||||
self.session.emulator.newline.assert_called()
|
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):
|
def test_home(self):
|
||||||
# Act
|
# Act
|
||||||
self.session.handle_key(Key.HOME, KeyboardModifiers.NONE, None)
|
self.session.handle_key(Key.HOME, KeyboardModifiers.NONE, None)
|
||||||
|
|||||||
Reference in New Issue
Block a user