Do you use the keyboard's mouse controls?

Right, my bad. I guess I meant that it can’t tell pressing one ShiftToLayer(FUNCTION) key from pressing two at once (again, iirc). But of course you could map the two Fn buttons on the Model01 to different keys (as alluded to in my overly-brief explanation above), and then the keyboard could totally tell them apart. Thanks for the clarification.

We used to have a bug where both fns were mapped to “Go to next layer”

Hitting both got you to the numpad.

I would have considered that a feature. Frees up one more much needed physical key.

1 Like

Yup. That was certainly discussed. But it was confusing and unintentional. That made it a bad default.

I’ll note that we don’t consider the num key touch typeable, so it makes sense as a toggle

Because it’s a little far away from both the ring and pinckie fingers?

… Well, if your language has more than 26 letters to the alphabet, you can’t get too picky about what you consider reachable and what not. At least as long as you keep to standard keyboard layouts (that really don’t make any sense in any language, I know). Guess I’ll have to have another go at Dvorak.

I’m pretty sure you could do that too, with a little coding. (Meaning, both function keys normally act like ShiftToLayer(FUNCTION), but when both pressed, it does ShiftToLayer(FOO) for some other FOO.)

If you’re comfortable with coding, here’s approximately how I’d do it. You’d start by making both Fn keys instances of a macro. When pressed, you check if the other one is currently pressed (maybe there’s a static flag in the macro function), and if it is, return MACRO(Tr(LockLayer(FOO))), but if it isn’t, return MACRO(Tr(LockLayer(FUNCTION))). Then on release, unlock the layers as appropriate.

1 Like

If you find it reachable, run with it. (FWIW, the four buttons we think are a little too far to touch type are Prog, LED, Any and Num.) You could certainly consider moving punctuation off the default layer.

As you (and everybody else) starts to figure out ‘good’ layouts on the Model 01 for various languages and use cases, we’re going to want to start showcasing them :slight_smile: That was something we decided was going to end up much better if it was figured out by native typists of the languages, rather than by the two of is.

4 Likes

I absolutely agree about having native speakers/keyboardists develop layers, and getting tables of keycodes onto the wiki for the extended character sets will help with that. :slight_smile:

1 Like

I found the mouse acceleration prohibitive - but I find that’s the case for nipple mice also. Any form of mouse that isn’t actually a mouse seems to break the intuitive hand-eye coordination part of my brain…

2 Likes

Here here.

I love touch pads because they feel like fingerpainting, but have never found trackballs, nipples, or any other alternative to mice works well for me.

1 Like

The mouse click alone has been kinda nice when I’m doing, say, typing on screen 1 and have to periodically click the same button on screen 2. The movement keys haven’t been as useful as I hoped.

that is something that could definitely use tuning. I spent a fair amount of time tuning it using floating point math before realizing that that would add to heavy a code size burden. @ToyKeeper Has improved it since my initial integer math PVT version, but I suspect we could do a lot better, especially if we borrowed from the original IBM trackpoint documentation. if I recall correctly, we want to use a tweaked cosine or arctangent wave to get a nice slow initial ramp, chunk of acceleration and then a reasonable top speed.

3 Likes

Maybe in the future, this could be added to the gui program. I think it would be good to allow users to shape this to their individual needs as well.

For inspiration: the Kensington Expert Mouse comes with a gui programm for Mac and Windows that allows users to manipulate the acceleration curve for the trackball according to their preference:

Haven’t used it in years, ever since I switched to Linux, where the defaults were fine for me.

1 Like

@squence That screenshot reminds me so much of Windows 95®

After one day I love the mouse keys, huge potential, but the learning curve with acceleration is demanding. I want to tweak!

This may be a n00b question, but how does one modify the settings? I’m very new to C. I was looking at the documentation but I’m not sure where to set the values. I tried MouseKeys.speed(5); in the firmware near where Numpad and StalkerEffect get their settings set, but no joy. I need a shove in the right direction!

The documentation could use some clarity (sorry about that!) and a better example. You set these properties in the setup() function of your sketch, usually somewhere after the Kaleidoscope.use(...) line. The MouseKey settings are properties, not functions (the docs aren’t clear on this at the moment), so the way to set them is like this:

void setup() {
  // ...
  MouseKeys.speed = 5;
  MouseKeys.speedDelay = 10;
}

Hope this helps!

5 Likes

2 posts were split to a new topic: Why use properties instead of setters/getters?

In the past when I’ve tried devices like that, I find the mouse acceleration seems to “kick in” at the worse moment… just as I’m approaching my target… and then I zoom past it.

To me, it’s more a case of the desired mouse speed where that intuitive break down happens. The speed should not be based on how long the pointer has been moving, but on how close I am to my target, the precision I need, or other intuitive factors.

When I get my Model 01, I’ll try the built in mouse stuff. (The quadrant “binary search” thing seem interesting.) But I’m also thinking of trying “manual” acceleration only. Basically 2 (or 3) speed modifier keys such that:

  • No Mods ➜ slow
  • Mod 1 ➜ medium
  • Mod 2 ➜ fast
  • Mod 3 (or maybe Mod 1 & 2 together) ➜ Turbo

I’m mot sure if that would work, or would be hard to get use to. But I figure it’s worth trying it out. At least for basic GUI stuff. I don’t think I could ever use a keyboard based mouse when working in a graphics app or such.

3 Likes

It’s doable, I had such a setup on my sketch for a while, and it worked reasonably well. I just couldn’t get used to using the speed modifiers, so I’m back to using a single speed + acceleration profile. I tend to use the mouse keys when I know I’ll be mousing only for a very short time, and reaching for my trackball would take more effort than using the keyboard. The warp/binary-search keys, now I use those a lot, often together with my trackball, to quickly move towards the destination, then refine with the trackball.

1 Like

I can’t really see an instance where I’ll be moving the cursor around with my keyboard, but I can see instances where I need to switch back and forth between keyboard and mouse in order to click a static target. In such a case, “clicking” from the keyboard would be a time saver.