Filed in: Resources.ProgrammingCodeSnippletsGet-pressed-keys · Modified on : Fri, 31 Jul 09
get the currently pressed keys (not tested it myself yet)
# from http://www.panda3d.org/phpbb2/viewtopic.php?t=4331
# by ynjh_jo
def getButton(key):
if len(key)==1:
kb=KeyboardButton.asciiKey(key)
else:
if hasattr(KeyboardButton,key): # keyboard button
kb=getattr(KeyboardButton,key)()
else: # mouse button
kb=getattr(MouseButton,key)()
return base.mouseWatcherNode.isButtonDown(kb)
# from http://www.panda3d.org/phpbb2/viewtopic.php?t=4331
# by ynjh_jo
from pandac.PandaModules import KeyboardButton, MouseButton
ALL_KEYS = [
'a','b','c','d','e','f','g','h','i','j','k','l','m','n',
'o','p','q','r','s','t','u','v','w','x','y','n','z',
'`','0','1','2','3','4','5','6','7','8','9','-','=',
'[',']','\\',';',"'",',','.','/',
'f1','f2','f3','f4','f5','f6','f7','f8','f9','f10','f11','f12',
'enter','escape','backspace','insert','home','tab','end','space',
'shift','lshift','rshift',
'control','lcontrol','rcontrol',
'alt','lalt','ralt',
'meta','_del','pause',
'^','?','<','>','$',
# '°','¨',
# 'caps_lock',
# 'arrow_left','arrow_up','arrow_down','arrow_right',
# 'page_down','page_up','num_lock','scroll_lock','delete',
# 'page_up',
# "print_screen","scroll_lock","page_down","page_up","num_lock",
]
def getButton(key):
if len(key)==1:
kb=KeyboardButton.asciiKey(key)
else:
if hasattr(KeyboardButton,key): # keyboard button
kb=getattr(KeyboardButton,key)()
else: # mouse button
kb=getattr(MouseButton,key)()
return base.mouseWatcherNode.isButtonDown(kb)
from direct.showbase.DirectObject import DirectObject
class EventList(DirectObject):
def __init__(self):
DirectObject.__init__(self)
taskMgr.add(self.readTask, 'readTask')
def readTask(self, task):
for eventName, eventParameters in messenger.findAll('').items():
print event, eventParameters
eventList = EventList()
messenger.toggleVerbose()
# sample usage
if __name__ == '__main__':
from direct.directbase import DirectStart
'''def run():
while True:
taskMgr.step()
for k in ALL_KEYS:
if getButton(k):
print k'''