Just mentioning this here in case someone may find it useful. I accidentally discovered that holding the Up and Right mouse keys and so on moves the pointer in the desired diagonal direction. So one can avoid mapping dedicated Key_mouseUpR etc if they aren’t used all that often.
@algernon and others: Is this due to n-key rollover so both events are registered and sent in a single report?
BTW for fun I tried holding down conflicting keys together but only one of them works and the pointer moves in that direction and doesn’t stay in the same place as I thought it might.
Does this mean that Kaleidoscope cancels out one of them or is it my OS?
No, NKRO is only used by the keyboard part, the mouse keys emulate a real mouse. The report sent there is
Δ(x,y) (that is, an
y coordinate delta). When you press
y delta changes in the report, when you press
mouseRight, then the
x coordinate does. And when both are pressed, both are present in the report.
…and this happens because of the same reason: mouse keys send a delta, so one key will cancel out the other. Typically, the one later in the keymap will win, and override the other.
We could detect conflicting key presses, and zero out that part of the delta then… that’s probably worth a GitHub issue!