#Context
一直听闻keychron系列对mac的友好支持,所以618买来体验了一下,但是发现一个很严重的问题:作为程序员,f区的按键使用频率非常高,但是keychorn键盘默认f区是功能键,需要原本的f1,f2等功能的话需要fn + f1
,对于日常使用肯定是非常不方便的。而mac中有一个设置可以反转这个关系,可以对于外置键盘不适用。

所以只能自己想办法via改键了。
#前置工作
你需要联系客服,告诉他你想进行via改键,这时候他就会给你发来一个json文件(或是百度云压缩包,带有教程)。
譬如我的:

在这个文件中可以找到自己键盘型号的json文件,下载下来,进入https://usevia.app/。
首先需要打开设置中的Show Design lab
,
接着会出现一个design的栏,进入之后点击load。

加载刚刚下载的json文件,然后就会让你选择连接你的键盘(注意需要以有线方式连接)。接着就可以进入第一个改键界面。你就可以按照via的步骤来改键了。大致的步骤就是点击你希望改的键,然后在下方选择一个你希望改到的键,注意分两层,对于mac来说是0和1,1为fn + 按键
。(下图为借用某csdn博客的图)
值得注意的是,这些按键都是缩写,比如scr-是screen-,mctl是mission ctrl,lpad是launch pad,很多在最后一个special区域中。

最后,点击左边第三个储存的标志,先save json文件,再load,就可以成功写入键盘固件了。
分享一下我的基本设置(只是把fn区反了一下)
{
"name": "Keychron K3 Max ANSI White",
"vendorProductId": 875825715,
"macros": ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""],
"layers": [
[
"KC_ESC",
"KC_F1",
"KC_F2",
"KC_F3",
"KC_F4",
"KC_F5",
"KC_F6",
"KC_F7",
"KC_F8",
"KC_F9",
"KC_F10",
"KC_F11",
"KC_F12",
"CUSTOM(8)",
"KC_DEL",
"BL_STEP",
"KC_GRV",
"KC_1",
"KC_2",
"KC_3",
"KC_4",
"KC_5",
"KC_6",
"KC_7",
"KC_8",
"KC_9",
"KC_0",
"KC_MINS",
"KC_EQL",
"KC_BSPC",
"KC_NO",
"KC_PGUP",
"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_BSLS",
"KC_NO",
"KC_PGDN",
"KC_CAPS",
"KC_A",
"KC_S",
"KC_D",
"KC_F",
"KC_G",
"KC_H",
"KC_J",
"KC_K",
"KC_L",
"KC_SCLN",
"KC_QUOT",
"KC_NO",
"KC_ENT",
"KC_NO",
"KC_HOME",
"KC_LSFT",
"KC_NO",
"KC_Z",
"KC_X",
"KC_C",
"KC_V",
"KC_B",
"KC_N",
"KC_M",
"KC_COMM",
"KC_DOT",
"KC_SLSH",
"KC_NO",
"KC_RSFT",
"KC_UP",
"KC_END",
"KC_LCTL",
"CUSTOM(0)",
"CUSTOM(2)",
"KC_NO",
"KC_NO",
"KC_NO",
"KC_SPC",
"KC_NO",
"KC_NO",
"KC_NO",
"CUSTOM(3)",
"MO(1)",
"KC_RCTL",
"KC_LEFT",
"KC_DOWN",
"KC_RGHT"
],
[
"KC_TRNS",
"KC_BRID",
"KC_BRIU",
"CUSTOM(4)",
"CUSTOM(5)",
"BL_DEC",
"BL_INC",
"KC_MPRV",
"KC_MPLY",
"KC_MNXT",
"KC_MUTE",
"KC_VOLD",
"KC_VOLU",
"KC_TRNS",
"KC_TRNS",
"BL_TOGG",
"KC_TRNS",
"CUSTOM(11)",
"CUSTOM(12)",
"CUSTOM(13)",
"CUSTOM(14)",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_NO",
"KC_TRNS",
"BL_TOGG",
"BL_STEP",
"BL_INC",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_NO",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"BL_DEC",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_NO",
"KC_TRNS",
"KC_NO",
"KC_TRNS",
"KC_TRNS",
"KC_NO",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"CUSTOM(15)",
"MAGIC_TOGGLE_NKRO",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_NO",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_NO",
"KC_NO",
"KC_NO",
"KC_TRNS",
"KC_NO",
"KC_NO",
"KC_NO",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS"
],
[
"KC_ESC",
"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_PSCR",
"KC_DEL",
"BL_STEP",
"KC_GRV",
"KC_1",
"KC_2",
"KC_3",
"KC_4",
"KC_5",
"KC_6",
"KC_7",
"KC_8",
"KC_9",
"KC_0",
"KC_MINS",
"KC_EQL",
"KC_BSPC",
"KC_NO",
"KC_PGUP",
"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_BSLS",
"KC_NO",
"KC_PGDN",
"KC_CAPS",
"KC_A",
"KC_S",
"KC_D",
"KC_F",
"KC_G",
"KC_H",
"KC_J",
"KC_K",
"KC_L",
"KC_SCLN",
"KC_QUOT",
"KC_NO",
"KC_ENT",
"KC_NO",
"KC_HOME",
"KC_LSFT",
"KC_NO",
"KC_Z",
"KC_X",
"KC_C",
"KC_V",
"KC_B",
"KC_N",
"KC_M",
"KC_COMM",
"KC_DOT",
"KC_SLSH",
"KC_NO",
"KC_RSFT",
"KC_UP",
"KC_END",
"KC_LCTL",
"KC_LGUI",
"KC_LALT",
"KC_NO",
"KC_NO",
"KC_NO",
"KC_SPC",
"KC_NO",
"KC_NO",
"KC_NO",
"KC_RALT",
"MO(3)",
"KC_RCTL",
"KC_LEFT",
"KC_DOWN",
"KC_RGHT"
],
[
"KC_TRNS",
"KC_BRID",
"KC_BRIU",
"CUSTOM(6)",
"CUSTOM(7)",
"BL_DEC",
"BL_INC",
"KC_MPRV",
"KC_MPLY",
"KC_MNXT",
"KC_MUTE",
"KC_VOLD",
"KC_VOLU",
"KC_TRNS",
"KC_TRNS",
"BL_TOGG",
"KC_TRNS",
"CUSTOM(11)",
"CUSTOM(12)",
"CUSTOM(13)",
"CUSTOM(14)",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_NO",
"KC_TRNS",
"BL_TOGG",
"BL_STEP",
"BL_INC",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_NO",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"BL_DEC",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_NO",
"KC_TRNS",
"KC_NO",
"KC_TRNS",
"KC_TRNS",
"KC_NO",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"CUSTOM(15)",
"MAGIC_TOGGLE_NKRO",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_NO",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_NO",
"KC_NO",
"KC_NO",
"KC_TRNS",
"KC_NO",
"KC_NO",
"KC_NO",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS"
]
],
"encoders": []
}