[GH-ISSUE #76] Capital letters do not work with Colemak keyboard layout #61

Closed
opened 2026-05-05 04:49:56 -06:00 by gitea-mirror · 9 comments
Owner

Originally created by @ncovercash on GitHub (Dec 2, 2016).
Original GitHub issue: https://github.com/keycastr/keycastr/issues/76

Lowercase works fine, however capital letters do not.

Originally created by @ncovercash on GitHub (Dec 2, 2016). Original GitHub issue: https://github.com/keycastr/keycastr/issues/76 Lowercase works fine, however capital letters do not.
Author
Owner

@amiel commented on GitHub (Mar 15, 2017):

I'm having this same issue with Dvorak.

<!-- gh-comment-id:286891952 --> @amiel commented on GitHub (Mar 15, 2017): I'm having this same issue with Dvorak.
Author
Owner

@ncovercash commented on GitHub (Mar 15, 2017):

It may be an issue with the dictionary in keycastr/KCKeystrokeTransformer.m, however I am not sure as I am not familiar with the language.

<!-- gh-comment-id:286892792 --> @ncovercash commented on GitHub (Mar 15, 2017): It may be an issue with the dictionary in keycastr/KCKeystrokeTransformer.m, however I am not sure as I am not familiar with the language.
Author
Owner

@ncovercash commented on GitHub (Mar 15, 2017):

I was correct . It is caused by a oversight in the above file . There is a dictionary which maps the physical key with the uppercase letter . You should be able to resolve your issue by replacing the letter on a QWERTY keyboard with that of Dvorak . You can change letters and symbols as well, just reference the comments which are currently there.

Here it is for Colemak, in case anyone else has this issue:

		d = [[NSDictionary alloc] initWithObjectsAndKeys:
			UTF8("\x21"), NSNum(18), // !
			UTF8("\x22"), NSNum(39), // "
			UTF8("\x23"), NSNum(20), // #
			UTF8("\x24"), NSNum(21), // $
			UTF8("\x25"), NSNum(23), // %
			UTF8("\x26"), NSNum(26), // &
			UTF8("\x28"), NSNum(25), // (
			UTF8("\x29"), NSNum(29), // )
			UTF8("\x2a"), NSNum(28), // *
			UTF8("\x2b"), NSNum(24), // +
			UTF8("\x3a"), NSNum(35), // :
			UTF8("\x3c"), NSNum(43), // <
			UTF8("\x3e"), NSNum(47), // >
			UTF8("\x3f"), NSNum(44), // ?
			UTF8("\x40"), NSNum(19), // @
			UTF8("\x5e"), NSNum(22), // ^
			UTF8("\x5f"), NSNum(27), // _
			UTF8("\x7b"), NSNum(33), // {
			UTF8("\x7c"), NSNum(42), // |
			UTF8("\x7d"), NSNum(30), // }
			UTF8("\x7E"), NSNum(50), // ~
			UTF8("\xe2\x87\xa4"), NSNum(48), // tab
			UTF8("A"), NSNum(0),
			UTF8("B"), NSNum(11),
			UTF8("C"), NSNum(8),
			UTF8("D"), NSNum(5),
			UTF8("E"), NSNum(40),
			UTF8("F"), NSNum(14),
			UTF8("G"), NSNum(17),
			UTF8("H"), NSNum(4),
			UTF8("I"), NSNum(37),
			UTF8("J"), NSNum(16),
			UTF8("K"), NSNum(45),
			UTF8("L"), NSNum(32),
			UTF8("M"), NSNum(46),
			UTF8("N"), NSNum(38),
			UTF8("O"), NSNum(41),
			UTF8("P"), NSNum(15),
			UTF8("Q"), NSNum(12),
			UTF8("R"), NSNum(1),
			UTF8("S"), NSNum(2),
			UTF8("T"), NSNum(3),
			UTF8("U"), NSNum(34),
			UTF8("V"), NSNum(9),
			UTF8("W"), NSNum(13),
			UTF8("X"), NSNum(7),
			UTF8("Y"), NSNum(31),
			UTF8("Z"), NSNum(6),
			nil];

IMO, someone who knows how should create an option to do this, or a custom "toUppercase" or similar function which converts letters and the needed symbols to the uppercase variant.

<!-- gh-comment-id:286906287 --> @ncovercash commented on GitHub (Mar 15, 2017): I was correct . It is caused by a oversight in the above file . There is a dictionary which maps the physical key with the uppercase letter . You should be able to resolve your issue by replacing the letter on a QWERTY keyboard with that of Dvorak . You can change letters and symbols as well, just reference the comments which are currently there. Here it is for Colemak, in case anyone else has this issue: ``` d = [[NSDictionary alloc] initWithObjectsAndKeys: UTF8("\x21"), NSNum(18), // ! UTF8("\x22"), NSNum(39), // " UTF8("\x23"), NSNum(20), // # UTF8("\x24"), NSNum(21), // $ UTF8("\x25"), NSNum(23), // % UTF8("\x26"), NSNum(26), // & UTF8("\x28"), NSNum(25), // ( UTF8("\x29"), NSNum(29), // ) UTF8("\x2a"), NSNum(28), // * UTF8("\x2b"), NSNum(24), // + UTF8("\x3a"), NSNum(35), // : UTF8("\x3c"), NSNum(43), // < UTF8("\x3e"), NSNum(47), // > UTF8("\x3f"), NSNum(44), // ? UTF8("\x40"), NSNum(19), // @ UTF8("\x5e"), NSNum(22), // ^ UTF8("\x5f"), NSNum(27), // _ UTF8("\x7b"), NSNum(33), // { UTF8("\x7c"), NSNum(42), // | UTF8("\x7d"), NSNum(30), // } UTF8("\x7E"), NSNum(50), // ~ UTF8("\xe2\x87\xa4"), NSNum(48), // tab UTF8("A"), NSNum(0), UTF8("B"), NSNum(11), UTF8("C"), NSNum(8), UTF8("D"), NSNum(5), UTF8("E"), NSNum(40), UTF8("F"), NSNum(14), UTF8("G"), NSNum(17), UTF8("H"), NSNum(4), UTF8("I"), NSNum(37), UTF8("J"), NSNum(16), UTF8("K"), NSNum(45), UTF8("L"), NSNum(32), UTF8("M"), NSNum(46), UTF8("N"), NSNum(38), UTF8("O"), NSNum(41), UTF8("P"), NSNum(15), UTF8("Q"), NSNum(12), UTF8("R"), NSNum(1), UTF8("S"), NSNum(2), UTF8("T"), NSNum(3), UTF8("U"), NSNum(34), UTF8("V"), NSNum(9), UTF8("W"), NSNum(13), UTF8("X"), NSNum(7), UTF8("Y"), NSNum(31), UTF8("Z"), NSNum(6), nil]; ``` IMO, someone who knows how should create an option to do this, or a custom "toUppercase" or similar function which converts letters and the needed symbols to the uppercase variant.
Author
Owner

@amiel commented on GitHub (Mar 15, 2017):

That's awesome, thanks!

<!-- gh-comment-id:286907535 --> @amiel commented on GitHub (Mar 15, 2017): That's awesome, thanks!
Author
Owner

@ncovercash commented on GitHub (Mar 15, 2017):

@amiel no problem . let me know if you need any assistance for dvorak, I know it changes a lot of symbols with letters.

<!-- gh-comment-id:286907796 --> @ncovercash commented on GitHub (Mar 15, 2017): @amiel no problem . let me know if you need any assistance for dvorak, I know it changes a lot of symbols with letters.
Author
Owner

@akitchen commented on GitHub (Jul 2, 2017):

This should be fixed in v0.9.4

<!-- gh-comment-id:312470057 --> @akitchen commented on GitHub (Jul 2, 2017): This should be fixed in v0.9.4
Author
Owner

@qguv commented on GitHub (Jul 3, 2017):

@akitchen Looks good for most of the letters! Unfortunately, under Colemak, the capital 'O' is showing up as its Qwerty equivalent, colon (shift-semicolon), and colon is showing up as semicolon.

demonstration of capital o and colon misfire

For testing (keys with asterisks misbehave):

Colemak + Shift Qwerty + Shift
o O* ; :
; :* p P

These are the only symbol-to-alpha or alpha-to-symbol mappings in Colemak. Thanks again for your hard work!

<!-- gh-comment-id:312702584 --> @qguv commented on GitHub (Jul 3, 2017): @akitchen Looks good for most of the letters! Unfortunately, under Colemak, the capital 'O' is showing up as its Qwerty equivalent, colon (shift-semicolon), and colon is showing up as semicolon. <img src="https://ptpb.pw/Jhcm.gif" alt="demonstration of capital o and colon misfire" /> For testing (keys with asterisks misbehave): | Colemak | + Shift | Qwerty | + Shift | | --- | --- | --- | --- | | `o` | `O`* | `;` | `:` | | `;` | `:`* | `p` | `P` | These are the only symbol-to-alpha or alpha-to-symbol mappings in Colemak. Thanks again for your hard work!
Author
Owner

@akitchen commented on GitHub (Jul 3, 2017):

Yes, edge cases like this will exist until we can completely eliminate the hard coded key mapping that the app is using. I hope to tackle this "soon" :) thanks for the feedback!

On Jul 3, 2017, at 10:45, Quint Guvernator notifications@github.com wrote:

@akitchen Looks good for most of the letters! Unfortunately, under Colemak, the capital 'O' is showing up as its Qwerty equivalent, colon (shift-semicolon), and colon is showing up as semicolon.

For testing (keys with asterisks misbehave):

Colemak + Shift Qwerty + Shift
o O* ; :
; :* p P

You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

<!-- gh-comment-id:312704735 --> @akitchen commented on GitHub (Jul 3, 2017): Yes, edge cases like this will exist until we can completely eliminate the hard coded key mapping that the app is using. I hope to tackle this "soon" :) thanks for the feedback! > On Jul 3, 2017, at 10:45, Quint Guvernator <notifications@github.com> wrote: > > @akitchen Looks good for most of the letters! Unfortunately, under Colemak, the capital 'O' is showing up as its Qwerty equivalent, colon (shift-semicolon), and colon is showing up as semicolon. > > > > For testing (keys with asterisks misbehave): > > Colemak + Shift Qwerty + Shift > o O* ; : > ; :* p P > — > You are receiving this because you were mentioned. > Reply to this email directly, view it on GitHub, or mute the thread. >
Author
Owner

@amiel commented on GitHub (Jul 3, 2017):

Thanks for the update. This is much better!!!

FWIW I'm seeing the same thing with symbols in dvorak.

<!-- gh-comment-id:312709638 --> @amiel commented on GitHub (Jul 3, 2017): Thanks for the update. This is much better!!! FWIW I'm seeing the same thing with symbols in dvorak.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: github-starred/keycastr#61
No description provided.