I mainly use Colemak layout, and here's the problem with the software.
Suppose I bind an 'S' to a key (which in a usual US layout would be 'D' on a keyboard). If, being in a Colemak layout, I press this 'S'-bound key, the keycode sent is the one of the key in Colemak if it was pressed on a US keyboard.
So for example I've bound the first letters of the middle row to Colemak values. Mechanically/topographically ASDF in US layout equals ARST in Colemak. So on this bound row:
- pressing A produces keycode 62 for A - because A is the same in both layouts
- pressing R produces keycode 80 for P - because R in US layout occupies the same key as P in Colemak
- pressing S produces keycode 82 for R - because S in US layout occupies the same key as R in Colemak
- pressing T produces keycode 71 for G - because T in US layout occupies the same key as G in Colemak
This issue can be mitigated by switching to the US layout. But it is confusing as hell and would be unmanagable if there was no US layout installed in the system.
Can this be fixed? I'm not sure how, but I think it is kind of wrong: you bind key in Colemak, and it binds correctly, but when pressed, produces incorrect keycode. Sorry if my terminology is wrong, I'm not awfully familiar with internal workings of layouts and keyboards.
Suppose I bind an 'S' to a key (which in a usual US layout would be 'D' on a keyboard). If, being in a Colemak layout, I press this 'S'-bound key, the keycode sent is the one of the key in Colemak if it was pressed on a US keyboard.
So for example I've bound the first letters of the middle row to Colemak values. Mechanically/topographically ASDF in US layout equals ARST in Colemak. So on this bound row:
- pressing A produces keycode 62 for A - because A is the same in both layouts
- pressing R produces keycode 80 for P - because R in US layout occupies the same key as P in Colemak
- pressing S produces keycode 82 for R - because S in US layout occupies the same key as R in Colemak
- pressing T produces keycode 71 for G - because T in US layout occupies the same key as G in Colemak
This issue can be mitigated by switching to the US layout. But it is confusing as hell and would be unmanagable if there was no US layout installed in the system.
Can this be fixed? I'm not sure how, but I think it is kind of wrong: you bind key in Colemak, and it binds correctly, but when pressed, produces incorrect keycode. Sorry if my terminology is wrong, I'm not awfully familiar with internal workings of layouts and keyboards.