Skip to content

Instantly share code, notes, and snippets.

@JiapengLi
Last active September 15, 2020 03:13
Show Gist options
  • Select an option

  • Save JiapengLi/f0e0985f9057fa922e068178fbccfee8 to your computer and use it in GitHub Desktop.

Select an option

Save JiapengLi/f0e0985f9057fa922e068178fbccfee8 to your computer and use it in GitHub Desktop.
from PYKB import *
keyboard = Keyboard()
___ = TRANSPARENT
BOOT = BOOTLOADER
L1 = LAYER_TAP(1)
L2D = LAYER_TAP(2, D)
L3B = LAYER_TAP(3, B)
LSFT4 = LAYER_MODS(4, MODS(LSHIFT))
RSFT4 = LAYER_MODS(4, MODS(RSHIFT))
# Semicolon & Ctrl
SCC = MODS_TAP(MODS(RCTRL), ';')
keydict = {
# layer 0 layer 1 layer 2 layer 3 layer 4
"00_ESC" : [ ESC, '`', '`', BT_TOGGLE, '`' ],
"01_1" : [ 1, F1, F1, BT1, ___ ],
"02_2" : [ 2, F2, F2, BT2, ___ ],
"03_3" : [ 3, F3, F3, BT3, ___ ],
"04_4" : [ 4, F4, F4, BT4, ___ ],
"05_5" : [ 5, F5, F5, BT5, ___ ],
"06_6" : [ 6, F6, F6, BT6, ___ ],
"07_7" : [ 7, F7, F7, BT7, ___ ],
"08_8" : [ 8, F8, F8, BT8, ___ ],
"09_9" : [ 9, F9, F9, BT9, ___ ],
"10_0" : [ 0, F10, F10, BT0, ___ ],
"11_MINUS" : [ '-', F11, F11, ___, ___ ],
"12_EQUAL" : [ '=', F12, F12, ___, ___ ],
"13_BACKSPACE" : [ BACKSPACE, DEL, DEL, ___, ___ ],
"14_TAB" : [ TAB, ___, ___, ___, ___ ],
"15_Q" : [ Q, ___, ___, ___, ___ ],
"16_W" : [ W, UP, ___, ___, ___ ],
"17_E" : [ E, ___, ___, ___, ___ ],
"18_R" : [ R, ___, ___, ___, ___ ],
"19_T" : [ T, ___, ___, ___, ___ ],
"20_Y" : [ Y, ___, HOME, ___, ___ ],
"21_U" : [ U, ___, PGUP, USB_TOGGLE, ___ ],
"22_I" : [ I, INSERT, ___, ___, ___ ],
"23_O" : [ O, ___, ___, ___, ___ ],
"24_P" : [ P, SUSPEND, ___, ___, ___ ],
"25_LEFTBRACE" : [ '[', ___, AUDIO_VOL_DOWN, ___, ___ ],
"26_RIGHTBRACE" : [ ']', ___, AUDIO_VOL_UP, ___, ___ ],
"27_BACKSLASH" : [ '|', ___, AUDIO_MUTE, ___, ___ ],
"28_CAPS" : [ CAPS, ___, ___, ___, ___ ],
"29_A" : [ A, LEFT, ___, ___, ___ ],
"30_S" : [ S, DOWN, ___, ___, ___ ],
"31_D" : [ L2D, RIGHT, ___, ___, D ],
"32_F" : [ F, ___, ___, ___, ___ ],
"33_G" : [ G, ___, ___, ___, ___ ],
"34_H" : [ H, ___, LEFT, ___, ___ ],
"35_J" : [ J, ___, DOWN, ___, ___ ],
"36_K" : [ K, ___, UP, ___, ___ ],
"37_L" : [ L, ___, RIGHT, ___, ___ ],
"38_SEMICOLON" : [ SCC, ___, ___, ___, ';' ],
"39_QUOTE" : [ '"', ___, ___, ___, ___ ],
"40_ENTER" : [ ENTER, ___, ___, ___, ___ ],
"41_LSHIFT" : [ LSFT4, ___, ___, ___, ___ ],
"42_Z" : [ Z, ___, ___, ___, ___ ],
"43_X" : [ X, ___, ___, ___, ___ ],
"44_C" : [ C, ___, ___, ___, ___ ],
"45_V" : [ V, ___, ___, ___, ___ ],
"46_B" : [ L3B, BOOT, END, ___, B ],
"47_N" : [ N, ___, PGDN, ___, ___ ],
"48_M" : [ M, MACRO(0), ___, ___, ___ ],
"49_COMMA" : [ ',', ___, ___, ___, ___ ],
"50_DOT" : [ '.', ___, ___, ___, ___ ],
"51_SLASH" : [ '/', ___, ___, ___, ___ ],
"52_RSHIFT" : [ RSFT4, ___, ___, ___, ___ ],
"53_LCTRL" : [ LCTRL, ___, ___, ___, ___ ],
"54_LGUI" : [ LGUI, ___, ___, ___, ___ ],
"55_LALT" : [ LALT, ___, ___, ___, ___ ],
"56_SPACE" : [ SPACE, ___, ___, ___, ___ ],
"57_RALT" : [ RALT, ___, ___, ___, ___ ],
"58_MENU" : [ PRINTSCREEN, ___, ___, ___, ___ ],
"59_FN" : [ L1, ___, ___, ___, ___ ],
"60_RCTRL" : [ RCTRL, ___, ___, ___, ___ ],
}
keys = []
for i in range(len(keydict["00_ESC"])):
l = [TRANSPARENT] * 61
for k, v in keydict.items():
l[int(k[:2])] = v[i]
keys.append(tuple(l))
keyboard.keymap = tuple(keys)
def macro_handler(dev, n, is_down):
if is_down:
dev.send_text('You pressed macro #{}\n'.format(n))
else:
dev.send_text('You released macro #{}\n'.format(n))
def pairs_handler(dev, n):
dev.send_text('You just triggered pair keys #{}\n'.format(n))
keyboard.macro_handler = macro_handler
keyboard.pairs_handler = pairs_handler
# Pairs: J & K, U & I
keyboard.pairs = [{35, 36}, {20, 19}]
#dasfasfakeyboard.verbose = False
keyboard.run()
@JiapengLi
Copy link
Copy Markdown
Author

JiapengLi commented Sep 15, 2020

In sublime text 3, select ], and press ctrl + d, ctrl + d 61 times, to edit multiple lines in one shot.

@JiapengLi
Copy link
Copy Markdown
Author

JiapengLi commented Sep 15, 2020

m60-keymap.xlsx

An excel tool to generate m60 keymap.

  1. save link as file
  2. rename the file to *.7z
  3. extract and use the file

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment