diff options
Diffstat (limited to 'layouts/community/ergodox/algernon/tools')
5 files changed, 0 insertions, 1524 deletions
diff --git a/layouts/community/ergodox/algernon/tools/heatmap-layout.ADORE.json b/layouts/community/ergodox/algernon/tools/heatmap-layout.ADORE.json deleted file mode 100644 index e09efecc4..000000000 --- a/layouts/community/ergodox/algernon/tools/heatmap-layout.ADORE.json +++ /dev/null | |||
| @@ -1,486 +0,0 @@ | |||
| 1 | [ | ||
| 2 | { | ||
| 3 | "backcolor": "#ffffff", | ||
| 4 | "name": "ErgoDox - algernon's layout: Heatmap", | ||
| 5 | "author": "Gergely Nagy <kbd@gergo.csillger.hu>", | ||
| 6 | "notes": "See [here](https://github.com/algernon/ergodox-layout#readme) for the QMK keymap source.", | ||
| 7 | "switchMount": "cherry", | ||
| 8 | "switchBrand": "gateron", | ||
| 9 | "switchType": "KS-3-Tea", | ||
| 10 | "pcb": true, | ||
| 11 | "css": ".keyborder { -webkit-filter: blur(5px); filter: blur(5px); } .keytop { -webkit-filter: blur(10px); } .keylabels { border: 1px solid black; }" | ||
| 12 | }, | ||
| 13 | [ | ||
| 14 | { | ||
| 15 | "x": 3.5, | ||
| 16 | "fa": [ | ||
| 17 | 0, | ||
| 18 | 0, | ||
| 19 | 2 | ||
| 20 | ] | ||
| 21 | }, | ||
| 22 | "*\n5\nF5", | ||
| 23 | { | ||
| 24 | "x": 10.5, | ||
| 25 | "a": 4, | ||
| 26 | "fa": [ | ||
| 27 | 0, | ||
| 28 | 0, | ||
| 29 | 2 | ||
| 30 | ] | ||
| 31 | }, | ||
| 32 | "#\n4\nF4" | ||
| 33 | ], | ||
| 34 | [ | ||
| 35 | { | ||
| 36 | "y": -0.875, | ||
| 37 | "x": 2.5 | ||
| 38 | }, | ||
| 39 | "@\n7\nF7", | ||
| 40 | { | ||
| 41 | "x": 1 | ||
| 42 | }, | ||
| 43 | "^\n3\nF3", | ||
| 44 | { | ||
| 45 | "x": 8.5 | ||
| 46 | }, | ||
| 47 | "!\n2\nF2", | ||
| 48 | { | ||
| 49 | "x": 1 | ||
| 50 | }, | ||
| 51 | "&\n6\nF6" | ||
| 52 | ], | ||
| 53 | [ | ||
| 54 | { | ||
| 55 | "y": -0.875, | ||
| 56 | "x": 5.5 | ||
| 57 | }, | ||
| 58 | "$\n1\nF1", | ||
| 59 | { | ||
| 60 | "a": 7, | ||
| 61 | "f": 3 | ||
| 62 | }, | ||
| 63 | "F11", | ||
| 64 | { | ||
| 65 | "x": 4.5, | ||
| 66 | "f": 3 | ||
| 67 | }, | ||
| 68 | "Fx", | ||
| 69 | { | ||
| 70 | "a": 4, | ||
| 71 | "f": 3, | ||
| 72 | "fa": [ | ||
| 73 | 0, | ||
| 74 | 0, | ||
| 75 | 2 | ||
| 76 | ] | ||
| 77 | }, | ||
| 78 | "%\n0\nF10" | ||
| 79 | ], | ||
| 80 | [ | ||
| 81 | { | ||
| 82 | "y": -0.875, | ||
| 83 | "f": 9, | ||
| 84 | "a": 6, | ||
| 85 | "w": 1.5 | ||
| 86 | }, | ||
| 87 | "\n\n<i class='kb kb-Multimedia-Play-Pause'></i>", | ||
| 88 | { | ||
| 89 | "f": 3, | ||
| 90 | "a": 4, | ||
| 91 | "fa": [ | ||
| 92 | 0, | ||
| 93 | 0, | ||
| 94 | 2 | ||
| 95 | ] | ||
| 96 | }, | ||
| 97 | " \n9\nF9", | ||
| 98 | { | ||
| 99 | "x": 14.5 | ||
| 100 | }, | ||
| 101 | " \n8\nF8", | ||
| 102 | { | ||
| 103 | "a": 7, | ||
| 104 | "w": 1.5 | ||
| 105 | }, | ||
| 106 | "STENO" | ||
| 107 | ], | ||
| 108 | [ | ||
| 109 | { | ||
| 110 | "y": -0.375, | ||
| 111 | "x": 3.5, | ||
| 112 | "a": 6 | ||
| 113 | }, | ||
| 114 | "C", | ||
| 115 | { | ||
| 116 | "x": 10.5 | ||
| 117 | }, | ||
| 118 | "L" | ||
| 119 | ], | ||
| 120 | [ | ||
| 121 | { | ||
| 122 | "y": -0.875, | ||
| 123 | "x": 2.5, | ||
| 124 | "a": 6 | ||
| 125 | }, | ||
| 126 | "W", | ||
| 127 | { | ||
| 128 | "x": 1, | ||
| 129 | "a": 6 | ||
| 130 | }, | ||
| 131 | "H", | ||
| 132 | { | ||
| 133 | "x": 8.5 | ||
| 134 | }, | ||
| 135 | "G", | ||
| 136 | { | ||
| 137 | "x": 1 | ||
| 138 | }, | ||
| 139 | "P" | ||
| 140 | ], | ||
| 141 | [ | ||
| 142 | { | ||
| 143 | "y": -0.875, | ||
| 144 | "x": 5.5 | ||
| 145 | }, | ||
| 146 | "F", | ||
| 147 | { | ||
| 148 | "a": 4, | ||
| 149 | "fa": [0, 0, 0], | ||
| 150 | "h": 1.5 | ||
| 151 | }, | ||
| 152 | "{\n(\n[", | ||
| 153 | { | ||
| 154 | "x": 4.5, | ||
| 155 | "h": 1.5 | ||
| 156 | }, | ||
| 157 | "}\n)\n]", | ||
| 158 | { | ||
| 159 | "a": 6 | ||
| 160 | }, | ||
| 161 | "M" | ||
| 162 | ], | ||
| 163 | [ | ||
| 164 | { | ||
| 165 | "y": -0.875, | ||
| 166 | "f": 3, | ||
| 167 | "a": 4, | ||
| 168 | "w": 1.5 | ||
| 169 | }, | ||
| 170 | "\n\n|\n\\", | ||
| 171 | { | ||
| 172 | "a": 6, | ||
| 173 | "f": 3 | ||
| 174 | }, | ||
| 175 | "X", | ||
| 176 | { | ||
| 177 | "x": 14.5, | ||
| 178 | "a": 4 | ||
| 179 | }, | ||
| 180 | "/\n?", | ||
| 181 | { | ||
| 182 | "a": 4, | ||
| 183 | "w": 1.5 | ||
| 184 | }, | ||
| 185 | "~\n`" | ||
| 186 | ], | ||
| 187 | [ | ||
| 188 | { | ||
| 189 | "y": -0.375, | ||
| 190 | "x": 3.5, | ||
| 191 | "a": 6 | ||
| 192 | }, | ||
| 193 | "E", | ||
| 194 | { | ||
| 195 | "x": 10.5 | ||
| 196 | }, | ||
| 197 | "T" | ||
| 198 | ], | ||
| 199 | [ | ||
| 200 | { | ||
| 201 | "y": -0.875, | ||
| 202 | "x": 2.5 | ||
| 203 | }, | ||
| 204 | "O", | ||
| 205 | { | ||
| 206 | "x": 1, | ||
| 207 | "n": true | ||
| 208 | }, | ||
| 209 | "I", | ||
| 210 | { | ||
| 211 | "x": 8.5, | ||
| 212 | "n": true | ||
| 213 | }, | ||
| 214 | "R", | ||
| 215 | { | ||
| 216 | "x": 1 | ||
| 217 | }, | ||
| 218 | "N" | ||
| 219 | ], | ||
| 220 | [ | ||
| 221 | { | ||
| 222 | "y": -0.875, | ||
| 223 | "x": 5.5 | ||
| 224 | }, | ||
| 225 | "U", | ||
| 226 | { | ||
| 227 | "x": 6.5 | ||
| 228 | }, | ||
| 229 | "D" | ||
| 230 | ], | ||
| 231 | [ | ||
| 232 | { | ||
| 233 | "y": -0.875, | ||
| 234 | "fa": [ | ||
| 235 | 6 | ||
| 236 | ], | ||
| 237 | "w": 1.5 | ||
| 238 | }, | ||
| 239 | "<i class='fa fa-arrows'></i>\n\nTab", | ||
| 240 | { | ||
| 241 | "f": 3 | ||
| 242 | }, | ||
| 243 | "A", | ||
| 244 | { | ||
| 245 | "x": 14.5, | ||
| 246 | "f": 3 | ||
| 247 | }, | ||
| 248 | "S", | ||
| 249 | { | ||
| 250 | "a": 4, | ||
| 251 | "fa": [ | ||
| 252 | 0, | ||
| 253 | 0, | ||
| 254 | 0, | ||
| 255 | 0, | ||
| 256 | 0, | ||
| 257 | 0, | ||
| 258 | 0, | ||
| 259 | 6 | ||
| 260 | ], | ||
| 261 | "w": 1.5 | ||
| 262 | }, | ||
| 263 | "+\n=" | ||
| 264 | ], | ||
| 265 | [ | ||
| 266 | { | ||
| 267 | "y": -0.625, | ||
| 268 | "x": 6.5, | ||
| 269 | "a": 7, | ||
| 270 | "f": 9, | ||
| 271 | "h": 1.5 | ||
| 272 | }, | ||
| 273 | "<i class='fa fa-columns'></i>", | ||
| 274 | { | ||
| 275 | "x": 4.5, | ||
| 276 | "h": 1.5 | ||
| 277 | }, | ||
| 278 | "<i class='fa fa-table'></i>" | ||
| 279 | ], | ||
| 280 | [ | ||
| 281 | { | ||
| 282 | "y": -0.75, | ||
| 283 | "x": 3.5, | ||
| 284 | "a": 4, | ||
| 285 | "f": 3 | ||
| 286 | }, | ||
| 287 | "\"\n'", | ||
| 288 | { | ||
| 289 | "x": 10.5, | ||
| 290 | "a": 6, | ||
| 291 | "f": 3 | ||
| 292 | }, | ||
| 293 | "V" | ||
| 294 | ], | ||
| 295 | [ | ||
| 296 | { | ||
| 297 | "y": -0.875, | ||
| 298 | "x": 2.5, | ||
| 299 | "a": 6 | ||
| 300 | }, | ||
| 301 | "Q", | ||
| 302 | { | ||
| 303 | "x": 1, | ||
| 304 | "a": 4 | ||
| 305 | }, | ||
| 306 | "<\n,", | ||
| 307 | { | ||
| 308 | "x": 8.5, | ||
| 309 | "a": 6 | ||
| 310 | }, | ||
| 311 | "K", | ||
| 312 | { | ||
| 313 | "x": 1 | ||
| 314 | }, | ||
| 315 | "Y" | ||
| 316 | ], | ||
| 317 | [ | ||
| 318 | { | ||
| 319 | "y": -0.875, | ||
| 320 | "x": 5.5, | ||
| 321 | "a": 4 | ||
| 322 | }, | ||
| 323 | ">\n.", | ||
| 324 | { | ||
| 325 | "x": 6.5, | ||
| 326 | "a": 6 | ||
| 327 | }, | ||
| 328 | "B" | ||
| 329 | ], | ||
| 330 | [ | ||
| 331 | { | ||
| 332 | "y": -0.875, | ||
| 333 | "f": 9, | ||
| 334 | "w": 1.5, | ||
| 335 | "g": true | ||
| 336 | }, | ||
| 337 | "", | ||
| 338 | { | ||
| 339 | "a": 6, | ||
| 340 | "f": 3, | ||
| 341 | "g": false | ||
| 342 | }, | ||
| 343 | "Z", | ||
| 344 | { | ||
| 345 | "x": 14.5 | ||
| 346 | }, | ||
| 347 | "J", | ||
| 348 | { | ||
| 349 | "f": 9, | ||
| 350 | "g": true, | ||
| 351 | "w": 1.5, | ||
| 352 | "a": 4 | ||
| 353 | }, | ||
| 354 | "" | ||
| 355 | ], | ||
| 356 | [ | ||
| 357 | { | ||
| 358 | "y": -0.375, | ||
| 359 | "x": 3.5, | ||
| 360 | "g": true, | ||
| 361 | "a": 7, | ||
| 362 | "f": 3 | ||
| 363 | }, | ||
| 364 | "", | ||
| 365 | { | ||
| 366 | "x": 10.5 | ||
| 367 | }, | ||
| 368 | "" | ||
| 369 | ], | ||
| 370 | [ | ||
| 371 | { | ||
| 372 | "y": -0.875, | ||
| 373 | "x": 2.5 | ||
| 374 | }, | ||
| 375 | "", | ||
| 376 | { | ||
| 377 | "x": 1, | ||
| 378 | "g": false, | ||
| 379 | "a": 5 | ||
| 380 | }, | ||
| 381 | ";\n:", | ||
| 382 | { | ||
| 383 | "x": 8.5 | ||
| 384 | }, | ||
| 385 | "_\n-", | ||
| 386 | { | ||
| 387 | "x": 1, | ||
| 388 | "g": true, | ||
| 389 | "a": 7 | ||
| 390 | }, | ||
| 391 | "" | ||
| 392 | ], | ||
| 393 | [ | ||
| 394 | { | ||
| 395 | "y": -0.75, | ||
| 396 | "x": 0.5 | ||
| 397 | }, | ||
| 398 | "", | ||
| 399 | {}, | ||
| 400 | "", | ||
| 401 | { | ||
| 402 | "x": 14.5 | ||
| 403 | }, | ||
| 404 | "", | ||
| 405 | {}, | ||
| 406 | "" | ||
| 407 | ], | ||
| 408 | [ | ||
| 409 | { | ||
| 410 | "r": 30, | ||
| 411 | "rx": 6.5, | ||
| 412 | "ry": 4.25, | ||
| 413 | "y": -1, | ||
| 414 | "x": 1, | ||
| 415 | "g": false | ||
| 416 | }, | ||
| 417 | "Alt", | ||
| 418 | { | ||
| 419 | "a": 4, | ||
| 420 | "fa": [ | ||
| 421 | 0, | ||
| 422 | 0, | ||
| 423 | 0, | ||
| 424 | 9 | ||
| 425 | ] | ||
| 426 | }, | ||
| 427 | "\n\n\n<i class='kb kb-logo-linux-debian fa-large'></i>" | ||
| 428 | ], | ||
| 429 | [ | ||
| 430 | { | ||
| 431 | "a": 7, | ||
| 432 | "f": 9, | ||
| 433 | "h": 2 | ||
| 434 | }, | ||
| 435 | "<i class='kb kb-Unicode-BackSpace-DeleteLeft-Big'></i>", | ||
| 436 | { | ||
| 437 | "h": 2 | ||
| 438 | }, | ||
| 439 | "<i class='fa fa-angle-double-up'></i>", | ||
| 440 | { | ||
| 441 | "f": 3 | ||
| 442 | }, | ||
| 443 | "Ctrl" | ||
| 444 | ], | ||
| 445 | [ | ||
| 446 | { | ||
| 447 | "x": 2 | ||
| 448 | }, | ||
| 449 | "ESC" | ||
| 450 | ], | ||
| 451 | [ | ||
| 452 | { | ||
| 453 | "r": -30, | ||
| 454 | "rx": 13, | ||
| 455 | "y": -1, | ||
| 456 | "x": -3, | ||
| 457 | "f": 2 | ||
| 458 | }, | ||
| 459 | "MEDIA", | ||
| 460 | {}, | ||
| 461 | "DEL" | ||
| 462 | ], | ||
| 463 | [ | ||
| 464 | { | ||
| 465 | "x": -3 | ||
| 466 | }, | ||
| 467 | "HUN", | ||
| 468 | { | ||
| 469 | "f": 9, | ||
| 470 | "h": 2 | ||
| 471 | }, | ||
| 472 | "<i class='kb kb-Return-2'></i>", | ||
| 473 | { | ||
| 474 | "f": 3, | ||
| 475 | "h": 2 | ||
| 476 | }, | ||
| 477 | "SPC" | ||
| 478 | ], | ||
| 479 | [ | ||
| 480 | { | ||
| 481 | "x": -3, | ||
| 482 | "f": 2 | ||
| 483 | }, | ||
| 484 | "LEAD" | ||
| 485 | ] | ||
| 486 | ] | ||
diff --git a/layouts/community/ergodox/algernon/tools/heatmap-layout.Dvorak.json b/layouts/community/ergodox/algernon/tools/heatmap-layout.Dvorak.json deleted file mode 100644 index 1e53281c5..000000000 --- a/layouts/community/ergodox/algernon/tools/heatmap-layout.Dvorak.json +++ /dev/null | |||
| @@ -1,477 +0,0 @@ | |||
| 1 | [ | ||
| 2 | { | ||
| 3 | "backcolor": "#ffffff", | ||
| 4 | "name": "ErgoDox - algernon's layout: Heatmap", | ||
| 5 | "author": "Gergely Nagy <kbd@gergo.csillger.hu>", | ||
| 6 | "notes": "See [here](https://github.com/algernon/ergodox-layout#readme) for the QMK keymap source.", | ||
| 7 | "switchMount": "cherry", | ||
| 8 | "switchBrand": "gateron", | ||
| 9 | "switchType": "KS-3-Tea", | ||
| 10 | "pcb": true, | ||
| 11 | "css": ".keyborder { -webkit-filter: blur(5px); filter: blur(5px); } .keytop { -webkit-filter: blur(10px); } .keylabels { border: 1px solid black; }" | ||
| 12 | }, | ||
| 13 | [ | ||
| 14 | { | ||
| 15 | "x": 3.5, | ||
| 16 | "fa": [ | ||
| 17 | 0, | ||
| 18 | 0, | ||
| 19 | 2 | ||
| 20 | ] | ||
| 21 | }, | ||
| 22 | "*\n5\nF5", | ||
| 23 | { | ||
| 24 | "x": 10.5, | ||
| 25 | "a": 4, | ||
| 26 | "fa": [ | ||
| 27 | 0, | ||
| 28 | 0, | ||
| 29 | 2 | ||
| 30 | ] | ||
| 31 | }, | ||
| 32 | "#\n4\nF4" | ||
| 33 | ], | ||
| 34 | [ | ||
| 35 | { | ||
| 36 | "y": -0.875, | ||
| 37 | "x": 2.5 | ||
| 38 | }, | ||
| 39 | "@\n7\nF7", | ||
| 40 | { | ||
| 41 | "x": 1 | ||
| 42 | }, | ||
| 43 | "^\n3\nF3", | ||
| 44 | { | ||
| 45 | "x": 8.5 | ||
| 46 | }, | ||
| 47 | "!\n2\nF2", | ||
| 48 | { | ||
| 49 | "x": 1 | ||
| 50 | }, | ||
| 51 | "&\n6\nF6" | ||
| 52 | ], | ||
| 53 | [ | ||
| 54 | { | ||
| 55 | "y": -0.875, | ||
| 56 | "x": 5.5 | ||
| 57 | }, | ||
| 58 | "$\n1\nF1", | ||
| 59 | { | ||
| 60 | "a": 7, | ||
| 61 | "f": 3 | ||
| 62 | }, | ||
| 63 | "F11", | ||
| 64 | { | ||
| 65 | "x": 4.5, | ||
| 66 | "f": 3 | ||
| 67 | }, | ||
| 68 | "Fx", | ||
| 69 | { | ||
| 70 | "a": 4, | ||
| 71 | "f": 3, | ||
| 72 | "fa": [ | ||
| 73 | 0, | ||
| 74 | 0, | ||
| 75 | 2 | ||
| 76 | ] | ||
| 77 | }, | ||
| 78 | "%\n0\nF10" | ||
| 79 | ], | ||
| 80 | [ | ||
| 81 | { | ||
| 82 | "y": -0.875, | ||
| 83 | "f": 6, | ||
| 84 | "a": 6, | ||
| 85 | "w": 1.5 | ||
| 86 | }, | ||
| 87 | "<i class='fa fa-fast-backward'></i>\n\n<i class='fa fa-fast-forward'></i>", | ||
| 88 | { | ||
| 89 | "f": 3, | ||
| 90 | "a": 4, | ||
| 91 | "fa": [ | ||
| 92 | 0, | ||
| 93 | 0, | ||
| 94 | 2 | ||
| 95 | ] | ||
| 96 | |||
| 97 | }, | ||
| 98 | " \n9\nF9", | ||
| 99 | { | ||
| 100 | "x": 14.5 | ||
| 101 | }, | ||
| 102 | " \n8\nF8", | ||
| 103 | { | ||
| 104 | "a": 7, | ||
| 105 | "w": 1.5 | ||
| 106 | }, | ||
| 107 | "STENO" | ||
| 108 | ], | ||
| 109 | [ | ||
| 110 | { | ||
| 111 | "y": -0.375, | ||
| 112 | "x": 3.5, | ||
| 113 | "a": 4 | ||
| 114 | }, | ||
| 115 | ">\n.", | ||
| 116 | { | ||
| 117 | "x": 10.5, | ||
| 118 | "a": 6 | ||
| 119 | }, | ||
| 120 | "C" | ||
| 121 | ], | ||
| 122 | [ | ||
| 123 | { | ||
| 124 | "y": -0.875, | ||
| 125 | "x": 2.5, | ||
| 126 | "a": 4 | ||
| 127 | }, | ||
| 128 | "<\n,", | ||
| 129 | { | ||
| 130 | "x": 1, | ||
| 131 | "a": 6 | ||
| 132 | }, | ||
| 133 | "P", | ||
| 134 | { | ||
| 135 | "x": 8.5 | ||
| 136 | }, | ||
| 137 | "G", | ||
| 138 | { | ||
| 139 | "x": 1 | ||
| 140 | }, | ||
| 141 | "R" | ||
| 142 | ], | ||
| 143 | [ | ||
| 144 | { | ||
| 145 | "y": -0.875, | ||
| 146 | "x": 5.5 | ||
| 147 | }, | ||
| 148 | "Y", | ||
| 149 | { | ||
| 150 | "a": 4, | ||
| 151 | "h": 1.5 | ||
| 152 | }, | ||
| 153 | "{\n(\n[", | ||
| 154 | { | ||
| 155 | "x": 4.5, | ||
| 156 | "h": 1.5 | ||
| 157 | }, | ||
| 158 | "}\n)\n]", | ||
| 159 | { | ||
| 160 | "a": 6 | ||
| 161 | }, | ||
| 162 | "F" | ||
| 163 | ], | ||
| 164 | [ | ||
| 165 | { | ||
| 166 | "y": -0.875, | ||
| 167 | "f": 3, | ||
| 168 | "a": 4, | ||
| 169 | "w": 1.5 | ||
| 170 | }, | ||
| 171 | "\n\n~\n`", | ||
| 172 | { | ||
| 173 | "a": 4, | ||
| 174 | "f": 3 | ||
| 175 | }, | ||
| 176 | "\"\n'", | ||
| 177 | { | ||
| 178 | "x": 14.5, | ||
| 179 | "a": 6 | ||
| 180 | }, | ||
| 181 | "L", | ||
| 182 | { | ||
| 183 | "a": 4, | ||
| 184 | "w": 1.5 | ||
| 185 | }, | ||
| 186 | "|\n\\" | ||
| 187 | ], | ||
| 188 | [ | ||
| 189 | { | ||
| 190 | "y": -0.375, | ||
| 191 | "x": 3.5, | ||
| 192 | "a": 6 | ||
| 193 | }, | ||
| 194 | "E", | ||
| 195 | { | ||
| 196 | "x": 10.5 | ||
| 197 | }, | ||
| 198 | "T" | ||
| 199 | ], | ||
| 200 | [ | ||
| 201 | { | ||
| 202 | "y": -0.875, | ||
| 203 | "x": 2.5 | ||
| 204 | }, | ||
| 205 | "O", | ||
| 206 | { | ||
| 207 | "x": 1, | ||
| 208 | "n": true | ||
| 209 | }, | ||
| 210 | "U", | ||
| 211 | { | ||
| 212 | "x": 8.5, | ||
| 213 | "n": true | ||
| 214 | }, | ||
| 215 | "H", | ||
| 216 | { | ||
| 217 | "x": 1 | ||
| 218 | }, | ||
| 219 | "N" | ||
| 220 | ], | ||
| 221 | [ | ||
| 222 | { | ||
| 223 | "y": -0.875, | ||
| 224 | "x": 5.5 | ||
| 225 | }, | ||
| 226 | "I", | ||
| 227 | { | ||
| 228 | "x": 6.5 | ||
| 229 | }, | ||
| 230 | "D" | ||
| 231 | ], | ||
| 232 | [ | ||
| 233 | { | ||
| 234 | "y": -0.875, | ||
| 235 | "fa": [ | ||
| 236 | 6 | ||
| 237 | ], | ||
| 238 | "w": 1.5 | ||
| 239 | }, | ||
| 240 | "<i class='fa fa-arrows'></i>\n\nTab", | ||
| 241 | { | ||
| 242 | "f": 3 | ||
| 243 | }, | ||
| 244 | "A", | ||
| 245 | { | ||
| 246 | "x": 14.5, | ||
| 247 | "f": 3 | ||
| 248 | }, | ||
| 249 | "S", | ||
| 250 | { | ||
| 251 | "a": 4, | ||
| 252 | "fa": [ | ||
| 253 | 0, | ||
| 254 | 0, | ||
| 255 | 0, | ||
| 256 | 0, | ||
| 257 | 0, | ||
| 258 | 0, | ||
| 259 | 0, | ||
| 260 | 6 | ||
| 261 | ], | ||
| 262 | "w": 1.5 | ||
| 263 | }, | ||
| 264 | "+\n=" | ||
| 265 | ], | ||
| 266 | [ | ||
| 267 | { | ||
| 268 | "y": -0.625, | ||
| 269 | "x": 6.5, | ||
| 270 | "a": 7, | ||
| 271 | "f": 9, | ||
| 272 | "h": 1.5 | ||
| 273 | }, | ||
| 274 | "<i class='fa fa-columns'></i>", | ||
| 275 | { | ||
| 276 | "x": 4.5, | ||
| 277 | "h": 1.5 | ||
| 278 | }, | ||
| 279 | "<i class='fa fa-table'></i>" | ||
| 280 | ], | ||
| 281 | [ | ||
| 282 | { | ||
| 283 | "y": -0.75, | ||
| 284 | "x": 3.5, | ||
| 285 | "f": 3, | ||
| 286 | "a": 6 | ||
| 287 | }, | ||
| 288 | "J", | ||
| 289 | { | ||
| 290 | "x": 10.5 | ||
| 291 | }, | ||
| 292 | "W" | ||
| 293 | ], | ||
| 294 | [ | ||
| 295 | { | ||
| 296 | "y": -0.875, | ||
| 297 | "x": 2.5 | ||
| 298 | }, | ||
| 299 | "Q", | ||
| 300 | { | ||
| 301 | "x": 1 | ||
| 302 | }, | ||
| 303 | "K", | ||
| 304 | { | ||
| 305 | "x": 8.5 | ||
| 306 | }, | ||
| 307 | "M", | ||
| 308 | { | ||
| 309 | "x": 1 | ||
| 310 | }, | ||
| 311 | "V" | ||
| 312 | ], | ||
| 313 | [ | ||
| 314 | { | ||
| 315 | "y": -0.875, | ||
| 316 | "x": 5.5 | ||
| 317 | }, | ||
| 318 | "X", | ||
| 319 | { | ||
| 320 | "x": 6.5 | ||
| 321 | }, | ||
| 322 | "B" | ||
| 323 | ], | ||
| 324 | [ | ||
| 325 | { | ||
| 326 | "y": -0.875, | ||
| 327 | "f": 9, | ||
| 328 | "w": 1.5 | ||
| 329 | }, | ||
| 330 | "\n\n<i class='kb kb-Multimedia-Play-Pause'></i>", | ||
| 331 | { | ||
| 332 | "a": 4, | ||
| 333 | "f": 3 | ||
| 334 | }, | ||
| 335 | "?\n/", | ||
| 336 | { | ||
| 337 | "x": 14.5, | ||
| 338 | "a": 6 | ||
| 339 | }, | ||
| 340 | "Z", | ||
| 341 | { | ||
| 342 | "f": 9, | ||
| 343 | "w": 1.5 | ||
| 344 | }, | ||
| 345 | "<i class='kb kb-Multimedia-Stop'></i>" | ||
| 346 | ], | ||
| 347 | [ | ||
| 348 | { | ||
| 349 | "y": -0.375, | ||
| 350 | "x": 3.5, | ||
| 351 | "g": true, | ||
| 352 | "a": 7, | ||
| 353 | "f": 3 | ||
| 354 | }, | ||
| 355 | "", | ||
| 356 | { | ||
| 357 | "x": 10.5 | ||
| 358 | }, | ||
| 359 | "" | ||
| 360 | ], | ||
| 361 | [ | ||
| 362 | { | ||
| 363 | "y": -0.875, | ||
| 364 | "x": 2.5 | ||
| 365 | }, | ||
| 366 | "", | ||
| 367 | { | ||
| 368 | "x": 1, | ||
| 369 | "g": false, | ||
| 370 | "a": 5 | ||
| 371 | }, | ||
| 372 | ";\n:", | ||
| 373 | { | ||
| 374 | "x": 8.5 | ||
| 375 | }, | ||
| 376 | "_\n-", | ||
| 377 | { | ||
| 378 | "x": 1, | ||
| 379 | "g": true, | ||
| 380 | "a": 7 | ||
| 381 | }, | ||
| 382 | "" | ||
| 383 | ], | ||
| 384 | [ | ||
| 385 | { | ||
| 386 | "y": -0.75, | ||
| 387 | "x": 0.5 | ||
| 388 | }, | ||
| 389 | "", | ||
| 390 | {}, | ||
| 391 | "", | ||
| 392 | { | ||
| 393 | "x": 14.5 | ||
| 394 | }, | ||
| 395 | "", | ||
| 396 | {}, | ||
| 397 | "" | ||
| 398 | ], | ||
| 399 | [ | ||
| 400 | { | ||
| 401 | "r": 30, | ||
| 402 | "rx": 6.5, | ||
| 403 | "ry": 4.25, | ||
| 404 | "y": -1, | ||
| 405 | "x": 1, | ||
| 406 | "g": false | ||
| 407 | }, | ||
| 408 | "Alt", | ||
| 409 | { | ||
| 410 | "a": 4, | ||
| 411 | "fa": [ | ||
| 412 | 0, | ||
| 413 | 0, | ||
| 414 | 0, | ||
| 415 | 9 | ||
| 416 | ] | ||
| 417 | }, | ||
| 418 | "\n\n\n<i class='kb kb-logo-linux-debian fa-large'></i>" | ||
| 419 | ], | ||
| 420 | [ | ||
| 421 | { | ||
| 422 | "a": 7, | ||
| 423 | "f": 9, | ||
| 424 | "h": 2 | ||
| 425 | }, | ||
| 426 | "<i class='kb kb-Unicode-BackSpace-DeleteLeft-Big'></i>", | ||
| 427 | { | ||
| 428 | "h": 2 | ||
| 429 | }, | ||
| 430 | "<i class='fa fa-angle-double-up'></i>", | ||
| 431 | { | ||
| 432 | "f": 3 | ||
| 433 | }, | ||
| 434 | "Ctrl" | ||
| 435 | ], | ||
| 436 | [ | ||
| 437 | { | ||
| 438 | "x": 2 | ||
| 439 | }, | ||
| 440 | "ESC" | ||
| 441 | ], | ||
| 442 | [ | ||
| 443 | { | ||
| 444 | "r": -30, | ||
| 445 | "rx": 13, | ||
| 446 | "y": -1, | ||
| 447 | "x": -3, | ||
| 448 | "f": 2 | ||
| 449 | }, | ||
| 450 | "MEDIA", | ||
| 451 | {}, | ||
| 452 | "DEL" | ||
| 453 | ], | ||
| 454 | [ | ||
| 455 | { | ||
| 456 | "x": -3 | ||
| 457 | }, | ||
| 458 | "LEAD", | ||
| 459 | { | ||
| 460 | "f": 9, | ||
| 461 | "h": 2 | ||
| 462 | }, | ||
| 463 | "<i class='kb kb-Return-2'></i>", | ||
| 464 | { | ||
| 465 | "f": 3, | ||
| 466 | "h": 2 | ||
| 467 | }, | ||
| 468 | "SPC" | ||
| 469 | ], | ||
| 470 | [ | ||
| 471 | { | ||
| 472 | "x": -3, | ||
| 473 | "f": 2 | ||
| 474 | }, | ||
| 475 | "HUN" | ||
| 476 | ] | ||
| 477 | ] | ||
diff --git a/layouts/community/ergodox/algernon/tools/hid-commands b/layouts/community/ergodox/algernon/tools/hid-commands deleted file mode 100755 index 86bff2978..000000000 --- a/layouts/community/ergodox/algernon/tools/hid-commands +++ /dev/null | |||
| @@ -1,113 +0,0 @@ | |||
| 1 | #!/bin/bash | ||
| 2 | set -e | ||
| 3 | |||
| 4 | LAST_APPSEL_START=0 | ||
| 5 | |||
| 6 | cmd_wm () { | ||
| 7 | WIN="$(xdotool getactivewindow)" | ||
| 8 | wmctrl -i -r ${WIN} -b remove,maximized_vert,maximized_horz | ||
| 9 | xdotool windowsize ${WIN} 100% 100% | ||
| 10 | wmctrl -i -r ${WIN} -b add,maximized_vert,maximized_horz | ||
| 11 | } | ||
| 12 | |||
| 13 | cmd_appsel_helper () { | ||
| 14 | rofi -show window | ||
| 15 | } | ||
| 16 | |||
| 17 | _cmd_appsel () { | ||
| 18 | wmctrl -x -a $1 || true | ||
| 19 | xdotool key Escape | ||
| 20 | } | ||
| 21 | |||
| 22 | cmd_appsel_music () { | ||
| 23 | wmctrl -x -a rhythmbox || wmctrl -x -a spotify || \ | ||
| 24 | wmctrl -x -a banshee || wmctrl -x -a kodi || \ | ||
| 25 | wmctrl -x -a plex || true | ||
| 26 | xdotool key Escape | ||
| 27 | } | ||
| 28 | |||
| 29 | cmd_appsel_slack () { | ||
| 30 | wmctrl -x -a slack || wmctrl -x -a Mstdn || true | ||
| 31 | xdotool key Escape | ||
| 32 | } | ||
| 33 | |||
| 34 | cmd_appsel_emacs () { | ||
| 35 | _cmd_appsel emacs | ||
| 36 | } | ||
| 37 | |||
| 38 | cmd_appsel_term () { | ||
| 39 | _cmd_appsel gnome-terminal | ||
| 40 | } | ||
| 41 | |||
| 42 | cmd_appsel_chrome () { | ||
| 43 | wmctrl -x -a chrom || wmctrl -x -a Chrome || true | ||
| 44 | xdotool key Escape | ||
| 45 | } | ||
| 46 | |||
| 47 | cmd_appsel_start () { | ||
| 48 | if [ ! -z "${DISABLE_APPSEL_START}" ]; then | ||
| 49 | return | ||
| 50 | fi | ||
| 51 | |||
| 52 | APPSEL_START=$(date +%s) | ||
| 53 | if [ $APPSEL_START -lt $(expr $LAST_APPSEL_START + 10) ]; then | ||
| 54 | return | ||
| 55 | fi | ||
| 56 | LAST_APPSEL_START=$APPSEL_START | ||
| 57 | notify-send -t 1000 "Please select an application!" -c device -u low \ | ||
| 58 | -i /usr/share/icons/Adwaita/24x24/devices/video-display.png | ||
| 59 | } | ||
| 60 | |||
| 61 | cmd_appsel_social () { | ||
| 62 | # Save the current window | ||
| 63 | a=$(xdotool getactivewindow) | ||
| 64 | # Raise & Focus Mstdn & Tweetdeck | ||
| 65 | wmctrl -x -a trunk.mad-scientist.club.Google-chrome || true; wmctrl -x -a tweetdeck || true | ||
| 66 | # Focus the previously active window | ||
| 67 | xdotool windowfocus $a || true; xdotool windowactivate $a || true | ||
| 68 | |||
| 69 | xdotool key Escape | ||
| 70 | } | ||
| 71 | |||
| 72 | cmd_appsel_social2 () { | ||
| 73 | # Save the current window | ||
| 74 | a=$(xdotool getactivewindow) | ||
| 75 | # Raise & Focus Viber & Signal | ||
| 76 | wmctrl -x -a Viber || true; wmctrl -a Signal || true | ||
| 77 | # Focus the previously active window | ||
| 78 | xdotool windowfocus $a || true; xdotool windowactivate $a || true | ||
| 79 | |||
| 80 | xdotool key Escape | ||
| 81 | } | ||
| 82 | |||
| 83 | cmd_appsel_pwmgr () { | ||
| 84 | _cmd_appsel keepass | ||
| 85 | } | ||
| 86 | |||
| 87 | cmd_reflash () { | ||
| 88 | teensy_loader_cli -v -w ~/src/ext/qmk_firmware/algernon.hex --mcu atmega32u4 || true | ||
| 89 | } | ||
| 90 | |||
| 91 | cmd_help () { | ||
| 92 | cat <<EOF | ||
| 93 | Use the source, Luke! | ||
| 94 | EOF | ||
| 95 | } | ||
| 96 | |||
| 97 | while read l; do | ||
| 98 | case "$l" in | ||
| 99 | "CMD:"*) | ||
| 100 | ;; | ||
| 101 | *) | ||
| 102 | continue | ||
| 103 | ;; | ||
| 104 | esac | ||
| 105 | |||
| 106 | cmd="$(echo $l | cut -d: -f2-)" | ||
| 107 | |||
| 108 | echo "Got command: ${cmd}" | ||
| 109 | |||
| 110 | if type cmd_${cmd} >/dev/null 2>&1; then | ||
| 111 | cmd_${cmd} | ||
| 112 | fi | ||
| 113 | done | ||
diff --git a/layouts/community/ergodox/algernon/tools/log-to-heatmap.py b/layouts/community/ergodox/algernon/tools/log-to-heatmap.py deleted file mode 100755 index 5f52d9932..000000000 --- a/layouts/community/ergodox/algernon/tools/log-to-heatmap.py +++ /dev/null | |||
| @@ -1,342 +0,0 @@ | |||
| 1 | #! /usr/bin/env python3 | ||
| 2 | import json | ||
| 3 | import os | ||
| 4 | import sys | ||
| 5 | import re | ||
| 6 | import argparse | ||
| 7 | import time | ||
| 8 | |||
| 9 | from math import floor | ||
| 10 | from os.path import dirname | ||
| 11 | from blessings import Terminal | ||
| 12 | |||
| 13 | class Heatmap(object): | ||
| 14 | coords = [ | ||
| 15 | [ | ||
| 16 | # Row 0 | ||
| 17 | [ 4, 0], [ 4, 2], [ 2, 0], [ 1, 0], [ 2, 2], [ 3, 0], [ 3, 2], | ||
| 18 | [ 3, 4], [ 3, 6], [ 2, 4], [ 1, 2], [ 2, 6], [ 4, 4], [ 4, 6], | ||
| 19 | ], | ||
| 20 | [ | ||
| 21 | # Row 1 | ||
| 22 | [ 8, 0], [ 8, 2], [ 6, 0], [ 5, 0], [ 6, 2], [ 7, 0], [ 7, 2], | ||
| 23 | [ 7, 4], [ 7, 6], [ 6, 4], [ 5, 2], [ 6, 6], [ 8, 4], [ 8, 6], | ||
| 24 | ], | ||
| 25 | [ | ||
| 26 | # Row 2 | ||
| 27 | [12, 0], [12, 2], [10, 0], [ 9, 0], [10, 2], [11, 0], [ ], | ||
| 28 | [ ], [11, 2], [10, 4], [ 9, 2], [10, 6], [12, 4], [12, 6], | ||
| 29 | ], | ||
| 30 | [ | ||
| 31 | # Row 3 | ||
| 32 | [17, 0], [17, 2], [15, 0], [14, 0], [15, 2], [16, 0], [13, 0], | ||
| 33 | [13, 2], [16, 2], [15, 4], [14, 2], [15, 6], [17, 4], [17, 6], | ||
| 34 | ], | ||
| 35 | [ | ||
| 36 | # Row 4 | ||
| 37 | [20, 0], [20, 2], [19, 0], [18, 0], [19, 2], [], [], [], [], | ||
| 38 | [19, 4], [18, 2], [19, 6], [20, 4], [20, 6], [], [], [], [] | ||
| 39 | ], | ||
| 40 | [ | ||
| 41 | # Row 5 | ||
| 42 | [ ], [23, 0], [22, 2], [22, 0], [22, 4], [21, 0], [21, 2], | ||
| 43 | [24, 0], [24, 2], [25, 0], [25, 4], [25, 2], [26, 0], [ ], | ||
| 44 | ], | ||
| 45 | ] | ||
| 46 | |||
| 47 | def set_attr_at(self, block, n, attr, fn, val): | ||
| 48 | blk = self.heatmap[block][n] | ||
| 49 | if attr in blk: | ||
| 50 | blk[attr] = fn(blk[attr], val) | ||
| 51 | else: | ||
| 52 | blk[attr] = fn(None, val) | ||
| 53 | |||
| 54 | def coord(self, col, row): | ||
| 55 | return self.coords[row][col] | ||
| 56 | |||
| 57 | @staticmethod | ||
| 58 | def set_attr(orig, new): | ||
| 59 | return new | ||
| 60 | |||
| 61 | def set_bg(self, coords, color): | ||
| 62 | (block, n) = coords | ||
| 63 | self.set_attr_at(block, n, "c", self.set_attr, color) | ||
| 64 | #self.set_attr_at(block, n, "g", self.set_attr, False) | ||
| 65 | |||
| 66 | def set_tap_info(self, coords, count, cap): | ||
| 67 | (block, n) = coords | ||
| 68 | def _set_tap_info(o, _count, _cap): | ||
| 69 | ns = 4 - o.count ("\n") | ||
| 70 | return o + "\n" * ns + "%.02f%%" % (float(_count) / float(_cap) * 100) | ||
| 71 | |||
| 72 | if not cap: | ||
| 73 | cap = 1 | ||
| 74 | self.heatmap[block][n + 1] = _set_tap_info (self.heatmap[block][n + 1], count, cap) | ||
| 75 | |||
| 76 | @staticmethod | ||
| 77 | def heatmap_color (v): | ||
| 78 | colors = [ [0.3, 0.3, 1], [0.3, 1, 0.3], [1, 1, 0.3], [1, 0.3, 0.3]] | ||
| 79 | fb = 0 | ||
| 80 | if v <= 0: | ||
| 81 | idx1, idx2 = 0, 0 | ||
| 82 | elif v >= 1: | ||
| 83 | idx1, idx2 = len(colors) - 1, len(colors) - 1 | ||
| 84 | else: | ||
| 85 | val = v * (len(colors) - 1) | ||
| 86 | idx1 = int(floor(val)) | ||
| 87 | idx2 = idx1 + 1 | ||
| 88 | fb = val - float(idx1) | ||
| 89 | |||
| 90 | r = (colors[idx2][0] - colors[idx1][0]) * fb + colors[idx1][0] | ||
| 91 | g = (colors[idx2][1] - colors[idx1][1]) * fb + colors[idx1][1] | ||
| 92 | b = (colors[idx2][2] - colors[idx1][2]) * fb + colors[idx1][2] | ||
| 93 | |||
| 94 | r, g, b = [x * 255 for x in (r, g, b)] | ||
| 95 | return "#%02x%02x%02x" % (int(r), int(g), int(b)) | ||
| 96 | |||
| 97 | def __init__(self, layout): | ||
| 98 | self.log = {} | ||
| 99 | self.total = 0 | ||
| 100 | self.max_cnt = 0 | ||
| 101 | self.layout = layout | ||
| 102 | |||
| 103 | def update_log(self, coords): | ||
| 104 | (c, r) = coords | ||
| 105 | if not (c, r) in self.log: | ||
| 106 | self.log[(c, r)] = 0 | ||
| 107 | self.log[(c, r)] = self.log[(c, r)] + 1 | ||
| 108 | self.total = self.total + 1 | ||
| 109 | if self.max_cnt < self.log[(c, r)]: | ||
| 110 | self.max_cnt = self.log[(c, r)] | ||
| 111 | |||
| 112 | def get_heatmap(self): | ||
| 113 | with open("%s/heatmap-layout.%s.json" % (dirname(sys.argv[0]), self.layout), "r") as f: | ||
| 114 | self.heatmap = json.load (f) | ||
| 115 | |||
| 116 | ## Reset colors | ||
| 117 | for row in self.coords: | ||
| 118 | for coord in row: | ||
| 119 | if coord != []: | ||
| 120 | self.set_bg (coord, "#d9dae0") | ||
| 121 | |||
| 122 | for (c, r) in self.log: | ||
| 123 | coords = self.coord(c, r) | ||
| 124 | cap = self.max_cnt | ||
| 125 | if cap == 0: | ||
| 126 | cap = 1 | ||
| 127 | v = float(self.log[(c, r)]) / cap | ||
| 128 | self.set_bg (coords, self.heatmap_color (v)) | ||
| 129 | self.set_tap_info (coords, self.log[(c, r)], self.total) | ||
| 130 | return self.heatmap | ||
| 131 | |||
| 132 | def get_stats(self): | ||
| 133 | usage = [ | ||
| 134 | # left hand | ||
| 135 | [0, 0, 0, 0, 0], | ||
| 136 | # right hand | ||
| 137 | [0, 0, 0, 0, 0] | ||
| 138 | ] | ||
| 139 | finger_map = [0, 0, 1, 2, 3, 3, 3, 1, 1, 1, 2, 3, 4, 4] | ||
| 140 | for (c, r) in self.log: | ||
| 141 | if r == 5: # thumb cluster | ||
| 142 | if c <= 6: # left side | ||
| 143 | usage[0][4] = usage[0][4] + self.log[(c, r)] | ||
| 144 | else: | ||
| 145 | usage[1][0] = usage[1][0] + self.log[(c, r)] | ||
| 146 | elif r == 4 and (c == 4 or c == 9): # bottom row thumb keys | ||
| 147 | if c <= 6: # left side | ||
| 148 | usage[0][4] = usage[0][4] + self.log[(c, r)] | ||
| 149 | else: | ||
| 150 | usage[1][0] = usage[1][0] + self.log[(c, r)] | ||
| 151 | else: | ||
| 152 | fc = c | ||
| 153 | hand = 0 | ||
| 154 | if fc >= 7: | ||
| 155 | hand = 1 | ||
| 156 | fm = finger_map[fc] | ||
| 157 | usage[hand][fm] = usage[hand][fm] + self.log[(c, r)] | ||
| 158 | hand_usage = [0, 0] | ||
| 159 | for f in usage[0]: | ||
| 160 | hand_usage[0] = hand_usage[0] + f | ||
| 161 | for f in usage[1]: | ||
| 162 | hand_usage[1] = hand_usage[1] + f | ||
| 163 | |||
| 164 | total = self.total | ||
| 165 | if total == 0: | ||
| 166 | total = 1 | ||
| 167 | stats = { | ||
| 168 | "total-keys": total, | ||
| 169 | "hands": { | ||
| 170 | "left": { | ||
| 171 | "usage": round(float(hand_usage[0]) / total * 100, 2), | ||
| 172 | "fingers": { | ||
| 173 | "pinky": 0, | ||
| 174 | "ring": 0, | ||
| 175 | "middle": 0, | ||
| 176 | "index": 0, | ||
| 177 | "thumb": 0, | ||
| 178 | } | ||
| 179 | }, | ||
| 180 | "right": { | ||
| 181 | "usage": round(float(hand_usage[1]) / total * 100, 2), | ||
| 182 | "fingers": { | ||
| 183 | "thumb": 0, | ||
| 184 | "index": 0, | ||
| 185 | "middle": 0, | ||
| 186 | "ring": 0, | ||
| 187 | "pinky": 0, | ||
| 188 | } | ||
| 189 | }, | ||
| 190 | } | ||
| 191 | } | ||
| 192 | |||
| 193 | hmap = ['left', 'right'] | ||
| 194 | fmap = ['pinky', 'ring', 'middle', 'index', 'thumb', | ||
| 195 | 'thumb', 'index', 'middle', 'ring', 'pinky'] | ||
| 196 | for hand_idx in range(len(usage)): | ||
| 197 | hand = usage[hand_idx] | ||
| 198 | for finger_idx in range(len(hand)): | ||
| 199 | stats['hands'][hmap[hand_idx]]['fingers'][fmap[finger_idx + hand_idx * 5]] = round(float(hand[finger_idx]) / total * 100, 2) | ||
| 200 | return stats | ||
| 201 | |||
| 202 | def dump_all(out_dir, heatmaps): | ||
| 203 | stats = {} | ||
| 204 | t = Terminal() | ||
| 205 | t.clear() | ||
| 206 | sys.stdout.write("\x1b[2J\x1b[H") | ||
| 207 | |||
| 208 | print ('{t.underline}{outdir}{t.normal}\n'.format(t=t, outdir=out_dir)) | ||
| 209 | |||
| 210 | keys = list(heatmaps.keys()) | ||
| 211 | keys.sort() | ||
| 212 | |||
| 213 | for layer in keys: | ||
| 214 | if len(heatmaps[layer].log) == 0: | ||
| 215 | continue | ||
| 216 | |||
| 217 | with open ("%s/%s.json" % (out_dir, layer), "w") as f: | ||
| 218 | json.dump(heatmaps[layer].get_heatmap(), f) | ||
| 219 | stats[layer] = heatmaps[layer].get_stats() | ||
| 220 | |||
| 221 | left = stats[layer]['hands']['left'] | ||
| 222 | right = stats[layer]['hands']['right'] | ||
| 223 | |||
| 224 | print ('{t.bold}{layer}{t.normal} ({total:,} taps):'.format(t=t, layer=layer, | ||
| 225 | total=int(stats[layer]['total-keys'] / 2))) | ||
| 226 | print (('{t.underline} | ' + \ | ||
| 227 | 'left ({l[usage]:6.2f}%) | ' + \ | ||
| 228 | 'right ({r[usage]:6.2f}%) |{t.normal}').format(t=t, l=left, r=right)) | ||
| 229 | print ((' {t.bright_magenta}pinky{t.white} | {left[pinky]:6.2f}% | {right[pinky]:6.2f}% |\n' + \ | ||
| 230 | ' {t.bright_cyan}ring{t.white} | {left[ring]:6.2f}% | {right[ring]:6.2f}% |\n' + \ | ||
| 231 | ' {t.bright_blue}middle{t.white} | {left[middle]:6.2f}% | {right[middle]:6.2f}% |\n' + \ | ||
| 232 | ' {t.bright_green}index{t.white} | {left[index]:6.2f}% | {right[index]:6.2f}% |\n' + \ | ||
| 233 | ' {t.bright_red}thumb{t.white} | {left[thumb]:6.2f}% | {right[thumb]:6.2f}% |\n' + \ | ||
| 234 | '').format(left=left['fingers'], right=right['fingers'], t=t)) | ||
| 235 | |||
| 236 | def process_line(line, heatmaps, opts, stamped_log = None): | ||
| 237 | m = re.search ('KL: col=(\d+), row=(\d+), pressed=(\d+), layer=(.*)', line) | ||
| 238 | if not m: | ||
| 239 | return False | ||
| 240 | if stamped_log is not None: | ||
| 241 | if line.startswith("KL:"): | ||
| 242 | print ("%10.10f %s" % (time.time(), line), | ||
| 243 | file = stamped_log, end = '') | ||
| 244 | else: | ||
| 245 | print (line, | ||
| 246 | file = stamped_log, end = '') | ||
| 247 | stamped_log.flush() | ||
| 248 | |||
| 249 | (c, r, l) = (int(m.group (2)), int(m.group (1)), m.group (4)) | ||
| 250 | if (c, r) not in opts.allowed_keys: | ||
| 251 | return False | ||
| 252 | |||
| 253 | heatmaps[l].update_log ((c, r)) | ||
| 254 | |||
| 255 | return True | ||
| 256 | |||
| 257 | def setup_allowed_keys(opts): | ||
| 258 | if len(opts.only_key): | ||
| 259 | incmap={} | ||
| 260 | for v in opts.only_key: | ||
| 261 | m = re.search ('(\d+),(\d+)', v) | ||
| 262 | if not m: | ||
| 263 | continue | ||
| 264 | (c, r) = (int(m.group(1)), int(m.group(2))) | ||
| 265 | incmap[(c, r)] = True | ||
| 266 | else: | ||
| 267 | incmap={} | ||
| 268 | for r in range(0, 6): | ||
| 269 | for c in range(0, 14): | ||
| 270 | incmap[(c, r)] = True | ||
| 271 | |||
| 272 | for v in opts.ignore_key: | ||
| 273 | m = re.search ('(\d+),(\d+)', v) | ||
| 274 | if not m: | ||
| 275 | continue | ||
| 276 | (c, r) = (int(m.group(1)), int(m.group(2))) | ||
| 277 | del(incmap[(c, r)]) | ||
| 278 | |||
| 279 | return incmap | ||
| 280 | |||
| 281 | def main(opts): | ||
| 282 | heatmaps = {"Dvorak": Heatmap("Dvorak"), | ||
| 283 | "ADORE": Heatmap("ADORE") | ||
| 284 | } | ||
| 285 | cnt = 0 | ||
| 286 | out_dir = opts.outdir | ||
| 287 | |||
| 288 | if not os.path.exists(out_dir): | ||
| 289 | os.makedirs(out_dir) | ||
| 290 | |||
| 291 | opts.allowed_keys = setup_allowed_keys(opts) | ||
| 292 | |||
| 293 | if not opts.one_shot: | ||
| 294 | |||
| 295 | try: | ||
| 296 | with open("%s/stamped-log" % out_dir, "r") as f: | ||
| 297 | while True: | ||
| 298 | line = f.readline() | ||
| 299 | if not line: | ||
| 300 | break | ||
| 301 | if not process_line(line, heatmaps, opts): | ||
| 302 | continue | ||
| 303 | except Exception: | ||
| 304 | pass | ||
| 305 | |||
| 306 | stamped_log = open ("%s/stamped-log" % (out_dir), "a+") | ||
| 307 | else: | ||
| 308 | stamped_log = None | ||
| 309 | |||
| 310 | while True: | ||
| 311 | line = sys.stdin.readline() | ||
| 312 | if not line: | ||
| 313 | break | ||
| 314 | if not process_line(line, heatmaps, opts, stamped_log): | ||
| 315 | continue | ||
| 316 | |||
| 317 | cnt = cnt + 1 | ||
| 318 | |||
| 319 | if opts.dump_interval != -1 and cnt >= opts.dump_interval and not opts.one_shot: | ||
| 320 | cnt = 0 | ||
| 321 | dump_all(out_dir, heatmaps) | ||
| 322 | |||
| 323 | dump_all (out_dir, heatmaps) | ||
| 324 | |||
| 325 | if __name__ == "__main__": | ||
| 326 | parser = argparse.ArgumentParser (description = "keylog to heatmap processor") | ||
| 327 | parser.add_argument ('outdir', action = 'store', | ||
| 328 | help = 'Output directory') | ||
| 329 | parser.add_argument ('--dump-interval', dest = 'dump_interval', action = 'store', type = int, | ||
| 330 | default = 100, help = 'Dump stats and heatmap at every Nth event, -1 for dumping at EOF only') | ||
| 331 | parser.add_argument ('--ignore-key', dest = 'ignore_key', action = 'append', type = str, | ||
| 332 | default = [], help = 'Ignore the key at position (x, y)') | ||
| 333 | parser.add_argument ('--only-key', dest = 'only_key', action = 'append', type = str, | ||
| 334 | default = [], help = 'Only include key at position (x, y)') | ||
| 335 | parser.add_argument ('--one-shot', dest = 'one_shot', action = 'store_true', | ||
| 336 | help = 'Do not load previous data, and do not update it, either.') | ||
| 337 | args = parser.parse_args() | ||
| 338 | if len(args.ignore_key) and len(args.only_key): | ||
| 339 | print ("--ignore-key and --only-key are mutually exclusive, please only use one of them!", | ||
| 340 | file = sys.stderr) | ||
| 341 | sys.exit(1) | ||
| 342 | main(args) | ||
diff --git a/layouts/community/ergodox/algernon/tools/text-to-log.py b/layouts/community/ergodox/algernon/tools/text-to-log.py deleted file mode 100755 index ba60a2e28..000000000 --- a/layouts/community/ergodox/algernon/tools/text-to-log.py +++ /dev/null | |||
| @@ -1,106 +0,0 @@ | |||
| 1 | #!/usr/bin/env python3 | ||
| 2 | |||
| 3 | import sys | ||
| 4 | |||
| 5 | charmap = { | ||
| 6 | '9': [[1, 0]], | ||
| 7 | '7': [[2, 0]], '@': [[2, 5], [2, 0]], | ||
| 8 | '5': [[3, 0]], '*': [[2, 5], [3, 0]], | ||
| 9 | '3': [[4, 0]], '^': [[2, 5], [4, 0]], | ||
| 10 | '1': [[5, 0]], '$': [[2, 5], [5, 0]], | ||
| 11 | '0': [[8, 0]], '%': [[2, 5], [8, 0]], | ||
| 12 | '2': [[9, 0]], '!': [[2, 5], [9, 0]], | ||
| 13 | '4': [[10, 0]], '#': [[2, 5], [10, 0]], | ||
| 14 | '6': [[11, 0]], '&': [[2, 5], [11, 0]], | ||
| 15 | '8': [[12, 0]], | ||
| 16 | |||
| 17 | '\\': [[0, 1]], '|': [[2, 5], [0, 1]], | ||
| 18 | 'x': [[1, 1]], 'X': [[2, 5], [1, 1]], | ||
| 19 | 'w': [[2, 1]], 'W': [[2, 5], [2, 1]], | ||
| 20 | 'c': [[3, 1]], 'C': [[2, 5], [3, 1]], | ||
| 21 | 'h': [[4, 1]], 'H': [[2, 5], [4, 1]], | ||
| 22 | 'f': [[5, 1]], 'F': [[2, 5], [5, 1]], | ||
| 23 | '[': [[6, 1]], '{': [[2, 5], [6, 1]], '(': [[6, 1], [6, 1]], | ||
| 24 | ']': [[7, 1]], '}': [[2, 5], [7, 1]], ')': [[7, 1], [7, 1]], | ||
| 25 | 'm': [[8, 1]], 'M': [[2, 5], [8, 1]], | ||
| 26 | 'g': [[9, 1]], 'G': [[2, 5], [9, 1]], | ||
| 27 | 'l': [[10, 1]], 'L': [[2, 5], [10, 1]], | ||
| 28 | 'p': [[11, 1]], 'P': [[2, 5], [11, 1]], | ||
| 29 | '/': [[12, 1]], '?': [[2, 5], [12, 1]], | ||
| 30 | '`': [[13, 1]], '~': [[2, 5], [13, 1]], | ||
| 31 | |||
| 32 | '\t': [[0, 2]], | ||
| 33 | 'a': [[1, 2]], 'A': [[2, 5], [1, 2]], | ||
| 34 | 'o': [[2, 2]], 'O': [[2, 5], [2, 2]], | ||
| 35 | 'e': [[3, 2]], 'E': [[2, 5], [3, 2]], | ||
| 36 | 'i': [[4, 2]], 'I': [[2, 5], [4, 2]], | ||
| 37 | 'u': [[5, 2]], 'U': [[2, 5], [5, 2]], | ||
| 38 | 'd': [[8, 2]], 'D': [[2, 5], [8, 2]], | ||
| 39 | 'r': [[9, 2]], 'R': [[2, 5], [9, 2]], | ||
| 40 | 't': [[10, 2]], 'T': [[2, 5], [10, 2]], | ||
| 41 | 'n': [[11, 2]], 'N': [[2, 5], [11, 2]], | ||
| 42 | 's': [[12, 2]], 'S': [[2, 5], [12, 2]], | ||
| 43 | '=': [[13, 2]], '+': [[2, 5], [13, 2]], | ||
| 44 | |||
| 45 | 'z': [[1, 3]], 'Z': [[2, 5], [1, 3]], | ||
| 46 | 'q': [[2, 3]], 'Q': [[2, 5], [2, 3]], | ||
| 47 | '\'': [[3, 3]], '"': [[2, 5], [3, 3]], | ||
| 48 | ',': [[4, 3]], '<': [[2, 5], [4, 3]], | ||
| 49 | '.': [[5, 3]], '>': [[2, 5], [5, 3]], | ||
| 50 | 'b': [[8, 3]], 'B': [[2, 5], [8, 3]], | ||
| 51 | 'k': [[9, 3]], 'K': [[2, 5], [9, 3]], | ||
| 52 | 'v': [[10, 3]], 'V': [[2, 5], [10, 3]], | ||
| 53 | 'y': [[11, 3]], 'Y': [[2, 5], [11, 3]], | ||
| 54 | 'j': [[12, 3]], 'J': [[2, 5], [12, 3]], | ||
| 55 | |||
| 56 | ':': [[4, 4]], ';': [[4, 4], [4, 4]], | ||
| 57 | '-': [[9, 4]], '_': [[2, 5], [9, 4]], | ||
| 58 | |||
| 59 | ' ': [[10, 5]], | ||
| 60 | '\n': [[11, 5]], | ||
| 61 | |||
| 62 | ## Layered things | ||
| 63 | # Hungarian | ||
| 64 | 'á': [[9, 5], [1, 2]], 'Á': [[2, 5], [9, 5], [1, 2]], | ||
| 65 | 'ó': [[9, 5], [2, 2]], 'Ó': [[2, 5], [9, 5], [2, 2]], | ||
| 66 | 'ő': [[9, 5], [2, 1]], 'Ő': [[2, 5], [9, 5], [2, 1]], | ||
| 67 | 'ö': [[9, 5], [2, 3]], 'Ö': [[2, 5], [9, 5], [2, 3]], | ||
| 68 | 'é': [[9, 5], [3, 2]], 'É': [[2, 5], [9, 5], [3, 2]], | ||
| 69 | 'ú': [[9, 5], [4, 2]], 'Ú': [[2, 5], [9, 5], [4, 2]], | ||
| 70 | 'ű': [[9, 5], [4, 1]], 'Ű': [[2, 5], [9, 5], [4, 1]], | ||
| 71 | 'ü': [[9, 5], [4, 3]], 'Ü': [[2, 5], [9, 5], [4, 3]], | ||
| 72 | 'í': [[9, 5], [5, 2]], 'Í': [[2, 5], [9, 5], [5, 2]], | ||
| 73 | } | ||
| 74 | |||
| 75 | def lookup_char(layer, ch): | ||
| 76 | if ch in charmap: | ||
| 77 | return charmap[ch] | ||
| 78 | return None | ||
| 79 | |||
| 80 | def process_char(layer, ch, out=sys.stdout): | ||
| 81 | keys = lookup_char(layer, ch) | ||
| 82 | if not keys: | ||
| 83 | print ("Unknown char: %s" % ch, file=sys.stderr) | ||
| 84 | else: | ||
| 85 | for (c, r) in keys: | ||
| 86 | print ("KL: col=%d, row=%d, pressed=1, layer=%s" % (r, c, layer), file=out) | ||
| 87 | print ("KL: col=%d, row=%d, pressed=0, layer=%s" % (r, c, layer), file=out) | ||
| 88 | |||
| 89 | def process_file(fn, layer, out=sys.stdout): | ||
| 90 | with open(fn, "r") as f: | ||
| 91 | ch = f.read(1) | ||
| 92 | while ch: | ||
| 93 | process_char(layer, ch, out) | ||
| 94 | ch = f.read(1) | ||
| 95 | |||
| 96 | if sys.argv[1] == '-': | ||
| 97 | out='/dev/stdin' | ||
| 98 | else: | ||
| 99 | out=sys.argv[1] | ||
| 100 | |||
| 101 | if len(sys.argv) >= 2: | ||
| 102 | layer = 'ADORE' | ||
| 103 | else: | ||
| 104 | layer = sys.argv[2] | ||
| 105 | |||
| 106 | process_file(out, layer = layer) | ||
