Hatena::ブログ(Diary)

みことメモ

2017-03-13 ErgodoxでMomentキーを使っていて困った話

Ergodoxを使っていて悩まされていたことが解決したのでメモ.
ErgodoxのMomentキー(以後Moキー),便利ですよね.
Moキーを押している間だけ別のレイヤーにすることができるので,普段私は記号や矢印キーのレイヤーと文字入力のレイヤーの切り替えにMoキーを使っています.

そんな中以下の現象に遭遇して長らく困っていたのですが,本日解決したのでメモしておきます.

現象:長押しでSHIFTに切り替わるキーを押した状態でMoキーを押し,先にMoキーを離すとその後にSHIFTキーから指を離してもSHIFTキーが押しっぱなしになる.※切り替え後のレイヤーではSHIFTに位置する場所には別のキーが設定されている

キーの設定をコードで表すと以下.

[BASE] = KEYMAP(
    MO(SYMB),
    SFT_T(KC_BSPC), ...
),

[SYMB] = KEYMAP(
    KC_TRNS,
    KC_DELT, ...
)

この状態でMoキーを先に離すとSHIFTが押しっぱなしと判定され,解除するには長押しSHIFTキーを押した状態で何か他のキーを入力しなければなりませんでした.

解決策:SYMBレイヤーも同じように長押しSHIFTキーを設定してあげる

[BASE] = KEYMAP(
    MO(SYMB),
    SFT_T(KC_BSPC), ...
),

[SYMB] = KEYMAP(
    KC_TRNS,
    SFT_T(KC_DELT), ...
)

上記コードにすると現象は発生することがなくなり,解決することができました.
Moキーを離すと実際にキーが押されているかどうかに関係なくSHIFTが押されたままになるのはなかなか厄介なものです.ドキュメントなどを読んでも切り替え後のレイヤーのMoキーに位置する場所はTRNSでなければならない,ということしかわからなかったのでなかなか手強かったですね.

何かこのことについて知識をお持ちの方がいらっしゃったら教えてくださるとうれしいです.

Connection: close