So I'd strongly recommend making people choose positional xor keyword, and not allowing overlap. 

Yes that will cause some breakage because moving from one to the other is now breaking. But that's at least *obvious* breakage. The alternative is non-obvious breakage, which is worse.