nemomobile / fingerterm

12 stars 29 forks source link

Caps lock doesn't work with TOHKBD #54

Closed Nicd closed 9 years ago

Nicd commented 9 years ago

Turning on caps lock in TOHKBD doesn't affect FingerTerm. Normal shift works fine but caps lock just does nothing. Using latest 1.1.9 with TOHKBD package 0.5.4. No idea if this affects other external keyboards.

sam-hobbs commented 9 years ago

I also have this issue, same versions.

kimmoli commented 9 years ago

Looks like keyPress handler converts keys toLower or toUpper depending on Shift modifier state.

https://github.com/nemomobile/fingerterm/blob/master/terminal.cpp#L184

Shift is "not pressed" when capslock is active. (Or actually it is with TOHKBD2 on Sailfish 1.1.6.x, as there the Capslock was broken, and it was made in TOHKBD2 daemon by pressing Shift key)

Related findings from Internet:

Additionally the keys from layouts are decoded with uppercase letters

https://github.com/nemomobile/fingerterm/blob/master/data/finnish.layout#L45

Now "a" is mapped to 0x41 ("A"), should be 0x61

my test fix does not work due this and messes up fingerterm vkb usage. All layouts should be fixed to send lowercase letters by default.

https://github.com/kimmoli/fingerterm/commit/90800add18b8aa05c4d0217881e99fd21bcf8ce1

Needs more inspection, now TOHKBD2 keys are also uppercase, as Qt::Key_A is also 0x41

urjaman commented 9 years ago

I didnt read what you did but i got inspired by your comment when it was shorter and did this: https://github.com/urjaman/thumbterm/commit/0229a3330c572bf98d661c06d44ee67e379e2bf2

Also note the commit before that, it is related kinda...