このドキュメントは古いです。最新のPRKの実装については公式Wikiをご覧ください
kbd.define_mode_key
ではなくvia.define_mode_key
を使う(引数は同一)kbd.start!
の前にkbd.append via
するkbd.append via
しなければVIA機能のないPRKとして使えますkbd.append via
していなくてもRemapにデバイスが表示されますが、仕様です。
:default
レイヤーはVIAのレイヤー0で上書きされるlayer_count * rows_size * cols_size
は240を上回ってはいけない(メモリが不足して動かなくなる)
via = VIA.new
via.layer_count = 4
via.rows_size = 8
via.cols_size = 7
kbd.append via
layer_count
レイヤー数rows_size
キーボードの行数cols_size
キーボードの列数
- レイヤーキーや長押しによる動作の実装予定はありません。Funcキーで代用してください。
- RemapのFunc(0〜31)と対応させるためにVIA_FUNC(0〜31)の固定名になってます。
- Remapのレイヤー(0〜n)と対応させるためにdefault, VIA_LAYER(1〜n)の固定名になってます。レイヤー0のレイヤー名は例外的にdefaultです。
- mod-tap:
via.define_mode_key :VIA_FUNCn, [ key, modifier, time1, time2 ]
- layer-tap:
via.define_mode_key :VIA_FUNCn, [ key, :VIA_LAYERn, time1, time2 ]
- レイヤーキー:
via.define_mode_key :VIA_FUNCn, [ :VIA_LAYERn, nil, nil, nil ]
- VIAの
Func0
〜Func31
がキー:VIA_FUNC0
〜:VIA_FUNC31
に変換される - VIAのレイヤー名は
:default
,:VIA_LAYER1
〜VIA_LAYERn
- 書き込みコマンドを受信した際に
via_map.rb
に配列として保存される。- VIAで読み込んだだけでは
via_map.rb
は作成されない
- VIAで読み込んだだけでは
via_map.rb
が存在しない場合はkbd.add_layer
していた順にVIAのキーマップとして書き込まれるvia_map.rb
は4096Byteを超えてはいけないvia_map.rb
をLinuxで開くと以後のファイルサイズの書き換えがうまくいかなくなるため開かないこと- Windowsは可
- ファームウェアをバージョンアップする際は
keymap.rb
と同様にvia_map.rb
もバックアップする必要がある
# Initialize a Keyboard
kbd = Keyboard.new
kbd.init_pins(
[ 6,7 ], # row0, row1
[ 28,27 ] # col0, col1
)
# default layer should be added at first
kbd.add_layer :default, %i[
VIA_FUNC0 VIA_FUNC1 KC_C KC_D
]
kbd.add_layer :number, %i[
VIA_FUNC0 KC_2 KC_3 KC_4
]
via = VIA.new
#
# Your custom Keycode or Keycode (only modifiers) Release time Re-push time
# key name Array of Keycode or Layer Symbol to be held threshold(ms) threshold(ms)
# or Proc or Proc which will run to consider as to consider as
# when you click while you keep press `click the key` `hold the key`
# layer key
via.define_mode_key :VIA_FUNC0, [ :KC_ENTER, :VIA_LAYER1, 300, 250 ]
# mod-tap
via.define_mode_key :VIA_FUNC1, [ :KC_SPACE, :KC_LCTL, 300, 250 ]
via.layer_count = 6
via.rows_size = 2
via.cols_size = 2
kbd.before_report do
kbd.invert_sft if kbd.keys_include?(:KC_SCOLON)
# You'll be also able to write `invert_ctl`, `invert_alt` and `invert_gui`
end
kbd.append via
kbd.start!