This appears to because the [module will only be executed once][1]. Variables assigned directly inside the module will retain their initial value and won't be re-evaluated when accessed later. To re-evaluate a variable, define it inside a function and call the function from wherever you want to access the current value of the variable. For example, in the module you might create a function to return True if the <kbd>W</kbd> key is pressed: import bge def is_w_active(): return(bge.logic.KX_INPUT_ACTIVE == bge.logic.keyboard.events[bge.events.WKEY]) Then when this is called from a script (or anywhere else) like so: import bge, keyboardmodule print(keyboardmodule.is_w_active()) it will return True or False accordingly. [<img src="http://blend-exchange.giantcowfilms.com/embedImage.png?bid=420" />](http://blend-exchange.giantcowfilms.com/b/420/) [1]: http://blender.stackexchange.com/q/10769/599