Created
October 12, 2023 14:54
-
-
Save snize/50e1611fcdb75a405cbee63773840556 to your computer and use it in GitHub Desktop.
英字の自作キーボードでprk_firmwareを利用している場合の英数/かな切り替えの時差式単押しキー
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# https://github.com/picoruby/prk_firmware/wiki/Layers-and-mode-key_ja | |
# key1 key2 key3 key4 | |
kbd.add_layer :default, %i(SPC_LAYER1 KC_A KC_B CTR_ENT_LAYER2) # :default レイヤーは最初に追加する必要がある | |
kbd.add_layer :layer1, %i(SPC_LAYER1 KC_1 KC_2 CTR_ENT_LAYER2) | |
kbd.add_layer :layer2, %i(SPC_LAYER1 KC_F1 KC_F2 CTR_ENT_LAYER2) | |
kbd.define_mode_key :SPC_LAYER1, [ :KC_SPACE, :layer1, 200, 200 ] | |
kbd.define_mode_key :CTR_ENT_LAYER2,[ %i(KC_RCTL KC_ENTER), :layer2, 300, 150 ] | |
# ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^ ^^^ | |
# (1) (2) (3) (4) | |
# (1): 押したときに呼び出される、以下のいずれか | |
# キーコードのシンボル または 複数キーコードの配列 または Proc | |
# (2): キーコードのシンボル(モディファイアのみ) または 保持されるレイヤーのシンボル | |
# または Proc | |
# (3): リリース時間の閾値(ミリ秒) | |
# もしこの時間内にキーを離したら、(1)キーが一度呼び出される | |
# (4): 再押下時間の閾値(ミリ秒) | |
# (3)の状態にあるとき、この時間内にキーをまた押した場合、(1)キーが押されたままになる | |
#------------------------------------------------------------------------------- | |
# NG 公式のドキュメントにもあるように、KC_LANG2 の部分はモディファイヤかレイヤーのシンボルかProcしか指定できないので動かない | |
kbd.define_mode_key :LANGTOGL, [ :KC_LANG1, :KC_LANG2, 120, 120 ] | |
# OK Procは指定できるので kbd.send_key でキーコードを直接送ってる | |
kbd.define_mode_key :LANGTOGL, [ Proc.new { kbd.send_key %i[KC_MHEN KC_LANG2] }, Proc.new { kbd.send_key %i[KC_HENK KC_LANG1] }, 120, nil ] | |
# 以下でもOK | |
kbd.define_mode_key :LANGTOGL, [ %i[KC_MHEN KC_LANG2], Proc.new { kbd.send_key %i[KC_HENK KC_LANG1] }, 120, nil ] | |
# macのJISキーボードの英数/かなの様なキーの割り当てをしたいが1キーしかなく物理的に足りない | |
# Windowsの半角全角キーはトグルでありIMEの状態を覚えておく必要があるのでそれは嫌 | |
# 妥協案として1キーにはまとめるが、押下する時間の長さで挙動が変わるためトグルではないことが実現できる |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment