记录keychronK3的via改键经历

#Context

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

bda11da7cfe53fe814c757b33f108d84

所以只能自己想办法via改键了。

#前置工作

你需要联系客服,告诉他你想进行via改键,这时候他就会给你发来一个json文件(或是百度云压缩包,带有教程)。

譬如我的:

image-20240616134318548

在这个文件中可以找到自己键盘型号的json文件,下载下来,进入https://usevia.app/。

首先需要打开设置中的Show Design labimage-20240616134518418

接着会出现一个design的栏,进入之后点击load。

image-20240616134615623

加载刚刚下载的json文件,然后就会让你选择连接你的键盘(注意需要以有线方式连接)。接着就可以进入第一个改键界面。你就可以按照via的步骤来改键了。大致的步骤就是点击你希望改的键,然后在下方选择一个你希望改到的键,注意分两层,对于mac来说是0和1,1为fn + 按键。(下图为借用某csdn博客的图)

img

值得注意的是,这些按键都是缩写,比如scr-是screen-,mctl是mission ctrl,lpad是launch pad,很多在最后一个special区域中。

image-20240616135151798

最后,点击左边第三个储存的标志,先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": []
}