Upper left shoulder button as "Fn" key does not work


nubok

Still Fresh
Joined
Apr 30, 2016
Messages
7
Age
38
According to the documentation included with the Pyra, the upper left shoulder button is an alias for "Fn".

Unluckily, this does not work on my Pyra (the lower left should button as an alias for Shift does work, though).

To decide whether the functionality of this button is perhaps "broken" (i.e. my Pyra has a hardware issue), I ran xev. Result: No event was registered when I pressed the upper left shoulder button. But on the other hand also no event was registered when I simply pressed the (working) "Fn" key on the keyboard of my Pyra.

So two questions:
  1. Is the fact that the upper left shoulder button does not work as alias for the "Fn" a well-known bug in the software?
  2. How can I test whether the upper left shoulder button of my Pyra does work (in the "hardware issue" sense)?
 
IIRC wireshark has a plugin to sniff USB packets - or it was a wireshark inspired tool for USB.
I may be wrong, but I always thought hosts never know about Fn-keys. That while depressing Fn you reach a different set of keas on the board, that aren't physically there. ?
Does it enable you to get to the Fn layer of the other keys?
 
@nubok Maybe you are not running the latest software. Did you do an apt-get update && apt-get upgrade? (might want to reboot after that). Then try again. For xev, each key is different, as you should be able to remap every key, they should be visible.
 
Hm, hardware-wise it should be fine, as I'm doing a full input test for each Pyra. Unless I missed that one, it should work.

Fn is a special key though - it doesn't trigger events alone, not even on a laptop. It changes the keycode of other keys, so you need to press it together with a key that has a different function with Fn and see the result.
 
Did you do an apt-get update && apt-get upgrade? (might want to reboot after that).

Yes

For xev, each key is different, as you should be able to remap every key, they should be visible.
Now, what happens if you press a, and then fn+a, does xev register the same key press? (keep pressed to be able to read the keydown event)

I did two experiments:

Experiment 1:
  1. Press A
  2. Press upper left shoulder button
  3. Press upper left shoulder button + A
Result:

KeyPress event, serial 38, synthetic NO, window 0x2600001, root 0x3af, subw 0x0, time 124717, (171,-13), root:(177,23), state 0x0, keycode 38 (keysym 0x61, a), same_screen YES, XLookupString gives 1 bytes: (61) "a" XmbLookupString gives 1 bytes: (61) "a" XFilterEvent returns: False KeyRelease event, serial 38, synthetic NO, window 0x2600001, root 0x3af, subw 0x0, time 124896, (171,-13), root:(177,23), state 0x0, keycode 38 (keysym 0x61, a), same_screen YES, XLookupString gives 1 bytes: (61) "a" XFilterEvent returns: False KeyPress event, serial 38, synthetic NO, window 0x2600001, root 0x3af, subw 0x0, time 131815, (171,-13), root:(177,23), state 0x0, keycode 38 (keysym 0x61, a), same_screen YES, XLookupString gives 1 bytes: (61) "a" XmbLookupString gives 1 bytes: (61) "a" XFilterEvent returns: False KeyRelease event, serial 38, synthetic NO, window 0x2600001, root 0x3af, subw 0x0, time 132047, (171,-13), root:(177,23), state 0x0, keycode 38 (keysym 0x61, a), same_screen YES, XLookupString gives 1 bytes: (61) "a" XFilterEvent returns: False

Experiment 2:
  1. Press A
  2. Press Fn (on the keyboard)
  3. Press Fn + A
Result:

KeyPress event, serial 38, synthetic NO, window 0x2800001, root 0x3af, subw 0x0, time 403326, (174,-19), root:(186,53), state 0x0, keycode 38 (keysym 0x61, a), same_screen YES, XLookupString gives 1 bytes: (61) "a" XmbLookupString gives 1 bytes: (61) "a" XFilterEvent returns: False KeyRelease event, serial 38, synthetic NO, window 0x2800001, root 0x3af, subw 0x0, time 403504, (174,-19), root:(186,53), state 0x0, keycode 38 (keysym 0x61, a), same_screen YES, XLookupString gives 1 bytes: (61) "a" XFilterEvent returns: False KeyPress event, serial 38, synthetic NO, window 0x2800001, root 0x3af, subw 0x0, time 407911, (174,-19), root:(186,53), state 0x0, keycode 222 (keysym 0x3f, question), same_screen YES, XLookupString gives 1 bytes: (3f) "?" XmbLookupString gives 1 bytes: (3f) "?" XFilterEvent returns: False KeyRelease event, serial 38, synthetic NO, window 0x2800001, root 0x3af, subw 0x0, time 408090, (174,-19), root:(186,53), state 0x0, keycode 222 (keysym 0x3f, question), same_screen YES, XLookupString gives 1 bytes: (3f) "?" XFilterEvent returns: False

As you can see, in none of the two experiments the press of "upper left shoulder button" or Fn, respectively, causes an KeyPress/KeyRelease event. But if I use Fn (but not for "upper left shoulder button"), the KeyPress/KeyRelease event of pressing 'A' is '?' instead of 'a'.
 
  • Wow
Reactions: rSl
Hm, that's something we probably should check here then.
Either the CPU-Board or the mainboard seems to be bad :(
 
Is this not working as intended? FN is not a real key, it's a pure modifier key that does not generate key events unless chorded with a valid key. And the code for fn+A on the keyboard is the question mark symbol (unicode 0x3f), so according to your logs both the keyboard FN and the shoulder button give that when chorded with the A key.
 
@EvilDragon
How shall we proceed?

The reason why I waited with a reply was that I originally planned to have a look by myself - unluckily, it turned out that the handle of my fitting screwdriver was too short for the screwholes of the Pyra.
 
Last edited:
it's probably configurable. key mode makes it a modifier, gamepad mode a button
 
Seems I have a lot to learn about funkeymonkey. But I need to order my Pyra first and then receive it before I can use it in anger and ask questions after that.
 
  • Haha
Reactions: rSl
Hm, there's one thing I noticed...
To flash and test a unit, I boot the Pyra from an SD Card and boot into the desktop.
From there, I use Start, CTRL, top-Left shoulder button + the 1 key (basically CTRL + ALT + F1) to switch to the terminal.

So... the button must've worked back then. This is weird.

Does that combination work for you?
Please contact me so I can handle the return shipment.
 
I guess ED means switching to a different tty, since that's what ctrl+alt+F key normally does in debian. I don't have the binding for shift+windows opening a terminal on my system, but I guess that's an instance of xterm or something similar.
 
Last edited:
Back
Top