aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/_pyrepl/windows_eventqueue.py
blob: d99722f9a16a93a1d1058fc5103d30d6428bc416 (plain) (blame)
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
"""
Windows event and VT sequence scanner
"""

from .base_eventqueue import BaseEventQueue


# Reference: https://learn.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences#input-sequences
VT_MAP: dict[bytes, str] = {
    b'\x1b[A': 'up',
    b'\x1b[B': 'down',
    b'\x1b[C': 'right',
    b'\x1b[D': 'left',
    b'\x1b[1;5D': 'ctrl left',
    b'\x1b[1;5C': 'ctrl right',

    b'\x1b[H': 'home',
    b'\x1b[F': 'end',

    b'\x7f': 'backspace',
    b'\x1b[2~': 'insert',
    b'\x1b[3~': 'delete',
    b'\x1b[5~': 'page up',
    b'\x1b[6~': 'page down',

    b'\x1bOP':   'f1',
    b'\x1bOQ':   'f2',
    b'\x1bOR':   'f3',
    b'\x1bOS':   'f4',
    b'\x1b[15~': 'f5',
    b'\x1b[17~': 'f6',
    b'\x1b[18~': 'f7',
    b'\x1b[19~': 'f8',
    b'\x1b[20~': 'f9',
    b'\x1b[21~': 'f10',
    b'\x1b[23~': 'f11',
    b'\x1b[24~': 'f12',
}

class EventQueue(BaseEventQueue):
    def __init__(self, encoding: str) -> None:
        BaseEventQueue.__init__(self, encoding, VT_MAP)