AFAIK there are two types of key codes that can be sent. Hardware keys and virtual keys. League does not respond well to virtual keys unless the chat window is active. This is purposefully done to prevent this kind of automation and botting. You can rebind any key in League to whatever you wish, just know that you cannot send keys INTO the client window because AHK only produces "virtual" key codes which are discarded for the most part by the client.
Note: I use a Belkin N52te gamepad, since it operates by loading a keymap into an onboard memory in the device these keys are seen as "hardware" and the macros created on the hardware side DO WORK. It is very difficult, at least for me, to generate a DirectInput keypress in AHK so far.
Also something to note is that this game uses DirextX and DirectInput, which poll on a set interval the entire state of the keyboard at once, then on next poll they are compared to see which keys were "pressed". This is an advantage over older methods due to the ability to detect multiple key presses at the same time. Given this information we can determine that keypresses that are initiated(keydown) and ended(keyup) between polls will also be "lost".
Note: On my belkin gamepad(N52TE, these things are sweet BTW) this behavior caused me to have to turn the polling rate of the device down so I wasn't "losing" keypresses.
BigKevin: The reason the F1-F10 keys work for you is because you are not trying to send keypresses into league, they are only being picked up by AHK. In this case you could literally choose any key on the keyboard you want.