【模式编辑】分享解决自己手疼的终级方案,求建议

和chord key没有冲突,chord key我也用的。

是变量的时间不对,你按下之后,有个延迟之后才会开始重复,好比说是200ms。 那么 shiftless-delay 就要大于 0.2(秒为单位)。不然的话,第一下按键就会被判定是一个独立的按键了。 我的延迟是180ms, 我的shiftless-delay设置是0.2.严格讲有个10ms以上的富裕才行。

原来是这样,以前还真没注意过这个问题。

我看你 interval 设置的是 45,不会觉得太高了吗 :joy: ,尤其是按 backspace 的时候。然后 delay 180 我貌似也适应不了,打字的时候偶尔会连按(人老了?)。

我现在设置的是 xset r rate 230 15 ,然后 shiftless 的 delay 和 interval 分别是 0.35 和 0.03,结果是连按也全是小写,请问有关 interval 有什么讲究吗?

不好意思,我一直错误理解了xset r rate 的rate那个值,如果你是15的话,应该是1秒15次,也就是每次间隔66ms的样子。

(setq shiftless-delay 0.24
      shiftless-interval 0.07)

所以这样,给0.07是70ms>66ms就可以。

我觉得重复快一点才好用啊,15是不是太低了。

我也要更新一下文档。

按照你这么设置,我这边还是不行,不过我后来发现,这跟键盘是有关系的 :joy: 。我现在全部调成了你给的默认设置,发现大部分键(红轴)没有问题,但因为我小拇指比较疼,所以小拇指键位区,如 a ; (qwerty键位)用的是弹力系数更小的弹簧(好像叫粉红轴),就会出现 aaA 这种情况,然后我又想到我经常还要在外面用笔记本键盘,不知道能不能找到一个合适的数值 :rofl:

题外话:你 interval 设置成45,用方向键定位,或用退格键删除比如七八个字母的时候,可以顺利完成吗,反正我是不行(反应太慢吧大概 :joy:

可以直接删一个词,一个symbol等等,我在移动光标的时候按住的情况比较多。 定位的时候我可以长按到位,没有什么问题。看别人直播的视频,我感觉很多大神这个值在60以上的样子?

shiftless的主要的规则非常简单,就是连续输入三个字符,第二个距离第一个时间上小于 delay,第三个距离第二个小于 interval 就会把前面的三个字符换成一个大写的。

如果delayinterval够大一定可以,但是那样的话,就很容易误按出来。

我是考虑重复的速度(也就是那个interval)要快于连续两次用手按的速度,这样平时就怎么都不会误按。

因为是时间上判断的,你是不是有些键是 延时生效,延的比较多?

总之不知道是什么原因,我的delay 和 interval 都要设置的大很多才行: delay 230 -> 0.45 interval 30 -> 0.06 不过现在看来也没有误触,所以应该还好。

另外我不知道你是写错了还是有意这么修改的,qwerty 的 upper rules 和实际 layout 不太一样(170行 — 190行)。

另外如果我想让长按大写字母出现其他符号的话,比如 X -> \ ,是不是必须要全改成 ascii 码才行?

如果你发现不一致的话,应该是我写错了,我自己不是用qwerty的。。

写ascii和写?a这样是一样的,都表示char。

'((?X . "\\"))

大概应该是这样,如果不灵的话,应该是我哪里写错了。

其实那个就是一个mapping而已,如果里面可以找到,就会换对应的,找不到就用emacs的upcase来大写。 那个layout可以自己提供。我查一下我写的qwerty哪里错了

1 个赞

想起来,节约按键/不用shift还有一个next generation的方案:用tree-sitter拿到当前上下文,然后我输入个;(实际想的可能是;也可能是:),猜我这个是哪种;

  • key: value,的,就自动插入这个冒号、空格、逗号
  • var: Type的,就自动插入个冒号、空格
  • 是想在statement末尾加个;,那就插入一个;

之前用过自动猜要不要在输入的:/,/;后面加一个空格的electric-operator-mode,发现还是有不少地方猜不准,就又关了。

我有这样的一个功能,比如rust里面处理分号,规则不是这么简单,要复杂一些。实际用起来效果很好,不然和话rust里面的冒号实在太多了。