Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feedback: I like it a lot! #3

Open
sotte opened this issue Aug 11, 2024 · 17 comments
Open

Feedback: I like it a lot! #3

sotte opened this issue Aug 11, 2024 · 17 comments

Comments

@sotte
Copy link

sotte commented Aug 11, 2024

Just want to give you some feedback. I tried out sm_td and I like it a lot so far.

I normally have home row mods in the bottom row, as I can't get used to the normal mod tab behavior. I also tried achordion by getreuer, which improved the situation a lot, but I still had many misfires. With sm_td it works really smoothly. The right pinky sometimes causes misfires. But I think I can improve this by configuring sm_td a bit.

Just a big thanks from me!

@stasmarkin
Copy link
Owner

@sotte Thanks a lot for your feedback :)
Actually, you're the first one who wrote back, so I'm very happy that sm_td clicked for you!
Please feel free to leave any suggestions or wishes, I'm still working on this library.

@sotte
Copy link
Author

sotte commented Aug 12, 2024

Will get back to you.
So far I mostly used sm_td to replace my home row. Right now I'm tweaking the timeouts for my pinkies.

I also noticed that some rolls while typing faster trigger the hold behavior. I also have to tweak the timeouts a bit.

One thing I'll definitely will implement is custom shift keys with mod tap behavior:
, for normal tap, ? for shift tap, and CTRL on hold.

@stasmarkin
Copy link
Owner

I also noticed that some rolls while typing faster trigger the hold behavior

Yep, that happened to me too... I'm working on this, I hope I'll fix that in next release

@stasmarkin
Copy link
Owner

@sotte , I've just release new version of the library. I fixed the bug with sticky hold behavior.
I'm still updating a wiki, but https://github.com/stasmarkin/sm_td/wiki/1.1:-Upgrade-instructions are already up to date

@sotte
Copy link
Author

sotte commented Aug 25, 2024

Nice @stasmarkin , I'll give it a try next weekend.

Quick update from my side:
I'm not yet using sm_td full time, as I still had some misfires (and I needed to get some work done). Maybe your fix helps here.

Also just FYI: I also played with a newer version of achordion. It has this "typing streak" feature which really improved the home row mod behavior.
https://getreuer.info/posts/keyboards/achordion/index.html#typing-streaks

@stasmarkin
Copy link
Owner

@sotte Can you contact me with email? I think I can help you.
I'm also curious how this library is being used in the real world (not just by me), so you'd be glad to dive into your problems.
My email on gmail.com and address before @ is the same as my username on github

@mikenrafter
Copy link

I am having a misfire almost every word. I type fast, but am definitely not going to compromise that for HRMs. My configuration is located here (additionally, see PR for macro enhancements). I followed the advice on the wiki for adjusting timeouts, but could not get something that works for me after a few hours of tweaking. In its current state, I have very exaggerated numbers for timeout values. Until this problem can be fixed, I am going to have to return to my bottom-row modifiers using standard tap-dance. A shame, since I like the flexibility this library lends.

@WizardStark
Copy link

Absolutely love this project. I avoided HRM's previously after trying them as I hated the feeling of always waiting for the TAPPING_TERM, and felt that I had very many misfires. After 3 (very long) days with sm_td I can safely say that it will be a mainstay in my configuration.

Incidentally I discovered qmk-vim on the same weekend, and the combination of the two libraries has proved to be the trickiest part as the custom keycodes required by sm_td currently break qmk-vim. But I saw #11 that a possible sm_td implementation without custom keycodes is in the works, which would be amazing.

@42Craft
Copy link

42Craft commented Oct 4, 2024

@stasmarkin

I am eager to try your solution, but I am not sure if the implementation is stable enough. Would you recommend version 0.4.1 or should I wait?

@azzamsa
Copy link

azzamsa commented Oct 5, 2024

The right pinky sometimes causes misfires. But I think I can improve this by configuring sm_td a bit.

@sotte I have a similar issue, what is your current workaround? I don't find any clue here https://github.com/sotte/sotte_qmk_keyboard_layout/blob/5941111b76f67cd54617bb37cc12f10eda2cfcfd/keyboards/crkbd/keymaps/sotte_exp_td/keymap.c#L139

@stasmarkin
Copy link
Owner

@42Craft I'm working on 0.5.0 as there are many internal changes introduced.
But it wouldn't change the user API much, so upgrading would be quite easy (compared to the initial installation).
I also publish https://github.com/stasmarkin/sm_td/wiki/1.1:-Upgrade-instructions for each release, so that would be an easy task.
Also, there won't be many new features introduced in 0.5.0, mostly it's about fixing bugs, handling 3-finger rolls and some minor features like memory optimization. So if 0.4.0 works for you, you can stay with it as long as you want.

@42Craft
Copy link

42Craft commented Oct 8, 2024

@42Craft I'm working on 0.5.0 as there are many internal changes introduced. But it wouldn't change the user API much, so upgrading would be quite easy (compared to the initial installation). I also publish https://github.com/stasmarkin/sm_td/wiki/1.1:-Upgrade-instructions for each release, so that would be an easy task. Also, there won't be many new features introduced in 0.5.0, mostly it's about fixing bugs, handling 3-finger rolls and some minor features like memory optimization. So if 0.4.0 works for you, you can stay with it as long as you want.

I tried it today. It works quite well! I am amazed. Awesome :D

I do get some false positives, mostly on combinations involving the same side of the keyboard. For example: ast, set, aar, ag, dat, kop. I think it might have to do with fast typing and rolling keys. Any recommendations? The documentation mentions:

if you notice, that in quick typing you sometimes get false hold interpretations, try to decrease SMTD_TIMEOUT_RELEASE.

What timeout would you recommend for SMTD_TIMEOUT_RELEASE?

A solution like Accordion would help but I guess this is not ideal.

@stasmarkin
Copy link
Owner

I call this "sticky pinkies" problem. The weaker is finger, the later we release a key with this finger. So I's harder to correctly interpret user's intention.
Check this thread #7 (comment) and #14 - I've described there how to tweak SMTD_TIMEOUT_RELEASE

@42Craft
Copy link

42Craft commented Oct 10, 2024

I call this "sticky pinkies" problem. The weaker is finger, the later we release a key with this finger. So I's harder to correctly interpret user's intention. Check this thread #7 (comment) and #14 - I've described there how to tweak SMTD_TIMEOUT_RELEASE

The situation improved by tweaking my timeout release settings. The only false positives I encounter now mostly seem to be related to the left section. For example, typing release is interpreted as:

  • rele
  • as - activates the Windows menu
  • e

However, when I type only as, the behavior is as expected. Another example is setup, which triggers on set. Only by rolling slower over these three letters does it work as expected. Also, markdown (ar) is a difficult one.

Is there anything you can recommend to further improve the settings? I feel like we are close to a working setup. I am excited about the functionality your library offers. It's really nice!

I am currently using the following settings:

uint32_t get_smtd_timeout(uint16_t keycode, smtd_timeout timeout) {
    if (keycode == CKC_A && timeout == SMTD_TIMEOUT_RELEASE) return 5;
    if (keycode == CKC_S && timeout == SMTD_TIMEOUT_RELEASE) return 5;
    if (keycode == CKC_D && timeout == SMTD_TIMEOUT_RELEASE) return 5;
    if (keycode == CKC_F && timeout == SMTD_TIMEOUT_RELEASE) return 15;
    if (keycode == CKC_J && timeout == SMTD_TIMEOUT_RELEASE) return 15;
    if (keycode == CKC_K && timeout == SMTD_TIMEOUT_RELEASE) return 30;
    if (keycode == CKC_L && timeout == SMTD_TIMEOUT_RELEASE) return 15;
    if (keycode == CKC_SCLN && timeout == SMTD_TIMEOUT_RELEASE) return 10;
    return get_smtd_timeout_default(timeout);
}

@stasmarkin
Copy link
Owner

I think in these cases you do a 3-finger roll. In other words, you press the 3rd key before you actually release the first one.
In 0.4.0 this is impossible to overcome, 3-finger rolls are always interpreted as hold-hold-tap.
I'm working on 0.5.0 with a refined architecture, and that version will fix this problem.

@Nineluj
Copy link

Nineluj commented Oct 15, 2024

Thanks for the work on the library, it's been my favorite so far for QMK 😄! I did notice the three finger rolling problem as well, mainly with words such as "question" or "bastion" ending in "ion" which results in the "i" not getting sent and sometimes an accidental trigger of GUI which I have configured on the hold for "i". I'm looking forward to the new version whenever that comes out!

@raghur
Copy link

raghur commented Dec 15, 2024

Hello @stasmarkin - just chiming in to say thanks a lot for this; I've tried hrm before and it was always a lot finicky with lag and timing issues. I haven't dug too deeply yet but the initial experience on integrating this is quite marked and definitely for the better. I still see some misfires when I'm on a fast typing streak (like when typing in this comment) - but I suppose I need to RTFM a bit more on the customization wiki pages.

Keep up the great work!

ps: there's a typo on the code sample in Getting started section that results in an empty fn & compilation error since subsequent switch is outside. not a biggie & most ppl will figure it out but good to fix.

void on_smtd_action(uint16_t keycode, smtd_action action, uint8_t tap_count) { }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants