Beware of an enum type that have the [Flags] attribute, values of the enum type can have multiple flags turned on. Certainly the case here, you'll also get the Locked flag turned on for modifier keys. Quirky since the Ctrl key isn't actually a locked key, it is still synthesized by Windows though.
For enum types that have [Flags] you need to isolate the flag you are interested in, like this:
if ((state & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down) {
console.Text += "^";
}
Which fixes your problem.