Skip to content

Commit 55902e1

Browse files
clean up unix event queue
1 parent a38ab45 commit 55902e1

File tree

1 file changed

+23
-21
lines changed

1 file changed

+23
-21
lines changed

pyrepl/unix_eventqueue.py

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
# Bah, this would be easier to test if curses/terminfo didn't have so
2222
# much non-introspectable global state.
2323

24+
from collections import deque
25+
2426
from pyrepl import keymap
2527
from pyrepl.console import Event
2628
from pyrepl import curses
@@ -34,23 +36,23 @@
3436

3537

3638
_keynames = {
37-
"delete" : "kdch1",
38-
"down" : "kcud1",
39-
"end" : "kend",
40-
"enter" : "kent",
41-
"f1" : "kf1", "f2" : "kf2", "f3" : "kf3", "f4" : "kf4",
42-
"f5" : "kf5", "f6" : "kf6", "f7" : "kf7", "f8" : "kf8",
43-
"f9" : "kf9", "f10" : "kf10", "f11" : "kf11", "f12" : "kf12",
44-
"f13" : "kf13", "f14" : "kf14", "f15" : "kf15", "f16" : "kf16",
45-
"f17" : "kf17", "f18" : "kf18", "f19" : "kf19", "f20" : "kf20",
46-
"home" : "khome",
47-
"insert" : "kich1",
48-
"left" : "kcub1",
49-
"page down" : "knp",
50-
"page up" : "kpp",
51-
"right" : "kcuf1",
52-
"up" : "kcuu1",
53-
}
39+
"delete": "kdch1",
40+
"down": "kcud1",
41+
"end": "kend",
42+
"enter": "kent",
43+
"home": "khome",
44+
"insert": "kich1",
45+
"left": "kcub1",
46+
"page down": "knp",
47+
"page up": "kpp",
48+
"right": "kcuf1",
49+
"up": "kcuu1",
50+
}
51+
52+
53+
#function keys x in 1-20 -> fX: kfX
54+
_keynames.update(('f%d' % i, 'kf%d' % i) for i in range(1, 21))
55+
5456

5557
def general_keycodes():
5658
keycodes = {}
@@ -62,7 +64,6 @@ def general_keycodes():
6264
return keycodes
6365

6466

65-
6667
def EventQueue(fd, encoding):
6768
keycodes = general_keycodes()
6869
if os.isatty(fd):
@@ -72,16 +73,17 @@ def EventQueue(fd, encoding):
7273
trace('keymap {k!r}', k=k)
7374
return EncodedQueue(k, encoding)
7475

76+
7577
class EncodedQueue(object):
7678
def __init__(self, keymap, encoding):
7779
self.k = self.ck = keymap
78-
self.events = []
80+
self.events = deque()
7981
self.buf = bytearray()
80-
self.encoding=encoding
82+
self.encoding = encoding
8183

8284
def get(self):
8385
if self.events:
84-
return self.events.pop(0)
86+
return self.events.popleft()
8587
else:
8688
return None
8789

0 commit comments

Comments
 (0)