Guest User

Untitled

a guest
Jan 23rd, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.26 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. # Tool to convert Ergodox-EZ Configurator generated keymaps
  4. # to somthing a little easier to read/work with.
  5. #
  6. # runs like:
  7. # cleanup.rb [downloaded keymap.c] > [destination keymap.c]
  8.  
  9. open(FILE,$ARGV[0]) || die "Can't open the file [$!]\n";
  10. local $/;
  11. $keymap = <FILE>;
  12. close(FILE);
  13. $keymap =~ s/LALT\(LCTL\(LGUI\(LSFT\((.*?)\)\)\)\)/HYPR($1)/g;
  14. $keymap =~ s/LGUI\(LSFT\((.*?)\)\)/SGUI($1)/g;
  15. $keymap =~ s/LALT\(LCTL\((.*?)\)\)/LCA($1)/g;
  16. $keymap =~ s/LCTL\(LGUI\(LSFT\((.*?)\)\)\)/LCGS($1)/g;
  17. $keymap =~ s/LCTL\(LSFT\((.*?)\)\)/LCS($1)/g;
  18. $keymap =~ s/MT\(MOD_HYPR, (.*?)\)/HYPR_T($1)/g;
  19. $keymap =~ s/MT\(MOD_MEH, (.*?)\)/MEH_T($1)/g;
  20.  
  21.  
  22. $keymap =~ s/KC_TRANSPARENT/_______/g;
  23. $keymap =~ s/KC_TRANSPARENT/XXXXXXX/g;
  24. $keymap =~ s/KC_NO/__X__/g;
  25. $keymap =~ s/KC_ENTER/KC_ENT/g;
  26. $keymap =~ s/KC_ESCAPE/KC_ESC/g;
  27. $keymap =~ s/KC_BSPACE/KC_BSPC/g;
  28. $keymap =~ s/KC_SPACE/KC_SPC/g;
  29. $keymap =~ s/KC_MINUS/KC_MINS/g;
  30. $keymap =~ s/KC_EQUAL/KC_EQL/g;
  31. $keymap =~ s/KC_LBRACKET/KC_LBRC/g;
  32. $keymap =~ s/KC_RBRACKET/KC_RBRC/g;
  33. $keymap =~ s/KC_BSLASH/KC_BSLS/g;
  34. $keymap =~ s/KC_NONUS_HASH/KC_NUHS/g;
  35. $keymap =~ s/KC_SCOLON/KC_SCLN/g;
  36. $keymap =~ s/KC_QUOTE/KC_QUOT/g;
  37. $keymap =~ s/KC_GRAVE/KC_GRV/g;
  38. $keymap =~ s/KC_COMMA/KC_COMM/g;
  39. $keymap =~ s/KC_SLASH/KC_SLSH/g;
  40. $keymap =~ s/KC_NONUS_BSLASH/KC_NUBS/g;
  41. $keymap =~ s/KC_CAPSLOCK/KC_CLCK/g;
  42. $keymap =~ s/KC_CAPSLOCK/KC_CAPS/g;
  43. $keymap =~ s/KC_SCROLLLOCK/KC_SLCK/g;
  44. $keymap =~ s/KC_NUMLOCK/KC_NLCK/g;
  45. $keymap =~ s/KC_LOCKING_CAPS/KC_LCAP/g;
  46. $keymap =~ s/KC_LOCKING_NUM/KC_LNUM/g;
  47. $keymap =~ s/KC_LOCKING_SCROLL/KC_LSCR/g;
  48. $keymap =~ s/KC_PSCREEN/KC_PSCR/g;
  49. $keymap =~ s/KC_PAUSE/KC_PAUS/g;
  50. $keymap =~ s/KC_PAUSE/KC_BRK/g;
  51. $keymap =~ s/KC_INSERT/KC_INS/g;
  52. $keymap =~ s/KC_DELETE/KC_DEL/g;
  53. $keymap =~ s/KC_PGDOWN/KC_PGDN/g;
  54. $keymap =~ s/KC_RIGHT/KC_RGHT/g;
  55. $keymap =~ s/KC_APPLICATION/KC_APP/g;
  56. $keymap =~ s/KC_EXECUTE/KC_EXEC/g;
  57. $keymap =~ s/KC_SELECT/KC_SLCT/g;
  58. $keymap =~ s/KC_AGAIN/KC_AGIN/g;
  59. $keymap =~ s/KC_PASTE/KC_PSTE/g;
  60. $keymap =~ s/KC_ALT_ERASE/KC_ERAS/g;
  61. $keymap =~ s/KC_CLEAR/KC_CLR/g;
  62. $keymap =~ s/KC_KP_SLASH/KC_PSLS/g;
  63. $keymap =~ s/KC_KP_ASTERISK/KC_PAST/g;
  64. $keymap =~ s/KC_KP_MINUS/KC_PMNS/g;
  65. $keymap =~ s/KC_KP_PLUS/KC_PPLS/g;
  66. $keymap =~ s/KC_KP_ENTER/KC_PENT/g;
  67. $keymap =~ s/KC_KP_1/KC_P1/g;
  68. $keymap =~ s/KC_KP_2/KC_P2/g;
  69. $keymap =~ s/KC_KP_3/KC_P3/g;
  70. $keymap =~ s/KC_KP_4/KC_P4/g;
  71. $keymap =~ s/KC_KP_5/KC_P5/g;
  72. $keymap =~ s/KC_KP_6/KC_P6/g;
  73. $keymap =~ s/KC_KP_7/KC_P7/g;
  74. $keymap =~ s/KC_KP_8/KC_P8/g;
  75. $keymap =~ s/KC_KP_9/KC_P9/g;
  76. $keymap =~ s/KC_KP_0/KC_P0/g;
  77. $keymap =~ s/KC_KP_DOT/KC_PDOT/g;
  78. $keymap =~ s/KC_KP_EQUAL/KC_PEQL/g;
  79. $keymap =~ s/KC_KP_COMMA/KC_PCMM/g;
  80. $keymap =~ s/KC_GRAVE/KC_ZKHK/g;
  81. $keymap =~ s/KC_INT1/KC_RO/g;
  82. $keymap =~ s/KC_INT2/KC_KANA/g;
  83. $keymap =~ s/KC_INT3/KC_JYEN/g;
  84. $keymap =~ s/KC_INT4/KC_HENK/g;
  85. $keymap =~ s/KC_INT5/KC_MHEN/g;
  86. $keymap =~ s/KC_LANG1/KC_HAEN/g;
  87. $keymap =~ s/KC_LANG2/KC_HANJ/g;
  88. $keymap =~ s/KC_LCTRL/KC_LCTL/g;
  89. $keymap =~ s/KC_LSHIFT/KC_LSFT/g;
  90. $keymap =~ s/KC_LGUI/KC_LCMD/g;
  91. $keymap =~ s/KC_LGUI/KC_LWIN/g;
  92. $keymap =~ s/KC_RCTRL/KC_RCTL/g;
  93. $keymap =~ s/KC_RSHIFT/KC_RSFT/g;
  94. $keymap =~ s/KC_RALT/KC_ALGR/g;
  95. $keymap =~ s/KC_RGUI/KC_RCMD/g;
  96. $keymap =~ s/KC_RGUI/KC_RWIN/g;
  97. $keymap =~ s/KC_SYSTEM_POWER/KC_PWR/g;
  98. $keymap =~ s/KC_SYSTEM_SLEEP/KC_SLEP/g;
  99. $keymap =~ s/KC_SYSTEM_WAKE/KC_WAKE/g;
  100. $keymap =~ s/KC_AUDIO_MUTE/KC_MUTE/g;
  101. $keymap =~ s/KC_AUDIO_VOL_UP/KC_VOLU/g;
  102. $keymap =~ s/KC_AUDIO_VOL_DOWN/KC_VOLD/g;
  103. $keymap =~ s/KC_MEDIA_NEXT_TRACK/KC_MNXT/g;
  104. $keymap =~ s/KC_MEDIA_PREV_TRACK/KC_MPRV/g;
  105. $keymap =~ s/KC_MEDIA_STOP/KC_MSTP/g;
  106. $keymap =~ s/KC_MEDIA_PLAY_PAUSE/KC_MPLY/g;
  107. $keymap =~ s/KC_MEDIA_SELECT/KC_MSEL/g;
  108. $keymap =~ s/KC_MEDIA_EJECT/KC_EJCT/g;
  109. $keymap =~ s/KC_MAIL/KC_MAIL/g;
  110. $keymap =~ s/KC_CALCULATOR/KC_CALC/g;
  111. $keymap =~ s/KC_MY_COMPUTER/KC_MYCM/g;
  112. $keymap =~ s/KC_WWW_SEARCH/KC_WSCH/g;
  113. $keymap =~ s/KC_WWW_HOME/KC_WHOM/g;
  114. $keymap =~ s/KC_WWW_BACK/KC_WBAK/g;
  115. $keymap =~ s/KC_WWW_FORWARD/KC_WFWD/g;
  116. $keymap =~ s/KC_WWW_STOP/KC_WSTP/g;
  117. $keymap =~ s/KC_WWW_REFRESH/KC_WREF/g;
  118. $keymap =~ s/KC_WWW_FAVORITES/KC_WFAV/g;
  119. $keymap =~ s/KC_MEDIA_FAST_FORWARD/KC_MFFD/g;
  120. $keymap =~ s/KC_MEDIA_REWIND/KC_MRWD/g;
  121. $keymap =~ s/KC_BRIGHTNESS_UP/KC_BRIU/g;
  122. $keymap =~ s/KC_BRIGHTNESS_DOWN/KC_BRID/g;
  123. $keymap =~ s/KC_PAUSE/KC_BRMU/g;
  124. $keymap =~ s/KC_SCROLLLOCK/KC_BRMD/g;
  125. $keymap =~ s/KC_MS_UP/KC_MS_U/g;
  126. $keymap =~ s/KC_MS_DOWN/KC_MS_D/g;
  127. $keymap =~ s/KC_MS_LEFT/KC_MS_L/g;
  128. $keymap =~ s/KC_MS_RIGHT/KC_MS_R/g;
  129. $keymap =~ s/KC_MS_BTN1/KC_BTN1/g;
  130. $keymap =~ s/KC_MS_BTN2/KC_BTN2/g;
  131. $keymap =~ s/KC_MS_BTN3/KC_BTN3/g;
  132. $keymap =~ s/KC_MS_BTN4/KC_BTN4/g;
  133. $keymap =~ s/KC_MS_BTN5/KC_BTN5/g;
  134. $keymap =~ s/KC_MS_WH_UP/KC_WH_U/g;
  135. $keymap =~ s/KC_MS_WH_DOWN/KC_WH_D/g;
  136. $keymap =~ s/KC_MS_WH_LEFT/KC_WH_L/g;
  137. $keymap =~ s/KC_MS_WH_RIGHT/KC_WH_R/g;
  138. $keymap =~ s/KC_MS_ACCEL0/KC_ACL0/g;
  139. $keymap =~ s/KC_MS_ACCEL1/KC_ACL1/g;
  140. $keymap =~ s/KC_MS_ACCEL2/KC_ACL2/g;
  141.  
  142. $defines = <<'END_DEFS';
  143. #define LCGS(code) LCTL(LGUI(LSFT(code)))
  144. #define LCS(code) LCTL(LSFT(code))
  145. END_DEFS
  146.  
  147.  
  148. @keys = $keymap =~ /[A-Z][A-Z0-9_]*?(?:\(.*?\))?,/smg;
  149. @sorted_keys = sort { length $b <=> length $a } @keys;
  150. $size = (length $sorted_keys[0]) + 1;
  151. print STDERR $sorted_keys[0],": ",$size,"\n";
  152. $pad = " " x $size;
  153. $pad8 = $pad x 4;
  154. $pad6 = $pad8 . $pad;
  155. $pad7 = $pad6 . $pad;
  156. $dent = " " x 4;
  157. $ddnt = $dent x 2;
  158. $keymap =~ s/LAYOUT_ergodox\(
  159. ((?:[A-Z0-9_]*?(?:\(.*?\))?,){7})
  160. ((?:[A-Z0-9_]*?(?:\(.*?\))?,){7})
  161. ((?:[A-Z0-9_]*?(?:\(.*?\))?,){6})
  162. ((?:[A-Z0-9_]*?(?:\(.*?\))?,){7})
  163. ((?:[A-Z0-9_]*?(?:\(.*?\))?,){5})
  164. ((?:[A-Z0-9_]*?(?:\(.*?\))?,){2})
  165. ((?:[A-Z0-9_]*?(?:\(.*?\))?,){1})
  166. ((?:[A-Z0-9_]*?(?:\(.*?\))?,){3})
  167. ((?:[A-Z0-9_]*?(?:\(.*?\))?,){7})
  168. ((?:[A-Z0-9_]*?(?:\(.*?\))?,){7})
  169. ((?:[A-Z0-9_]*?(?:\(.*?\))?,){6})
  170. ((?:[A-Z0-9_]*?(?:\(.*?\))?,){7})
  171. ((?:[A-Z0-9_]*?(?:\(.*?\))?,){5})
  172. ((?:[A-Z0-9_]*?(?:\(.*?\))?,){2})
  173. ((?:[A-Z0-9_]*?(?:\(.*?\))?,){1})
  174. ((?:[A-Z0-9_]*?(?:\(.*?\))?,){2})
  175. ([A-Z0-9_]*?(?:\(.*?\))?)
  176. \),/LAYOUT_ergodox(
  177. \/\/ left hand
  178. $dent$1
  179. $dent$2
  180. $dent$3
  181. $dent$4
  182. $dent$5
  183. $dent$pad6$6
  184. $dent$pad7$7
  185. $dent$pad8$8
  186.  
  187. \/\/ right hand
  188. $ddnt$9
  189. $ddnt$10
  190. $ddnt$pad$11
  191. $ddnt$12
  192. $ddnt$13
  193. $ddnt$14
  194. $ddnt$15
  195. $ddnt$16$17
  196. $dent),/gx;
  197. $keymap =~ s{([A-Z_][A-Z0-9_]*?(?:\(.*?\))?,)}{ sprintf "%-${size}s", $1}ge;
  198. $keymap =~ s/(enum custom_keycodes)/$defines\n$1/;
  199. print $keymap;
Add Comment
Please, Sign In to add comment