{"id":20865919,"url":"https://github.com/mnesarco/qmk_kle","last_synced_at":"2025-07-03T21:33:02.247Z","repository":{"id":52958250,"uuid":"488753382","full_name":"mnesarco/qmk_kle","owner":"mnesarco","description":"QMK to KLE Generator","archived":false,"fork":false,"pushed_at":"2023-04-26T23:49:54.000Z","size":149,"stargazers_count":10,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-01T06:03:06.530Z","etag":null,"topics":["keyboard","qmk"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mnesarco.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-05-04T21:53:01.000Z","updated_at":"2025-01-21T15:48:34.000Z","dependencies_parsed_at":"2022-08-26T14:31:40.444Z","dependency_job_id":null,"html_url":"https://github.com/mnesarco/qmk_kle","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mnesarco%2Fqmk_kle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mnesarco%2Fqmk_kle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mnesarco%2Fqmk_kle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mnesarco%2Fqmk_kle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mnesarco","download_url":"https://codeload.github.com/mnesarco/qmk_kle/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253720144,"owners_count":21952980,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["keyboard","qmk"],"created_at":"2024-11-18T05:55:20.367Z","updated_at":"2025-05-12T10:32:40.152Z","avatar_url":"https://github.com/mnesarco.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# QMK to KLE Generator\n\nCompile QMK layout file into kle code to visualize at http://www.keyboard-layout-editor.com/\n\nThis is a port of my previous generator for KMonad (https://github.com/mnesarco/kmonad_dump)\n\n## From this:\n\n```\n...\n\n\nconst uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\n\n    // Base Colemak DH\n    // ---------------------------------------------------------------------------------------------------------------------------------\n    [LAYER_BASE] = LAYOUT_split_3x6_4(\n    // \u003cdeflayer\u003e\n                  KC_Q,     KC_W,     KC_F,     KC_P,     KC_B,            KC_J,     KC_L,     KC_U,     KC_Y,      XKC_N,    KC_ESC,\n        OS_LSFT,  A_GUI,    R_ALT,    S_CTL,    T_SFT,    KC_G,            KC_M,     N_SFT,    E_CTL,    I_ALT,     O_GUI,    OS_RSFT,\n        KC_LCTL,  KC_Z,     KC_X,     KC_C,     KC_D,     KC_V,            KC_K,     KC_H,     KC_COMM,  KC_DOT,    KC_SLSH,  KC_ENT,\n                            KC_LGUI,  L_NUM,    L_NAV,    L_SYM,           L_FUN,    L_MOU,    L_MED,    KC_RALT\n    // \u003c/deflayer\u003e\n    ),\n\n    // Navigation\n    // ---------------------------------------------------------------------------------------------------------------------------------\n    [LAYER_NAV] = LAYOUT_split_3x6_4(\n    // \u003cdeflayer nav\u003e\n                  _______,  _______,  _______,  _______,  _______,         U_REDO,   U_PST,    U_CPY,    U_CUT,     U_UNDO,   _______,\n        _______,  KC_LGUI,  KC_LALT,  KC_LCTL,  KC_LSFT,  _______,         _______,  KC_LEFT,  KC_DOWN,  KC_UP,     KC_RGHT,  _______,\n        _______,  KC_RALT,  _______,  _______,  _______,  _______,         _______,  KC_HOME,  KC_PGDN,  KC_PGUP,   KC_END,   _______,\n                            _______,  _______,  _______,  _______,         KC_ENT,   KC_SPC,   KC_DEL ,  _______\n    // \u003c/deflayer\u003e\n    ),\n\n\n...\n\n```\n\n## To this:\n\n![Layout Visualization](https://github.com/mnesarco/qmk_kle/raw/main/example_output.png)\n\n## Just adding some comments in your keymap file:\n\n```\n\n/*\n\u003chardware-layout\u003e\n\n!!! Keycap layout and colors\n----------------------------\n\n(keycap \n    _ _ _\n    _ _ _\n    _ _ _\n    _ _ _\n)\n\n(colors\n    _ _ _\n    _ _ _\n    _ _ _\n    _ _ _\n)\n\n!!! Custom options per key (Optional)\n!!! Options are based on row column and kle syntax\n!!! (options row col data)\n-------------------------------------------------------\n\n(options key custom_layout)\n.\n.\n.\n\n!!! Override or assign labels (Optional)\n----------------------------------------\n\n(label alias text)\n.\n.\n.\n\n!!! Add some notes (Optional)\n-----------------------------\n\n(description\n    Free Text\n)\n\n\u003c/hardware-layout\u003e\n*/\n```\n\nSee example: https://github.com/mnesarco/qmk_kle/blob/main/example_keymap.c\n\n## Usage:\n\n```\npython3 kle.py example_keymap.c\n\n```\n\n## Output:\n\nThe generated code must be copied and pasted into KLE's Raw Data Box. \n\n```\n➜  qmk_kle python kle.py example_keymap.c \n\n            +-----------------------------------------------------------+\n            | Go to: http://www.keyboard-layout-editor.com/             |\n            | And paste the following code into \"\u003c/\u003e Raw Data\" section. |\n            +-----------------------------------------------------------+\n\n        \n[{a:0, y:-1, t:\"#3498DB\\n#7D3C98\\n#D68910\\n#ff0000\\n#239B56\\n#5D6D7E\\n\\n\\n\\n#000000\"}],\n[{y:0.75, x:1},\"\\n\\n\\nF12\\n↷\\n\\n\\n\\n\\nQ\",{y:-0.5},\"\\n\\n\\nF7\\npaste\\n\\n\\n\\n\\nW\",{y:-0.25},\"\\n\\n\\nF8\\ncopy\\n\\n\\n\\n\\nF\",{y:0.35},\"\\n\\n\\nF9\\ncut\\n\\n\\n\\n\\nP\",{y:0.2},\"\\n\\n\\npscr\\n↶\\n\\n\\n\\n\\nB\",{x: 6},\"\\n↷\\n!\\n\\n\\n\\n\\n\\n\\nJ\",{y:-0.2},\"7\\npaste\\n)\\n\\n\\n\\n\\n\\n\\nL\",{y:-0.35},\"8\\ncopy\\n}\\n\\n\\n\\n\\n\\n\\nU\",{y:0.25},\"9\\ncut\\n]\\n\\n\\n\\n\\n\\n\\nY\",{y:0.5},\"\\\\\\n↶\\n^\\n\\n\\n\\n\\n\\n\\nÑ\",\"\\n\\n~\\n\\n\\n\\n\\n\\n\\nesc\"],\n[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n⇮\",\"◆\\n◆\\n◆\\nF11\\n←m\\n⏮\\n\\n\\n\\nA\",{y:-0.5},\"⎇\\n⎇\\n⎇\\nF4\\n↓m\\n🕩\\n\\n\\n\\nR\",{y:-0.25},\"⎈\\n⎈\\n⎈\\nF5\\n↑m\\n🕪\\n\\n\\n\\nS\",{y:0.35},\"⇧\\n⇧\\n⇧\\nF6\\n→m\\n⏭\\n\\n\\n\\nT\",{y:0.2},\"\\n\\n\\n\\n\\n\\n\\n\\n\\nG\",{x: 6},\";\\n\\n#\\n\\n\\n\\n\\n\\n\\nM\",{y:-0.2},\"4\\n←\\n(\\n⇧\\n⇧\\n⇧\\n\\n\\n\\nN\",{y:-0.35},\"5\\n↓\\n{\\n⎈\\n⎈\\n⎈\\n\\n\\n\\nE\",{y:0.25},\"6\\n↑\\n[\\n⎇\\n⎇\\n⎇\\n\\n\\n\\nI\",{y:0.5},\"*\\n→\\n\u003c\\n◆\\n◆\\n◆\\n\\n\\n\\nO\",\"-\\n\\n\u003e\\n\\n\\n\\n\\n\\n\\n⇮\"],\n[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n⎈\",\"⌥\\n⌥\\n⌥\\nF10\\n←w\\n\\n\\n\\n\\nZ\",{y:-0.5},\"\\n\\n\\nF1\\n↓w\\n\\n\\n\\n\\nX\",{y:-0.25},\"\\n\\n\\nF2\\n↑w\\n\\n\\n\\n\\nC\",{y:0.35},\"\\n\\n\\nF3\\n→w\\n\\n\\n\\n\\nD\",{y:0.2},\"\\n\\n\\npause\\n\\n\\n\\n\\n\\nV\",{x: 6},\"`\\n\\n$\\n\\n\\n\\n\\n\\n\\nK\",{y:-0.2},\"1\\nhome\\n%\\n\\n\\n\\n\\n\\n\\nH\",{y:-0.35},\"2\\n⤓\\n\u0026\\n\\n\\n\\n\\n\\n\\n,\",{y:0.25},\"3\\n⤒\\n?\\n\\n\\n\\n\\n\\n\\n.\",{y:0.5},\"/\\nend\\n|\\n⌥\\n⌥\\n⌥\\n\\n\\n\\n/\",\"+\\n\\n_\\n\\n\\n\\n\\n\\n\\nEnter\"],\n[{x:3.75},\"\\n\\n\\n\\n\\n\\n\\n\\n\\n◆\",\"\\n\\n\\nesc\\nRB\\n🕨\\n\\n\\n\\nNum\",\"\\n\\n\\n⌫\\nLB\\n⏯\\n\\n\\n\\nNav\",\"\\n\\n\\n↹\\nMB\\n◼\\n\\n\\n\\nSym\",{x:2.5},\".\\nEnter\\n\\\"\\n\\n\\n\\n\\n\\n\\nFn\",\",\\nSpace\\n'\\n\\n\\n\\n\\n\\n\\n🖱\",\"0\\nDel\\n*\\n\\n\\n\\n\\n\\n\\nMedia\",\"=\\n\\n@\\n\\n\\n\\n\\n\\n\\n⌥\"],\n[{f:4,w:20,h:3,d:true,t:\"#333333\",y:1},\"example_keymap.c\u003cbr /\u003e\u003cbr /\u003eMarz Split 44\u003cbr /\u003e\"]\n```\n\n# Requirements:\n\n- Python3.6+\n\n# References:\n\n- QMK: https://github.com/qmk/qmk_firmware/\n\u003cbr /\u003eAmazing keyboard firmware.\n\n- Keyboard Layout Editor: http://www.keyboard-layout-editor.com/\n\u003cbr /\u003eOnline Keyboard Layout visualization and editing tool.\n\n# TODO\n\n- [ ] Translate all QMK keycodes to labels\n- [ ] Export output in json format\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmnesarco%2Fqmk_kle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmnesarco%2Fqmk_kle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmnesarco%2Fqmk_kle/lists"}