While $rawinput isn't a terrible idea (and at best, isn't a great work around), there are better workarounds available. Such as Saturn's "spaces.dll". This .dll is pretty nice, as it offers an easy way to echo messages, and send messages, with all spaces intact without the use of $chr(160) or use of double control codes between spaces.

Code:
on *:input:#:{
  if (/* iswm $1 && !$inpaste && !$ctrlenter) { return }

  var %input = $dll(spaces.dll, input, )
  var %me = $+(04<,$me,04>)
  noop $dll(spaces.dll, echo, -atci3 own %me %input)
  noop $dll(spaces.dll, send, PRIVMSG # : $+ %input)
  haltdef
}

on ^$*:text:/^(.*)$/:#:{
  var %n = $+(04<,$nick,04>)
  noop $dll(spaces.dll, echo, -mbfltci3 normal # %n $regml(1))
  haltdef
}



That's an example of how spaces.dll works. smile