本文整理汇总了Python中Xlib.X.KeyRelease方法的典型用法代码示例。如果您正苦于以下问题:Python X.KeyRelease方法的具体用法?Python X.KeyRelease怎么用?Python X.KeyRelease使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Xlib.X
的用法示例。
在下文中一共展示了X.KeyRelease方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: paste_mode
# 需要导入模块: from Xlib import X [as 别名]
# 或者: from Xlib.X import KeyRelease [as 别名]
def paste_mode(type_, self, event, char):
print('paste mode')
if event.state & X.ControlMask:
# there are modifiers
# eg. X.ControlMask
# ~or X.ShiftMask~
return
if not char:
return
if event.type != X.KeyRelease:
return
if char == 'Escape':
if len(pressed) == 0:
return back_to_normal(self)
else:
pressed.clear()
else:
pressed.append(char)
return check(type_, self, ''.join(pressed))
示例2: listen
# 需要导入模块: from Xlib import X [as 别名]
# 或者: from Xlib.X import KeyRelease [as 别名]
def listen(self):
self.grab()
while True:
evt = self.disp.next_event()
if evt.type in [X.KeyPress, X.KeyRelease]:
keycode = evt.detail
keysym = self.disp.keycode_to_keysym(keycode, 0)
char = XK.keysym_to_string(keysym)
self.disp.allow_events(X.ReplayKeyboard, X.CurrentTime)
self.mode(self, evt, char)
if evt.type == X.DestroyNotify:
if evt.window.id == self.id:
self.ungrab()
return
示例3: normal_mode
# 需要导入模块: from Xlib import X [as 别名]
# 或者: from Xlib.X import KeyRelease [as 别名]
def normal_mode(self, event, char):
events.append(event)
if event.type == X.KeyPress and char:
pressed.add(event_to_string(self, event))
return
if event.type != X.KeyRelease:
return
handled = False
if len(pressed) > 1:
paste_style(self, pressed)
handled = True
elif len(pressed) == 1:
# Get the only element in pressed
ev = next(iter(pressed))
handled = handle_single_key(self, ev)
# replay events to Inkscape if we couldn't handle them
if not handled:
replay(self)
events.clear()
pressed.clear()
示例4: key_up
# 需要导入模块: from Xlib import X [as 别名]
# 或者: from Xlib.X import KeyRelease [as 别名]
def key_up(self, key):
"""Performs a keyboard key release (without the press down beforehand).
:param key: The key to be released up. The valid names are listed in Key Class
:return: None.
"""
if isinstance(key, Key) or isinstance(key, KeyModifier):
key = key.value.x11key
if self.keyboard_mapping(key) is None:
return
if isinstance(key, int):
key_code = key
else:
key_code = self.keyboard_mapping(key)
fake_input(self.display, X.KeyRelease, key_code)
self.display.sync()
示例5: makekeyhookevent
# 需要导入模块: from Xlib import X [as 别名]
# 或者: from Xlib.X import KeyRelease [as 别名]
def makekeyhookevent(self, keysym, event):
storewm = self.xwindowinfo()
if event.type == X.KeyPress:
MessageName = "key down"
elif event.type == X.KeyRelease:
MessageName = "key up"
return pyxhookkeyevent(
storewm["handle"],
storewm["name"],
storewm["class"],
self.lookup_keysym(keysym),
self.asciivalue(keysym),
False,
event.detail,
MessageName
)
示例6: __sendKeyReleaseEvent
# 需要导入模块: from Xlib import X [as 别名]
# 或者: from Xlib.X import KeyRelease [as 别名]
def __sendKeyReleaseEvent(self, keyCode, modifiers, theWindow=None):
if theWindow is None:
focus = self.localDisplay.get_input_focus().focus
else:
focus = theWindow
keyEvent = event.KeyRelease(
detail=keyCode,
time=X.CurrentTime,
root=self.rootWindow,
window=focus,
child=X.NONE,
root_x=1,
root_y=1,
event_x=1,
event_y=1,
state=modifiers,
same_screen=1
)
focus.send_event(keyEvent)
示例7: run
# 需要导入模块: from Xlib import X [as 别名]
# 或者: from Xlib.X import KeyRelease [as 别名]
def run(self):
# Create a recording context; we only want key and mouse events
self.ctx = self.recordDisplay.record_create_context(
0,
[record.AllClients],
[{
'core_requests': (0, 0),
'core_replies': (0, 0),
'ext_requests': (0, 0, 0, 0),
'ext_replies': (0, 0, 0, 0),
'delivered_events': (0, 0),
'device_events': (X.KeyPress, X.ButtonPress), #X.KeyRelease,
'errors': (0, 0),
'client_started': False,
'client_died': False,
}])
# Enable the context; this only returns after a call to record_disable_context,
# while calling the callback function in the meantime
logger.info("XRecord interface thread starting")
self.recordDisplay.record_enable_context(self.ctx, self.__processEvent)
# Finally free the context
self.recordDisplay.record_free_context(self.ctx)
self.recordDisplay.close()
示例8: __processEvent
# 需要导入模块: from Xlib import X [as 别名]
# 或者: from Xlib.X import KeyRelease [as 别名]
def __processEvent(self, reply):
if reply.category != record.FromServer:
return
if reply.client_swapped:
return
if not len(reply.data) or str_or_bytes_to_bytes(reply.data)[0] < 2:
# not an event
return
data = reply.data
while len(data):
event, data = rq.EventField(None).parse_binary_value(data, self.recordDisplay.display, None, None)
if event.type == X.KeyPress:
self.handle_keypress(event.detail)
elif event.type == X.KeyRelease:
self.handle_keyrelease(event.detail)
elif event.type == X.ButtonPress:
self.handle_mouseclick(event.detail, event.root_x, event.root_y)
示例9: handle_event
# 需要导入模块: from Xlib import X [as 别名]
# 或者: from Xlib.X import KeyRelease [as 别名]
def handle_event(self, event):
# KeyPress event
if event.type == X.KeyPress:
keyname = xrobot.get_keyname(event)
self.keyPressed.emit(keyname)
# KeyRelease event
elif event.type == X.KeyRelease:
keyname = xrobot.get_keyname(event)
self.keyReleased.emit(keyname)
# ButtonPress event
elif event.type == X.ButtonPress:
self.buttonPressed.emit(event.root_x, event.root_y, event.time)
# ButtonRelease event
elif event.type == X.ButtonRelease:
self.buttonReleased.emit(event.root_x, event.root_y, event.time)
# MotionNotify event
elif event.type == X.MotionNotify:
self.cursorPositionChanged.emit(event.root_x, event.root_y)
示例10: press
# 需要导入模块: from Xlib import X [as 别名]
# 或者: from Xlib.X import KeyRelease [as 别名]
def press(self, key, mask=X.NONE):
keycode = self.string_to_keycode(key)
self.inkscape.send_event(self.event(event.KeyPress, keycode, mask), propagate=True)
self.inkscape.send_event(self.event(event.KeyRelease, keycode, mask), propagate=True)
self.disp.flush()
self.disp.sync()
示例11: key_down
# 需要导入模块: from Xlib import X [as 别名]
# 或者: from Xlib.X import KeyRelease [as 别名]
def key_down(self, key):
"""Performs a keyboard key press without the release. This will put that key in a held down state.
:param key: The key to be pressed down. The valid names are listed in Key class
:return: None.
"""
if isinstance(key, Key) or isinstance(key, KeyModifier):
key = key.value.x11key
if self.keyboard_mapping(key) is None:
return
if isinstance(key, int):
fake_input(self.display, X.KeyPress, key)
self.display.sync()
return
needs_shift = is_shift_character(key)
if needs_shift:
fake_input(self.display, X.KeyPress, self.keyboard_mapping("shift"))
fake_input(self.display, X.KeyPress, self.keyboard_mapping(key))
if needs_shift:
fake_input(self.display, X.KeyRelease, self.keyboard_mapping("shift"))
self.display.sync()
示例12: processevents
# 需要导入模块: from Xlib import X [as 别名]
# 或者: from Xlib.X import KeyRelease [as 别名]
def processevents(self, reply):
if reply.category != record.FromServer:
return
if reply.client_swapped:
print ("* received swapped protocol data, cowardly ignored")
return
if not len(reply.data) or reply.data[0] < 2:
# not an event
return
data = reply.data
while len(data):
event, data = rq.EventField(None).parse_binary_value(data, self.record_dpy.display, None, None)
if event.type == X.KeyPress:
hookevent = self.keypressevent(event)
self.KeyDown(hookevent)
elif event.type == X.KeyRelease:
hookevent = self.keyreleaseevent(event)
self.KeyUp(hookevent)
elif event.type == X.ButtonPress:
hookevent = self.buttonpressevent(event)
self.MouseAllButtonsDown(hookevent)
elif event.type == X.ButtonRelease:
hookevent = self.buttonreleaseevent(event)
self.MouseAllButtonsUp(hookevent)
elif event.type == X.MotionNotify:
# use mouse moves to record mouse position, since press and release events
# do not give mouse position info (event.root_x and event.root_y have
# bogus info).
self.mousemoveevent(event)
#print "processing events...", event.type
示例13: makekeyhookevent
# 需要导入模块: from Xlib import X [as 别名]
# 或者: from Xlib.X import KeyRelease [as 别名]
def makekeyhookevent(self, keysym, event):
storewm = self.xwindowinfo()
if event.type == X.KeyPress:
MessageName = "key down"
elif event.type == X.KeyRelease:
MessageName = "key up"
return pyxhookkeyevent(storewm["handle"], storewm["name"], storewm["class"], self.lookup_keysym(keysym), self.asciivalue(keysym), False, event.detail, MessageName)
示例14: _keyDown
# 需要导入模块: from Xlib import X [as 别名]
# 或者: from Xlib.X import KeyRelease [as 别名]
def _keyDown(key):
"""Performs a keyboard key press without the release. This will put that
key in a held down state.
NOTE: For some reason, this does not seem to cause key repeats like would
happen if a keyboard key was held down on a text field.
Args:
key (str): The key to be pressed down. The valid names are listed in
pyautogui.KEY_NAMES.
Returns:
None
"""
if key not in keyboardMapping or keyboardMapping[key] is None:
return
if type(key) == int:
fake_input(_display, X.KeyPress, key)
_display.sync()
return
needsShift = pyautogui.isShiftCharacter(key)
if needsShift:
fake_input(_display, X.KeyPress, keyboardMapping['shift'])
fake_input(_display, X.KeyPress, keyboardMapping[key])
if needsShift:
fake_input(_display, X.KeyRelease, keyboardMapping['shift'])
_display.sync()
示例15: _keyUp
# 需要导入模块: from Xlib import X [as 别名]
# 或者: from Xlib.X import KeyRelease [as 别名]
def _keyUp(key):
"""Performs a keyboard key release (without the press down beforehand).
Args:
key (str): The key to be released up. The valid names are listed in
pyautogui.KEY_NAMES.
Returns:
None
"""
"""
Release a given character key. Also works with character keycodes as
integers, but not keysyms.
"""
if key not in keyboardMapping or keyboardMapping[key] is None:
return
if type(key) == int:
keycode = key
else:
keycode = keyboardMapping[key]
fake_input(_display, X.KeyRelease, keycode)
_display.sync()
# Taken from PyKeyboard's ctor function.