I do like Grench's ideas to make it easy to hit mouse buttons without clicking nubs. I don't know about the Pandora nubs, but clicking an Xbox analog stick always felt tricky to me. (Not that I've had much practice.)
There are certain situations where it would be nice to have Mouse3 (e.g. Blender), but I suppose even there you could (hopefully) map that to meta++ or something else handy.
We can have that, I already explained this earlier but I'll repeat it here (that will be easier than trying to find the old discussion).
L1, L2, R1 and R2 can be
both modifiers
and mouse clicks (say L1=left, R1=right, L2=middle, R2=Mouse4).
How?
The software has to be smart enough and use some context to determine intention. Basically it has to postpone producing a keydown event until the context disambiguates the intention.
This would be the way it would work. I'll give the example for L1 being Shift and left mouse click.
Scenario 1: simple click
Press L1 down -> nothing happens.
Release L1 -> a "left click" event happens (actually two: one button press event immediately followed by one button release)
Scenario 2: simple modifier
Press L1 down -> nothing happens.
Press any other key, e.g. the letter "a" -> first a "Shift keydown" event happens, immediately followed by an "letter a keydown" event. L1 is now in "Shift" mode.
[perhaps press more keys, Shift is still held down]
Release L1 -> a "Shift keyrelease" event happens.
Scenario 3: dragging
Press L1 down -> nothing happens.
Mouse nub gets touched to move mouse cursor -> first a "left mouse button down" event happens, immediately followed by a "mouse moved" event. L1 is now in "Left Mouse Button" mode.
Release L1 -> a "left mouse button release" event happens
There are only two things that are not possible with these mechanics:
- Software that uses modifier taps as actions (e.g. Ubuntu does something when you tap Left Alt) would not see the modifier tap if done with the shoulder modifier; they would see a mouse click instead
- Modified clicks or drags (Shift-click, Ctrl-click etc) are perhaps only possible if you use the keyboard modifier, not with the shoulder button modifier
That is a relatively small price to pay. And even that small price can be mostly avoided if we are fine with having only two mouse buttons on the shoulder buttons (instead of the theoretically possible four). Because then we can keep L1, R1 as dedicated modifier keys (Shift and Ctrl), just like on the Pandora, and only do the overloading trick with L2, R2. Since L2 is Meta, which is a Pyra-specific modifier, there is no software that relies on Meta-tapping or Meta+click. R2 is Right Alt, so we still lose shoulder-only Alt-clicks and Alt-taps. Actually Alt-clicks/drags could still be done (tapping/holding L1 while R2 is held could do that).
To avoid accidental clicks I would make it so that
- when the lid is closed (that is Right Super is held down), the shoulder buttons are not clicks (they could be media buttons if you like)
- if the time between pressing down and release (without any intermediate input events) is above some threshold, it does not produce a click. In those cases, it is more likely that you actually intended to use the shoulder button as a modifier key, but you changed your mind.
So I propose:
L2 = RMeta and LeftMouseClick
R2 = RAlt and RightMouseClick
The nub clicks are Mouse3 and Mouse4, and can be mapped to left/right/middle/whatever mouse buttons.