Welcome!
This is the community forum for my apps Pythonista and Editorial.
For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.
Check multi-keys press
-
Hi, i tried to use objc
UIViewController
to get key press with text field, but the problem is, if i press left arrow key first, and then press right arrow key, the right arrow key’sCustomViewController_pressesBegan_withEvent_
will not triggered, pls help? -
-
i tried it before, but thank for your help :D it does the same result
-
@yaley said
if i press left arrow key first, and then press right arrow key
I guess you did not release the first press. Then perhaps you could intercept pressesChanged(_:with:)
-
@yaley ok. How about using
pygame
module? It might work :import pygame screen = pygame.display.set_mode((0,0,320,320)) while True: for event in pygame.event.get(): if event.type == pygame.KEYDOWN or event.type == pygame.KEYUP: if event.mod == pygame.KMOD_NONE: print('No modifier keys were in a pressed state when this ' 'event occurred.') else: if event.mod & pygame.KMOD_LSHIFT: print('Left shift was in a pressed state when this event ' 'occurred.') if event.mod & pygame.KMOD_RSHIFT: print('Right shift was in a pressed state when this event ' 'occurred.') if event.mod & pygame.KMOD_SHIFT: print('Left shift or right shift or both were in a ' 'pressed state when this event occurred.')
-
-
@cvp my code is still not working
def CustomViewController_pressesBegan_withEvent_(_self, _cmd, _presses, event): global activeKeys presses = ObjCInstance(_presses).allObjects() keyCode = presses[0].key().keyCode() activeKeys[keyCode] = True def CustomViewController_pressesEnded_withEvent_(_self, _cmd, _presses, event): global activeKeys presses = ObjCInstance(_presses).allObjects() keyCode = presses[0].key().keyCode() activeKeys[keyCode] = False def CustomViewController_pressesChanged_withEvent_(_self, _cmd, _presses, event): global activeKeys presses = ObjCInstance(_presses).allObjects() keyCode = presses[0].keyCode() activeKeys[keyCode] = False
-
@yaley why do you set your activeKeys as False in changed?
-
-
@DOGGY It’s ok :)
-
@cvp oops that’s my wrong, but after changing it to
True
, it’s still not working, everything turns True, let me see the documentation carefully again.After the key changed, the activeKey turns True, but then it will forever True, until next keyup
-
@yaley don't forget that presses is a kind of array with eventually multiple keys thus perhaps not only check [0]
-
@YaleY that would be a hard one…..
-
@cvp so what should i do now???? Can you show me the code with successful running?
-
@yaley said
Can you show me the code with successful running?
Ho no, you are further than me. I only try to think about it.
When you press the right arrow, your first key is still pressed? -
@cvp yes, but the problem is when the second press joined
CustomViewController_pressesChanged_withEvent_()
didnt run about it -
@cvp You’re method is correct, just i am stupid, i typed wrongly, i set the variable to True in the
pressesEnded
defXD
-
@yaley right, just tested
-
Wait no, why??? Why my first test is correct and then the second test is not working?????
-
@yaley for me, changed not called
If you change something in a created class, restart Pythonista