As far as i know there is no way to trigger an action on a keypress in a normal window such as a channel (apart from the built in control, shift and function key support). There is an on keydown and on keyup which could do it but the events work only in custom windows.
What you may have to do is use an on input event. Script this event to check if $1 (first word) is a nickname in the channel the text is being input to (or matches query nick in query) and replace nick with nick:
something like... keep in mind this code is untested, and if i recall correctly you do not need to specify the output location with the /say command when used in an on input, but i could be wrong.
on *:INPUT:*: {
if ($chan) {
; in channel
if ($1 ison $chan) { say $1 $+ : $2- }
else {
; in query
if ($1 == $active) { say $1 $+ : $2- }
; in chat
elseif ($+(=,$1) == $active) { say $1 $+ : $2- }
}
}
This would not append the : when you press tab, but it would insert it when the line is input.