Skip to content

Commit c8c20c0

Browse files
committed
qtvcp -fix xembed keyboard forwarding error
Seems to send press and release events now.
1 parent 16dd0cd commit c8c20c0

2 files changed

Lines changed: 15 additions & 34 deletions

File tree

lib/python/qtvcp/lib/xembed.py

Lines changed: 14 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ def reparent_qt_to_x11(window, parent):
5555

5656

5757
class XEmbedForwarding():
58+
# nothimg to ignore at this time (use qt.key definitions)
59+
ignore = []
5860

5961
def __init__(self, window, forward):
6062

@@ -68,47 +70,26 @@ def __init__(self, window, forward):
6870
d = display.Display()
6971
self.fw = drawable.Window(d.display, forward, 0)
7072

71-
self.forward = forward
7273
self.window = window
73-
self.d = d
7474
window.keyPressTrap = self.catch_keypress
7575
window.keyReleaseTrap = self.catch_keyrelease
7676

7777
def catch_keypress(self, e):
78-
print(e.nativeScanCode())
79-
print(e.nativeVirtualKey())
80-
print(e.text())
81-
self.forward(e, e.nativeScanCode())
78+
#print(e.key())
79+
self.forward(e, e.nativeScanCode(),True)
8280

8381
def catch_keyrelease(self, e):
84-
return
85-
86-
# ks = gtk.keysyms
87-
# ignore = [ ks.Tab, ks.Page_Up, ks.Page_Down
88-
# , ks.KP_Page_Up, ks.KP_Page_Down
89-
# , ks.Left, ks.Right, ks.Up, ks.Down
90-
# , ks.KP_Left, ks.KP_Right, ks.KP_Up, ks.KP_Down
91-
# , ks.bracketleft, ks.bracketright
92-
# ]
93-
94-
def gtk2xlib(e, fw, g, type=None):
95-
if type is None: type = e.type
96-
if type == gdk.KEY_PRESS:
82+
self.forward(e, e.nativeScanCode(),False)
83+
84+
def build_event(self, e, keycode, g, type=None):
85+
if type:
9786
klass = event.KeyPress
98-
elif type == gdk.KEY_RELEASE:
87+
elif type == False:
9988
klass = event.KeyRelease
10089
else:
10190
return
102-
kw = dict(window=fw, detail=e.hardware_keycode,
103-
state=e.state & 0xff,
104-
child=X.NONE, root=g._data['root'],
105-
root_x=g._data['x'], root_y=g._data['y'],
106-
event_x=0, event_y=0, same_screen=1)
107-
return klass(time=e.time, **kw)
108-
109-
def build_event(self, e, keycode, g):
110-
klass = event.KeyPress
11191
time_lie = 264209133 # can't get XWIN event time from qtvcp events
92+
11293
kw = dict(window=self.fw, # window id to forward to
11394
detail=keycode, # keysys code
11495
state=0, # shift/cntrl/ etc modifier state anded together
@@ -120,12 +101,12 @@ def build_event(self, e, keycode, g):
120101
same_screen=1) # not from our screen
121102
return klass(time=time_lie, **kw)
122103

123-
def forward(self, e, keycode):
124-
# if e.keyval in ignore:
125-
# return
104+
def forward(self, e, keycode,type):
105+
if e in self.ignore:
106+
return
126107

127108
g = self.fw.get_geometry()
128-
fe = self.build_event(e, keycode, g)
109+
fe = self.build_event(e, keycode, g,type)
129110
if not fe: return
130111

131112
self.fw.send_event(fe)

lib/python/qtvcp/qt_makegui.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ def getRegisteredHalWidgetList(self):
109109
def keyPressEvent(self, e):
110110
self.keyPressTrap(e)
111111

112-
def keyreleaseEvent(self, e):
112+
def keyReleaseEvent(self, e):
113113
self.keyReleaseTrap(e)
114114

115115
# These can get class patched by xembed library to catch events

0 commit comments

Comments
 (0)