diff --git a/data/matrix_layouts/razerhunt22.json b/data/matrix_layouts/razerhunt22.json new file mode 100644 index 0000000..8ef7b2e --- /dev/null +++ b/data/matrix_layouts/razerhunt22.json @@ -0,0 +1,482 @@ +{ + "UK": { + "row0": [ + {"label": "", "width": 103, "side": 20, "matrix": [6, 0]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 1]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 2]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 3]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 4]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 5]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 6]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 7]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 8]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 9]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 10]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 11]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 12]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 13]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 14]} + ], + "row1": [ + {"label": "", "width": 20, "matrix": [7, 0]}, + {"label": "esc", "matrix": [0, 1]}, + {"label": null}, + {"label": "F1", "matrix": [0, 3]}, + {"label": "F2", "matrix": [0, 4]}, + {"label": "F3", "matrix": [0, 5]}, + {"label": "F4", "matrix": [0, 6]}, + {"label": "", "width": 27, "disabled": true}, + {"label": "F5", "matrix": [0, 7]}, + {"label": "F6", "matrix": [0, 8]}, + {"label": "F7", "matrix": [0, 9]}, + {"label": "F8", "matrix": [0, 10]}, + {"label": "", "width": 27, "disabled": true}, + {"label": "F9", "matrix": [0, 11]}, + {"label": "F10", "matrix": [0, 12]}, + {"label": "F11", "matrix": [0, 13]}, + {"label": "F12", "matrix": [0, 14]}, + {"label": null}, + {"label": "prt sc", "matrix": [0, 15]}, + {"label": "scr\nlk", "matrix": [0, 16]}, + {"label": "pause", "matrix": [0, 17]}, + {"label": null}, + {"label": "bck", "matrix": [0, 18]}, + {"label": "play", "matrix": [0, 19]}, + {"label": "fwd", "matrix": [0, 20]}, + {"label": "Vol", "matrix": [0, 21]}, + {"label": "", "width": 20, "matrix": [6, 15]} + ], + "row2": [ + {"label": "", "disabled": true, "width": 20, "matrix": [7, 1]}, + {"label": "`", "matrix": [1, 1]}, + {"label": "1", "matrix": [1, 2]}, + {"label": "2", "matrix": [1, 3]}, + {"label": "3", "matrix": [1, 4]}, + {"label": "4", "matrix": [1, 5]}, + {"label": "5", "matrix": [1, 6]}, + {"label": "6", "matrix": [1, 7]}, + {"label": "7", "matrix": [1, 8]}, + {"label": "8", "matrix": [1, 9]}, + {"label": "9", "matrix": [1, 10]}, + {"label": "0", "matrix": [1, 11]}, + {"label": "-", "matrix": [1, 12]}, + {"label": "=", "matrix": [1, 13]}, + {"label": "backspace", "width": 126, "matrix": [1, 14]}, + {"label": null}, + {"label": "ins", "matrix": [1, 15]}, + {"label": "home", "matrix": [1, 16]}, + {"label": "page\nup", "matrix": [1, 17]}, + {"label": null}, + {"label": "num\nlk", "matrix": [1, 18]}, + {"label": "/", "matrix": [1, 19]}, + {"label": "*", "matrix": [1, 20]}, + {"label": "-", "matrix": [1, 21]}, + {"label": "", "disabled": true, "width": 20, "matrix": [6, 16]} + ], + "row3": [ + {"label": "", "width": 20, "matrix": [7, 1]}, + {"label": "tab", "width": 94, "matrix": [2, 1]}, + {"label": "Q", "matrix": [2, 2]}, + {"label": "W", "matrix": [2, 3]}, + {"label": "E", "matrix": [2, 4]}, + {"label": "R", "matrix": [2, 5]}, + {"label": "T", "matrix": [2, 6]}, + {"label": "Y", "matrix": [2, 7]}, + {"label": "U", "matrix": [2, 8]}, + {"label": "I", "matrix": [2, 9]}, + {"label": "O", "matrix": [2, 10]}, + {"label": "P", "matrix": [2, 11]}, + {"label": "[", "matrix": [2, 12]}, + {"label": "]", "matrix": [2, 13]}, + {"label": "enter", "width": 92, "disabled": true, "matrix": [2, 14]}, + {"label": null}, + {"label": "del", "matrix": [2, 15]}, + {"label": "end", "matrix": [2, 16]}, + {"label": "page\ndown", "matrix": [2, 17]}, + {"label": null}, + {"label": "7", "matrix": [2, 18]}, + {"label": "8", "matrix": [2, 19]}, + {"label": "9", "matrix": [2, 20]}, + {"label": "+", "height": 126, "matrix": [2, 21]}, + {"label": "", "width": 20, "matrix": [6, 16]} + ], + "row4": [ + {"label": "", "width": 20, "matrix": [7, 2]}, + {"label": "caps\nlk", "width": 109, "matrix": [3, 1]}, + {"label": "A", "matrix": [3, 2]}, + {"label": "S", "matrix": [3, 3]}, + {"label": "D", "matrix": [3, 4]}, + {"label": "F", "matrix": [3, 5]}, + {"label": "G", "matrix": [3, 6]}, + {"label": "H", "matrix": [3, 7]}, + {"label": "J", "matrix": [3, 8]}, + {"label": "K", "matrix": [3, 9]}, + {"label": "L", "matrix": [3, 10]}, + {"label": ";", "matrix": [3, 11]}, + {"label": "'", "matrix": [3, 12]}, + {"label": "#", "matrix": [3, 13]}, + {"label": "enter", "width": 80, "matrix": [3, 14]}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": "4", "matrix": [3, 18]}, + {"label": "5", "matrix": [3, 19]}, + {"label": "6", "matrix": [3, 20]}, + {"label": "+", "disabled": true}, + {"label": "", "width": 20, "matrix": [6, 17]} + ], + "row5": [ + {"label": "", "disabled": true, "width": 20, "matrix": [7, 3]}, + {"label": "shift", "width": 80, "matrix": [4, 1]}, + {"label": "\\", "matrix": [4, 2]}, + {"label": "Z", "matrix": [4, 3]}, + {"label": "X", "matrix": [4, 4]}, + {"label": "C", "matrix": [4, 5]}, + {"label": "V", "matrix": [4, 6]}, + {"label": "B", "matrix": [4, 7]}, + {"label": "N", "matrix": [4, 8]}, + {"label": "M", "matrix": [4, 9]}, + {"label": ",", "matrix": [4, 10]}, + {"label": ".", "matrix": [4, 11]}, + {"label": "/", "matrix": [4, 12]}, + {"label": "shift", "width": 172, "matrix": [4, 14]}, + {"label": null}, + {"label": null}, + {"label": "\ud83e\udc39", "matrix": [4, 16]}, + {"label": null}, + {"label": null}, + {"label": "1", "matrix": [4, 18]}, + {"label": "2", "matrix": [4, 19]}, + {"label": "3", "matrix": [4, 20]}, + {"label": "enter", "height": 126, "matrix": [4, 21]}, + {"label": "", "disabled": true, "width": 20, "matrix": [6, 18]} + ], + "row6": [ + {"label": "", "width": 20, "matrix": [7, 3]}, + {"label": "ctrl", "width": 94, "matrix": [5, 1]}, + {"label": "\ud83d\udc27", "matrix": [5, 2]}, + {"label": "alt", "width": 94, "matrix": [5, 3]}, + {"label": "space", "width": 388, "matrix": [5, 7]}, + {"label": "alt", "width": 94, "matrix": [5, 11]}, + {"label": "fn", "matrix": [5, 12]}, + {"label": "\u2630", "matrix": [5, 13]}, + {"label": "ctrl", "width": 92, "matrix": [5, 14]}, + {"label": null}, + {"label": "\ud83e\udc38", "matrix": [5, 15]}, + {"label": "\ud83e\udc3b", "matrix": [5, 16]}, + {"label": "\ud83e\udc3a", "matrix": [5, 17]}, + {"label": null}, + {"label": "0", "width": 126, "matrix": [5, 19]}, + {"label": ".", "matrix": [5, 20]}, + {"label": "enter", "disabled": true}, + {"label": "", "width": 20, "matrix": [6, 18]} + ], + "row7": [ + {"label": "", "width": 103, "side": 20, "matrix": [7, 4]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 5]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 6]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 7]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 8]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 9]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 10]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 11]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 12]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 13]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 14]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 15]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 16]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 17]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 18]} + ], + "row8": [ + {"label": "", "width": 20, "matrix": [8, 0]}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": "", "width": 20, "matrix": [8,17]} + ], + "row9": [ + {"label": "", "width": 20, "matrix": [8, 1]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 2]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 3]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 4]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 5]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 6]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 7]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 8]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 9]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 10]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 11]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 12]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 13]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 14]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 15]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 16]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 19]}, + {"label": "", "width": 20, "matrix": [8,18]} + ] + }, + "German": { + "row0": [ + {"label": "", "width": 103, "side": 20, "matrix": [6, 0]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 1]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 2]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 3]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 4]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 5]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 6]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 7]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 8]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 9]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 10]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 11]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 12]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 13]}, + {"label": "", "width": 103, "side": 20, "matrix": [6, 14]} + ], + "row1": [ + {"label": "", "width": 20, "matrix": [7, 0]}, + {"label": "esc", "matrix": [0, 1]}, + {"label": null}, + {"label": "F1", "matrix": [0, 3]}, + {"label": "F2", "matrix": [0, 4]}, + {"label": "F3", "matrix": [0, 5]}, + {"label": "F4", "matrix": [0, 6]}, + {"label": "", "width": 27, "disabled": true}, + {"label": "F5", "matrix": [0, 7]}, + {"label": "F6", "matrix": [0, 8]}, + {"label": "F7", "matrix": [0, 9]}, + {"label": "F8", "matrix": [0, 10]}, + {"label": "", "width": 27, "disabled": true}, + {"label": "F9", "matrix": [0, 11]}, + {"label": "F10", "matrix": [0, 12]}, + {"label": "F11", "matrix": [0, 13]}, + {"label": "F12", "matrix": [0, 14]}, + {"label": null}, + {"label": "prt sc", "matrix": [0, 15]}, + {"label": "scr\nlk", "matrix": [0, 16]}, + {"label": "pause", "matrix": [0, 17]}, + {"label": null}, + {"label": "bck", "matrix": [0, 18]}, + {"label": "play", "matrix": [0, 19]}, + {"label": "fwd", "matrix": [0, 20]}, + {"label": "Vol", "matrix": [0, 21]}, + {"label": "", "width": 20, "matrix": [6, 15]} + ], + "row2": [ + {"label": "", "disabled": true, "width": 20, "matrix": [7, 1]}, + {"label": "`", "matrix": [1, 1]}, + {"label": "1", "matrix": [1, 2]}, + {"label": "2", "matrix": [1, 3]}, + {"label": "3", "matrix": [1, 4]}, + {"label": "4", "matrix": [1, 5]}, + {"label": "5", "matrix": [1, 6]}, + {"label": "6", "matrix": [1, 7]}, + {"label": "7", "matrix": [1, 8]}, + {"label": "8", "matrix": [1, 9]}, + {"label": "9", "matrix": [1, 10]}, + {"label": "0", "matrix": [1, 11]}, + {"label": "?", "matrix": [1, 12]}, + {"label": "`", "matrix": [1, 13]}, + {"label": "backspace", "width": 126, "matrix": [1, 14]}, + {"label": null}, + {"label": "ins", "matrix": [1, 15]}, + {"label": "home", "matrix": [1, 16]}, + {"label": "page\nup", "matrix": [1, 17]}, + {"label": null}, + {"label": "num\nlk", "matrix": [1, 18]}, + {"label": "/", "matrix": [1, 19]}, + {"label": "*", "matrix": [1, 20]}, + {"label": "-", "matrix": [1, 21]}, + {"label": "", "disabled": true, "width": 20, "matrix": [6, 16]} + ], + "row3": [ + {"label": "", "width": 20, "matrix": [7, 1]}, + {"label": "tab", "width": 94, "matrix": [2, 1]}, + {"label": "Q", "matrix": [2, 2]}, + {"label": "W", "matrix": [2, 3]}, + {"label": "E", "matrix": [2, 4]}, + {"label": "R", "matrix": [2, 5]}, + {"label": "T", "matrix": [2, 6]}, + {"label": "Z", "matrix": [2, 7]}, + {"label": "U", "matrix": [2, 8]}, + {"label": "I", "matrix": [2, 9]}, + {"label": "O", "matrix": [2, 10]}, + {"label": "P", "matrix": [2, 11]}, + {"label": "Ü", "matrix": [2, 12]}, + {"label": "+", "matrix": [2, 13]}, + {"label": "enter", "width": 92, "disabled": true, "matrix": [2, 14]}, + {"label": null}, + {"label": "del", "matrix": [2, 15]}, + {"label": "end", "matrix": [2, 16]}, + {"label": "page\ndown", "matrix": [2, 17]}, + {"label": null}, + {"label": "7", "matrix": [2, 18]}, + {"label": "8", "matrix": [2, 19]}, + {"label": "9", "matrix": [2, 20]}, + {"label": "+", "height": 126, "matrix": [2, 21]}, + {"label": "", "width": 20, "matrix": [6, 16]} + ], + "row4": [ + {"label": "", "width": 20, "matrix": [7, 2]}, + {"label": "caps\nlk", "width": 109, "matrix": [3, 1]}, + {"label": "A", "matrix": [3, 2]}, + {"label": "S", "matrix": [3, 3]}, + {"label": "D", "matrix": [3, 4]}, + {"label": "F", "matrix": [3, 5]}, + {"label": "G", "matrix": [3, 6]}, + {"label": "H", "matrix": [3, 7]}, + {"label": "J", "matrix": [3, 8]}, + {"label": "K", "matrix": [3, 9]}, + {"label": "L", "matrix": [3, 10]}, + {"label": "Ö", "matrix": [3, 11]}, + {"label": "Ä", "matrix": [3, 12]}, + {"label": "#", "matrix": [3, 13]}, + {"label": "enter", "width": 80, "matrix": [3, 14]}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": "4", "matrix": [3, 18]}, + {"label": "5", "matrix": [3, 19]}, + {"label": "6", "matrix": [3, 20]}, + {"label": "+", "disabled": true}, + {"label": "", "width": 20, "matrix": [6, 17]} + ], + "row5": [ + {"label": "", "disabled": true, "width": 20, "matrix": [7, 3]}, + {"label": "shift", "width": 80, "matrix": [4, 1]}, + {"label": "\\", "matrix": [4, 2]}, + {"label": "Y", "matrix": [4, 3]}, + {"label": "X", "matrix": [4, 4]}, + {"label": "C", "matrix": [4, 5]}, + {"label": "V", "matrix": [4, 6]}, + {"label": "B", "matrix": [4, 7]}, + {"label": "N", "matrix": [4, 8]}, + {"label": "M", "matrix": [4, 9]}, + {"label": ",", "matrix": [4, 10]}, + {"label": ".", "matrix": [4, 11]}, + {"label": "-", "matrix": [4, 12]}, + {"label": "shift", "width": 172, "matrix": [4, 14]}, + {"label": null}, + {"label": null}, + {"label": "\ud83e\udc39", "matrix": [4, 16]}, + {"label": null}, + {"label": null}, + {"label": "1", "matrix": [4, 18]}, + {"label": "2", "matrix": [4, 19]}, + {"label": "3", "matrix": [4, 20]}, + {"label": "Enter", "height": 126, "matrix": [4, 21]}, + {"label": "", "disabled": true, "width": 20, "matrix": [6, 18]} + ], + "row6": [ + {"label": "", "width": 20, "matrix": [7, 3]}, + {"label": "ctrl", "width": 94, "matrix": [5, 1]}, + {"label": "\ud83d\udc27", "matrix": [5, 2]}, + {"label": "alt", "width": 94, "matrix": [5, 3]}, + {"label": "space", "width": 388, "matrix": [5, 7]}, + {"label": "alt", "width": 94, "matrix": [5, 11]}, + {"label": "fn", "matrix": [5, 12]}, + {"label": "\u2630", "matrix": [5, 13]}, + {"label": "ctrl", "width": 92, "matrix": [5, 14]}, + {"label": null}, + {"label": "\ud83e\udc38", "matrix": [5, 15]}, + {"label": "\ud83e\udc3b", "matrix": [5, 16]}, + {"label": "\ud83e\udc3a", "matrix": [5, 17]}, + {"label": null}, + {"label": "0", "width": 126, "matrix": [5, 19]}, + {"label": ".", "matrix": [5, 20]}, + {"label": "enter", "disabled": true}, + {"label": "", "width": 20, "matrix": [6, 18]} + ], + "row7": [ + {"label": "", "width": 103, "side": 20, "matrix": [7, 4]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 5]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 6]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 7]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 8]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 9]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 10]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 11]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 12]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 13]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 14]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 15]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 16]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 17]}, + {"label": "", "width": 103, "side": 20, "matrix": [7, 18]} + ], + "row8": [ + {"label": "", "width": 20, "matrix": [8, 0]}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": null}, + {"label": "", "width": 20, "matrix": [8,17]} + ], + "row9": [ + {"label": "", "width": 20, "matrix": [8, 1]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 2]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 3]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 4]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 5]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 6]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 7]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 8]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 9]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 10]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 11]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 12]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 13]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 14]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 15]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 16]}, + {"label": "", "width": 93, "side": 20, "matrix": [8, 19]}, + {"label": "", "width": 20, "matrix": [8,18]} + ] + } +} diff --git a/data/meson.build b/data/meson.build index 2b7c1d8..8ddf12c 100644 --- a/data/meson.build +++ b/data/meson.build @@ -2,6 +2,7 @@ install_data('matrix_layouts/razerblade16.json', 'matrix_layouts/razerdefault22.json', 'matrix_layouts/razerblade25.json', + 'matrix_layouts/razerhunt22.json', install_dir : join_paths(get_option('datadir'), 'razergenie/matrix_layouts')) # Appstream XML diff --git a/src/customeditor/customeditor.cpp b/src/customeditor/customeditor.cpp index 8277f89..345d859 100644 --- a/src/customeditor/customeditor.cpp +++ b/src/customeditor/customeditor.cpp @@ -25,6 +25,7 @@ #include #include #include +#include CustomEditor::CustomEditor(libopenrazer::Device *device, bool launchMatrixDiscovery, QWidget *parent) : QDialog(parent) @@ -42,7 +43,7 @@ CustomEditor::CustomEditor(libopenrazer::Device *device, bool launchMatrixDiscov colors << QVector(dimens.y); for (int j = 0; j < dimens.y; j++) { - colors[i][j] = QColor(Qt::black); + colors[i][j] = QColor(Qt::white); } } @@ -70,6 +71,10 @@ CustomEditor::CustomEditor(libopenrazer::Device *device, bool launchMatrixDiscov if (!parseKeyboardJSON("razerdefault22")) { closeWindow(); } + } else if (dimens.x == 9 && dimens.y == 22) { // Razer Huntsman Elite + if (!parseKeyboardJSON("razerhunt22")) { + closeWindow(); + } } else if (dimens.x == 6 && dimens.y == 25) { // Razer Blade Pro 2017 if (!parseKeyboardJSON("razerblade25")) { closeWindow(); @@ -125,16 +130,22 @@ QLayout *CustomEditor::generateMainControls() QPushButton *btnSet = new QPushButton(tr("Set")); QPushButton *btnClear = new QPushButton(tr("Clear")); QPushButton *btnClearAll = new QPushButton(tr("Clear All")); + QPushButton *btnLoadProfile = new QPushButton(tr("Load profile")); + QPushButton *btnSaveProfile = new QPushButton(tr("Save profile")); hbox->addWidget(btnColor); hbox->addWidget(btnSet); hbox->addWidget(btnClear); hbox->addWidget(btnClearAll); + hbox->addWidget(btnLoadProfile); + hbox->addWidget(btnSaveProfile); connect(btnColor, &QPushButton::clicked, this, &CustomEditor::colorButtonClicked); connect(btnSet, &QPushButton::clicked, this, &CustomEditor::setDrawStatusSet); connect(btnClear, &QPushButton::clicked, this, &CustomEditor::setDrawStatusClear); connect(btnClearAll, &QPushButton::clicked, this, &CustomEditor::clearAll); + connect(btnLoadProfile, &QPushButton::clicked, this, &CustomEditor::loadProfile); + connect(btnSaveProfile, &QPushButton::clicked, this, &CustomEditor::saveProfile); return hbox; } @@ -173,22 +184,22 @@ QLayout *CustomEditor::generateKeyboard() } // Iterate over rows in the object - QJsonObject::const_iterator it; - for (it = keyboardLayout.constBegin(); it != keyboardLayout.constEnd(); ++it) { + for (auto it = keyboardLayout.constBegin(); it != keyboardLayout.constEnd(); ++it) { QJsonArray row = (*it).toArray(); auto *hbox = new QHBoxLayout(); hbox->setAlignment(Qt::AlignLeft); // Iterate over keys in row - QJsonArray::const_iterator jt; - for (jt = row.constBegin(); jt != row.constEnd(); ++jt) { + + for (auto jt = row.constBegin(); jt != row.constEnd(); ++jt) { QJsonObject obj = (*jt).toObject(); if (!obj["label"].isNull()) { MatrixPushButton *btn = new MatrixPushButton(obj["label"].toString()); int width = obj.contains("width") ? obj.value("width").toInt() : 60; - int height = /*obj.contains("height") ? obj.value("height").toInt() : */ 63; + /*int height = obj.contains("height") ? obj.value("height").toInt() : 63;*/ + int height = obj.contains("side") ? obj.value("side").toInt() : 63; btn->setFixedSize(width, height); if (obj.contains("matrix")) { QJsonArray arr = obj["matrix"].toArray(); @@ -375,3 +386,86 @@ void CustomEditor::setDrawStatusClear() { drawStatus = DrawStatus::clear; } + +void CustomEditor::loadProfile() +{ + auto data_loc = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); + + auto fileName = QFileDialog::getOpenFileName(this, tr("Open keyboard profile"), + data_loc, + tr("Profiles (*.rgkeys)")); + if (fileName.isNull()) + return; + + QString val; + QFile file; + file.setFileName(fileName); + file.open(QIODevice::ReadOnly | QIODevice::Text); + val = file.readAll(); + file.close(); + + QJsonDocument d = QJsonDocument::fromJson(val.toUtf8()); + + auto rows = d["mapping"].toArray(); + + auto btn = matrixPushButtons.begin(); + QVector> new_colors(rows.size()); + for (int row = 0; row < rows.size(); ++row) { + auto col = rows[row].toArray(); + QVector col_row(col.size()); + for (int c = 0; c < col.size(); ++c, ++btn) { + QRgb color = col[c].toInt(); + col_row[c] = QColor(color); + } + new_colors[row] = col_row; + } + colors = new_colors; + + for(auto&& btn : matrixPushButtons) { + auto pos = btn->matrixPos(); + btn->setButtonColor(colors[pos.first][pos.second]); + } + + for (int i = 0; i < rows.size(); ++i) { + updateKeyrow(i); + } + +} + +void CustomEditor::saveProfile() +{ + QJsonObject recordObject; + + auto data_loc = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); + + QJsonArray rows; + for (int i = 0; i < colors.size(); ++i) { + QJsonArray cols; + auto& crow = colors[i]; + for (int c = 0; c < crow.size(); ++c) { + cols.insert(c, (int)crow[c].rgb()); + } + rows.insert(i, cols); + } + recordObject.insert("mapping", rows); + QJsonDocument doc(recordObject); + + auto fileName = QFileDialog::getSaveFileName(this, + tr("Save profile to "), data_loc, + tr("Profiles (*.rgkeys)")); + if (!fileName.contains(".rgkeys")) + fileName.append(".rgkeys"); + + if (fileName.isNull()) + return; + QFile out_file(fileName); + if (!out_file.open(QIODevice::WriteOnly | QIODevice::Text)) { + qDebug() << "Error writing config to " << fileName << "\n"; + return; + } + + QTextStream out(&out_file); + out << doc.toJson(); + +} + diff --git a/src/customeditor/customeditor.h b/src/customeditor/customeditor.h index 4bb00a6..3e64531 100644 --- a/src/customeditor/customeditor.h +++ b/src/customeditor/customeditor.h @@ -62,6 +62,9 @@ private slots: void onMatrixPushButtonClicked(); void setDrawStatusSet(); void setDrawStatusClear(); + void loadProfile(); + void saveProfile(); + }; #endif // CUSTOMEDITOR_H