Using Different Mappings for Uppercase and Lowercase of the Same Key
Solution 1:
Based on my work on the question Replace [ with { and ] with } using AutoHotkey, I would use the following logic:
AppsKey & l::
if(GetKeyState("Shift"))
SendInput, b
else
SendInput, a
return