I wrote a small application in AutoIt (don't know ahk) to try and help you out.
Basically what it does is send alt down and up as if the numpad dot key was the alt key but it also checks when you release numpad dot if it was held for less than 150 ms (basically a tap) it will send the numpad dot character.
Limitations are you can't hold the dot button to type many dots in a row, other than that it's pretty good.
It may have difficulty with extremely fast usage of alt as a modifier (if you can hit alt as a modifier and the key that you would like to apply it to then release them in under 150ms it will apply alt to the keypress but it will also send the . character)
Local $hDLL = DllOpen("user32.dll")
HotKeySet("{NUMPADDOT}", "captureDot")
;Capture NUMPADDOT so the character is only sent when we want it to be.
Func captureDot()
EndFunc
While 1
If _IsPressed("6E", $hDLL) Then
;ConsoleWrite("_IsPressed - Numpad Dot was pressed." & @CRLF) ;debug line
;Simulate ALT down immediately.
Send("{ALT down}")
$presstime = TimerInit()
; Wait until key is released.
While _IsPressed("6E", $hDLL)
Sleep(10)
WEnd
; After key is released check how long it was held, if under 150ms send NUMPADDOT.
Send("{ALT up}")
If TimerDiff($presstime) < 150 Then
HotKeySet("{NUMPADDOT}")
Send("{NUMPADDOT}")
HotKeySet("{NUMPADDOT}", "captureDot")
EndIf
;ConsoleWrite("_IsPressed - Numpad Dot was released. " & TimerDiff($presstime) & @CRLF) ;debug line
;ExitLoop
EndIf
WEnd
Let me know if you need help getting it going, I can also compile it down to an exe if needed.