mirror of
https://github.com/lowobservable/oec.git
synced 2026-03-05 02:54:50 +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
|
||||
|
||||
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('.')
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user