From 0f6e183235ddafc339237e13c9192561f7870476 Mon Sep 17 00:00:00 2001 From: FHA Date: Sun, 19 Sep 2021 20:43:05 +0200 Subject: [PATCH] new_encoder module basic documentation --- docs/new_encoder.md | 121 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 docs/new_encoder.md diff --git a/docs/new_encoder.md b/docs/new_encoder.md new file mode 100644 index 0000000..8e2b6d8 --- /dev/null +++ b/docs/new_encoder.md @@ -0,0 +1,121 @@ +# Another shot to an Encoder module + +## How to use +How to use this module in your main / code file + +1. load the module +```python +from kmk.modules.new_encoder import EncoderHandler +encoder_handler = EncoderHandler() +keyboard.modules = [layers, modtap, encoder_handler] +``` + +2. Define the pins for each encoder (pin_a, pin_b, pin_button, True for an inversed encoder) +```python +encoder_handler.pins = ((board.GP17, board.GP15, board.GP14, False), (encoder 2 definition), etc. ) +``` + +3. Define the mapping of keys to be called (1 / layer) +```python +encoder_handler.map = [(( KC.A, KC.Z, KC.E),(encoder 2 mapping), (etc.)), # Layer 1 + ((KC.A, KC.Z, KC.N1),(encoder 2 mapping), (etc.)), # Layer 2 + ((KC.A, KC.Z, KC.N1),(encoder 2 mapping), (etc.)), # Layer 3 + ((KC.A, KC.Z, KC.N1),(encoder 2 mapping), (etc.)), # Layer 4 + ] +``` + +4. Encoder methods on_move_do and on_button_do can be overwritten for complex use cases + +## Full example (with 1 encoder) + +```python +import board + +from kmk.kmk_keyboard import KMKKeyboard +from kmk.consts import UnicodeMode +from kmk.keys import KC +from kmk.matrix import DiodeOrientation +from kmk.modules.layers import Layers +from kmk.modules.new_encoder import EncoderHandler + + +keyboard = KMKKeyboard() +layers = Layers() +encoder_handler = EncoderHandler() +keyboard.modules = [layers, encoder_handler] + + +keyboard.col_pins = ( + board.GP0, board.GP1, board.GP2, board.GP3, board.GP4, board.GP5, + board.GP6, board.GP7, board.GP8, board.GP9, board.GP10, board.GP11, + board.GP12, board.GP13, +) +keyboard.row_pins = (board.GP28, board.GP27, board.GP22, board.GP26, board.GP21) +keyboard.diode_orientation = DiodeOrientation.COLUMNS +encoder_handler.pins = ((board.GP17, board.GP15, board.GP14, False),) + +keyboard.tap_time = 250 +keyboard.debug_enabled = False + + +# Filler keys +_______ = KC.TRNS +xxxxxxx = KC.NO +tbdtbd = KC.A + + +# Layers +LYR_STD, LYR_EXT, LYR_NUM, LYR_GAME = 0, 1, 2, 3 + +TO_STD = KC.DF(LYR_STD) +MT_EXT = KC.MO(LYR_EXT) +TO_NUM = KC.MO(LYR_NUM) +TO_GAME = KC.DF(LYR_GAME) + + +# Keymap + +keyboard.keymap = [ + # Standard (ISO) Layer + [ + KC.ESC , KC.N1 , KC.N2 , KC.N3 , KC.N4 , KC.N5 , KC.N6 , KC.N7 , KC.N8 , KC.N9 , KC.N0 , KC.MINS, KC.EQL , KC.BSPC, + KC.TAB , KC.Q , KC.W , KC.E , KC.R , KC.T , KC.Y , KC.U , KC.I , KC.O , KC.P , KC.LBRC, KC.RBRC, KC.DEL , + xxxxxxx, KC.A , KC.S , KC.D , KC.F , KC.G , KC.H , KC.J , KC.K , KC.L , KC.SCLN, KC.QUOT, KC.NUHS, xxxxxxx, + KC.LSFT, KC.NUBS, KC.Z , KC.X , KC.C , KC.V , KC.B , KC.N , KC.M , KC.COMM, KC.DOT , KC.SLSH, KC.UP , KC.ENT , + KC.LCTL, KC.LGUI, xxxxxxx, KC.LALT, MT_EXT , xxxxxxx, KC.SPC , xxxxxxx, KC.RALT, TO_NUM , KC.RSFT, KC.LEFT, KC.DOWN, KC.RGHT, + ], + # Extra Keys Layer + [ + TO_STD , KC.F1 , KC.F2 , KC.F3 , KC.F4 , KC.F5 , KC.F6 , KC.F7 , KC.F8 , KC.F9 , KC.F10 , KC.F11 , KC.F12 , KC.RESET, + _______, KC.N1 , KC.N2 , KC.N3 , KC.N4 , KC.N5 , KC.N6 , KC.N7 , KC.N8 , KC.N9 , KC.N0 , KC.MINS, KC.EQL , _______, + xxxxxxx, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, xxxxxxx, + KC.LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC.PGUP, _______, + KC.LCTL, KC.LGUI, xxxxxxx, KC.LALT, MT_EXT , xxxxxxx, _______, xxxxxxx, _______, TO_NUM , _______, KC.HOME, KC.PGDN, KC.END , + ], + # NumPad Layer + [ + TO_STD , xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, KC.P7 , KC.P8 , KC.P9 , KC.PSLS, xxxxxxx, xxxxxxx, KC.BSPC, + xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, KC.P4 , KC.P5 , KC.P6 , KC.PAST, xxxxxxx, xxxxxxx, KC.DEL , + xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, KC.LPRN, KC.P1 , KC.P2 , KC.P3 , KC.PPLS, xxxxxxx, xxxxxxx, xxxxxxx, + xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, KC.RPRN, KC.P0 , KC.PDOT, _______, KC.PMNS, xxxxxxx, xxxxxxx, KC.PENT, + xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, MT_EXT , xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, TO_NUM , xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, + ], + # Gaming Layer + [ + TO_STD , xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, + xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, + xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, + xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, + xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, MT_EXT , xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, TO_NUM , xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, + ], +] + +# Rotary Encoder (1 encoder / 1 definition per layer) +encoder_handler.map = ( ((KC.UP, KC.DOWN, KC.MUTE),), # Standard + ((KC.VOLD, KC.VOLU, KC.MUTE),), # Extra + ((KC.A, KC.Z, KC.N1),), # NumPad not yet properly configured + ((KC.A, KC.Z, KC.N1),), # Gaming not yet properly configured + ) + +if __name__ == "__main__": + keyboard.go()