Hi,
please let me mention one thing before we dive into the technical topic again. In general we discourage people from double posting into multiple forums. While we understand your desire to increase visibility and chances for input, please also see it from the opposite perspective. Chances increase drastically people are investing time even after the question has already been answered in another forum. Even more so, if there are no references to these other threads.
And to be honest, in your case I was even more surprised to see an identical thread being opened in C4DCafe after Maxime provided you with an answer here. Even if his first answer didn't lead to the result you might have expected, somebody started working on your thread and also clearly expressed the will to go further and deeper.
As I said, I hope you don't mind me addressing this.
Back to your actual request:
From your snippets it looks really as if you only want to do one CallCommand() per assigned key. As mentioned in C4DCafe, I'm wondering, why you are not using the Customize Commands dialog to directly assign those keys.
But lets assume, you want to do more complex things via the assigned keys. Actually a script in Script Manager is the wrong way to do it. The thing is, a script is a fire and forget thing, it gets called, executes and that's it. There's no instance in a script, that could be listening to key presses.
Technical background: Cinema 4D can be extended via multiple different types of plugins. One of these is a so called CommandData plugin, which is basically the way all those commands you see in Cinema 4D (in menus, on palette buttons or inside the Commander (Shift-C)) have been implemented. And scripts in Script Manager are actually a very simplified version of CommandData plugins, in a way that these are basically one command per script.
Now, implementing a CommandData plugin is not much more complicated than implementing a script. The script code basically ends up in the CommandData's Execute() function. I recommend to take a look at our examples (also included in the Python SDK documentation archive, you have probably already downloaded). See for example Py-TextureBaker or Py-MemoryViewer. Don't let yourself confuse by the amount of code of the latter, rather start reading bottom up (RegisterCommandPlugin and the implementation of just the class derived from CommandData). A minimum CommandData is just that, register and have this class derived from CommandData with an Execute() function containing roughly your script's code.
The thing is, opposite to a script and instead of implementing CommandData.Execute() you can also implement GetSubContainer() and ExecuteSubID(). By this you can have several commands in one single CommandData plugin, which can then be assigned with different keyboard shortcuts each, either in code or in Customize Commands manager..
I hope, this helps and can get you on the right track. If you have mire questions, don't hesitate to ask. On different topics please open a new thread per topic, though.
Cheers,
Andreas