stasmarkin / sm_td

SM Tap Dance user library for QMK
GNU General Public License v3.0
161 stars 6 forks source link

Feedback: I like it a lot! #3

Open sotte opened 3 months ago

sotte commented 3 months ago

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 commented 3 months ago

@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 commented 3 months ago

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 commented 3 months ago

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 commented 2 months ago

@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 commented 2 months ago

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 commented 2 months ago

@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 commented 2 months ago

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 commented 2 months ago

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 commented 1 month ago

@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 commented 1 month ago

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 commented 1 month ago

@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 commented 1 month ago

@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 commented 1 month ago

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 https://github.com/stasmarkin/sm_td/issues/7#issuecomment-2322965869 and https://github.com/stasmarkin/sm_td/issues/14 - I've described there how to tweak SMTD_TIMEOUT_RELEASE

42Craft commented 1 month ago

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:

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 commented 1 month ago

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 commented 1 month ago

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!