keymap.c 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. // WindowsでJIS配列として認識しているときに、オシャレなUS配列用キーキャップを使うためのキーマップです。
  2. // Google日本語入力の場合、以下のキー設定を行うとLower,Raiseのタップでそれぞれ半角入力と全角入力を切り替えできるようになります。
  3. // ・Henkan(入力文字なし/直接入力)に「IMEを有効化」を割り当て
  4. // ・Muhenkan(入力文字なし/直接入力)に「IMEを無効化」を割り当て
  5. #include QMK_KEYBOARD_H
  6. #include "keymap_jp.h" // qmk_firmware-master/quantum/keymap_extras/keymap_jp.h 日本語キーボード設定用
  7. #include <sendstring_jis.h> // macro sendstring for jis keyboard マクロ文字列送信時に日本語キーボード設定での文字化け回避
  8. // Each layer gets a name for readability, which is then used in the keymap matrix below.
  9. // The underscores don't mean anything - you can have a layer called STUFF or any other name.
  10. // Layer names don't all need to be of the same length, obviously, and you can also skip them
  11. // entirely and just use numbers.
  12. enum layer_number {
  13. _QWERTY,
  14. _HDBX,
  15. _LOWER,
  16. _RAISE,
  17. _GAME,
  18. _ADJUST
  19. };
  20. enum custom_keycodes {
  21. QWERTY = SAFE_RANGE,
  22. HDBX,
  23. MCR1, // マクロ1
  24. MCR2, // マクロ2
  25. MCR3, // マクロ3
  26. MCR4, // マクロ4
  27. MCR5, // マクロ5
  28. WN_SCLN, // タップでJISの「:」 シフトでJISの「;」 (Windows)
  29. DM_PLY1,
  30. DM_PLY2,
  31. DM_REC1,
  32. DM_REC2,
  33. DM_RSTP,
  34. };
  35. // Use Dynamic macro
  36. // Fillers to make layering more clear
  37. #define LOWER LT(_LOWER, KC_MHEN) // タップで無変換 ホールドでLower
  38. #define RAISE LT(_RAISE, KC_HENK) // タップで変換 ホールドでRaise
  39. #define GUI_ESC GUI_T(KC_ESC) // タップでESC ホールドでGUI
  40. #define SFT_BS SFT_T(KC_BSPC) // タップでBackSpace ホールドでSHIFT
  41. #define CTL_ENT CTL_T(KC_ENT) // タップでEnter ホールドでCTRL
  42. #define CTL_TAB CTL_T(KC_TAB) // タップでTAB ホールドでCTRL
  43. #define SFT_DEL SFT_T(KC_DEL) // タップでDELETE ホールドでSHIFT
  44. #define ALT_LBR ALT_T(JP_LBRC) // タップで[ ホールドでALT
  45. #define SFT_RBR SFT_T(JP_RBRC) // タップで] ホールドでSHIFT
  46. #define SFT_SPC S(KC_SPC) // Shift + Space
  47. #define WN_CAPS S(KC_CAPS) // Caps Lock (Windows)
  48. #define GAME TO(_GAME) // _GAMEレイヤーへ移動
  49. #define ADJUST TO(_ADJUST) // _ADJUSTレイヤーへ移動
  50. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  51. /* Qwerty配列
  52. * ,----------------------------------. ,----------------------------------.
  53. * | Q | W | E | R | T | | Y | U | I | O | P |
  54. * |------+------+------+------+------| |------+------+------+------+------|
  55. * | A | S | D | F | G | | H | J | K | L | ; |
  56. * |------+------+------+------+------| |------+------+------+------+------|
  57. * | Z | X | C | V | B | | N | M | , | . | / |
  58. * |------+------+------+------+------+-------------+------+------+------+------+------|
  59. * |Alt/[ |WINESC| ~ |Sft/Bs|Lower |CtlEnt|Space |Raise |CtrlTb| - | ' |Sft/] |
  60. * `-----------------------------------------------------------------------------------'
  61. */
  62. [_QWERTY] = LAYOUT(
  63. KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
  64. KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, WN_SCLN,
  65. KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
  66. ALT_LBR, GUI_ESC, JP_TILD, SFT_BS, LOWER, CTL_ENT, KC_SPC, RAISE, CTL_TAB, KC_MINS, JP_QUOT, SFT_RBR
  67. ),
  68. /* HDBX配列 デフォルトレイヤーをこの配列にしたい場合は、AdjustレイヤーでK (Lower + Raise + K)
  69. * ,----------------------------------. ,----------------------------------.
  70. * | Q | W | E | , | . | | Y | D | P | F | : |
  71. * |------+------+------+------+------| |------+------+------+------+------|
  72. * | A | I | O | U | G | | M | N | T | R | S |
  73. * |------+------+------+------+------| |------+------+------+------+------|
  74. * | Z | X | C | V | B | | H | J | K | L | / |
  75. * |------+------+------+------+------+-------------+------+------+------+------+------|
  76. * |Alt/[ |WINESC| ~ |Sft/Bs|Lower |CtlEnt|Space |Raise |CtrlTb| - | ' |Sft/] |
  77. * `-----------------------------------------------------------------------------------'
  78. */
  79. [_HDBX] = LAYOUT(
  80. KC_Q, KC_W, KC_E, KC_COMM, KC_DOT, KC_Y, KC_D, KC_P, KC_F, WN_SCLN,
  81. KC_A, KC_I, KC_O, KC_U, KC_G, KC_M, KC_N, KC_T, KC_R, KC_S,
  82. KC_Z, KC_X, KC_C, KC_V, KC_B, KC_H, KC_J, KC_K, KC_L, KC_SLSH,
  83. ALT_LBR, GUI_ESC, JP_TILD, SFT_BS, LOWER, CTL_ENT, KC_SPC, RAISE, CTL_TAB, KC_MINS, JP_QUOT, SFT_RBR
  84. ),
  85. /* Lower
  86. * ,----------------------------------. ,----------------------------------.
  87. * | F1 | F2 | F3 | F4 | F5 | | 7 | 8 | 9 | . | Bspc |
  88. * |------+------+------+------+------| |------+------+------+------+------|
  89. * | F6 | F7 | F8 | F9 | F10 | | 4 | 5 | 6 | + | * |
  90. * |------+------+------+------+------| |------+------+------+------+------|
  91. * |Zen/Ha|ScLock|Pause | F11 | F12 | | 1 | 2 | 3 | - | / |
  92. * |------+------+------+------+------+-------------+------+------+------+------+------|
  93. * | Alt | WIN | ` |SftDel|Lower | Ctrl |SftSpc|Raise | 0 | , | = |Enter |
  94. * `-----------------------------------------------------------------------------------'
  95. */
  96. [_LOWER] = LAYOUT(
  97. KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_7, KC_8, KC_9, KC_DOT, KC_BSPC,
  98. KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_4, KC_5, KC_6, KC_PPLS, KC_PAST,
  99. KC_ZKHK, KC_SLCK, KC_PAUS, KC_F11, KC_F12, KC_1, KC_2, KC_3, KC_PMNS, KC_PSLS,
  100. KC_LALT, KC_LGUI, JP_GRV, SFT_DEL, _______, KC_LCTL, SFT_SPC, _______, KC_0, KC_COMM, JP_EQL, KC_ENT
  101. ),
  102. /* Raise
  103. * ,----------------------------------. ,----------------------------------.
  104. * | ! | @ | # | $ | % | | Home | App | Ins | Calc |PrtScr|
  105. * |------+------+------+------+------| |------+------+------+------+------|
  106. * | ^ | & | * | \ | | | | Left | Down | Up |Right | ; |
  107. * |------+------+------+------+------| |------+------+------+------+------|
  108. * | ` | { | } | < | > | | End | Mute | ( | ) | ? |
  109. * |------+------+------+------+------+------+------+------+------+------+------+------|
  110. * | Alt | WIN | ` | Del |Lower | Ctrl | Caps |Raise | Ctrl | _ | " |Shift |
  111. * `-----------------------------------------------------------------------------------'
  112. */
  113. [_RAISE] = LAYOUT(
  114. KC_EXLM, JP_AT, KC_HASH, KC_DLR, KC_PERC, KC_HOME, KC_APP, KC_INS, KC_CALC, KC_PSCR,
  115. JP_CIRC, JP_AMPR, JP_ASTR, JP_YEN, JP_PIPE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_SCLN,
  116. JP_GRV, JP_LCBR, JP_RCBR, KC_LT, KC_GT, KC_END, KC_MUTE, JP_LPRN, JP_RPRN, KC_QUES,
  117. KC_LALT, KC_LGUI, JP_GRV, KC_DEL, _______, KC_LCTL, WN_CAPS, _______, KC_RCTL, JP_UNDS, JP_DQT, KC_RSFT
  118. ),
  119. /* GAME ゲームやテンキー固定で使用するレイヤーです。AdjustレイヤーでGを押下して遷移。戻るときはtoBaseから。
  120. * ,----------------------------------. ,----------------------------------.
  121. * | Q | Up | E | R | T | | 7 | 8 | 9 | . | Bspc |
  122. * |------+------+------+------+------| |------+------+------+------+------|
  123. * | Left | Down |Right | F | G | | 4 | 5 | 6 | + | * |
  124. * |------+------+------+------+------| |------+------+------+------+------|
  125. * | Z | X | C | V | B | | 1 | 2 | 3 | - | / |
  126. * |------+------+------+------+------+-------------+------+------+------+------+------|
  127. * | Alt | Esc | Tab |Shift |Space | Ctrl |toBase| \ | 0 | , | = |Enter |
  128. * `-----------------------------------------------------------------------------------'
  129. */
  130. [_GAME] = LAYOUT(
  131. KC_Q, KC_UP, KC_E, KC_R, KC_T, KC_7, KC_8, KC_9, KC_DOT, KC_BSPC,
  132. KC_LEFT, KC_DOWN, KC_RGHT, KC_F, KC_G, KC_4, KC_5, KC_6, KC_PPLS, KC_PAST,
  133. KC_Z, KC_X, KC_C, KC_V, KC_B, KC_1, KC_2, KC_3, KC_PMNS, KC_PSLS,
  134. KC_LALT, KC_ESC, KC_TAB, KC_LSFT, KC_SPC, KC_LCTL, ADJUST, JP_YEN, KC_0, KC_COMM, JP_EQL, KC_ENT
  135. ),
  136. /* Adjust (Lower + Raise)
  137. * ,----------------------------------. ,----------------------------------.
  138. * | MCR1 | MCR2 | MCR3 | MCR4 | MCR5 | |DyMcr1|DyMcr2|RcMcr1|RcMcr2|StpRec|
  139. * |------+------+------+------+------| |------+------+------+------+------|
  140. * | | | | |ToGAME| | |Qwerty| HDBX | | |
  141. * |------+------+------+------+------| |------+------+------+------+------|
  142. * | | | | | | | | | | | |
  143. * |------+------+------+------+------+-------------+------+------+------+------+------|
  144. * |RESET | | | | | | | | | | | |
  145. * `-----------------------------------------------------------------------------------'
  146. */
  147. [_ADJUST] = LAYOUT(
  148. MCR1, MCR2, MCR3, MCR4, MCR5, DM_PLY1, DM_PLY2, DM_REC1, DM_REC2, DM_RSTP,
  149. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, GAME, XXXXXXX, QWERTY, HDBX, XXXXXXX, XXXXXXX,
  150. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  151. RESET, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
  152. )
  153. };
  154. layer_state_t layer_state_set_user(layer_state_t state) {
  155. state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
  156. return state;
  157. }
  158. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  159. switch (keycode) {
  160. case QWERTY:
  161. if (record->event.pressed) {
  162. set_single_persistent_default_layer(_QWERTY);
  163. }
  164. return false;
  165. break;
  166. case HDBX:
  167. if (record->event.pressed) {
  168. set_single_persistent_default_layer(_HDBX);
  169. }
  170. return false;
  171. break;
  172. static bool lshift = false;
  173. case WN_SCLN: // コロン「;:」
  174. if (record->event.pressed) {
  175. lshift = get_mods() & MOD_BIT(KC_LSFT);
  176. if (lshift) {
  177. unregister_code(KC_LSFT);
  178. tap_code(JP_SCLN);
  179. } else {
  180. tap_code(JP_SCLN);
  181. }
  182. }
  183. return false;
  184. break;
  185. case MCR1:
  186. if (record->event.pressed) {
  187. SEND_STRING("0123456789"); // 送信文字列
  188. }
  189. return false;
  190. break;
  191. case MCR2:
  192. if (record->event.pressed) {
  193. SEND_STRING("hogehoge\n"); // 送信文字列
  194. }
  195. return false;
  196. break;
  197. case MCR3:
  198. if (record->event.pressed) {
  199. SEND_STRING("hoge@hoge.hoge"); // 送信文字列
  200. }
  201. return false;
  202. break;
  203. case MCR4:
  204. if (record->event.pressed) {
  205. SEND_STRING("\"\""SS_TAP(X_LEFT)); // 送信文字列
  206. }
  207. return false;
  208. break;
  209. case MCR5:
  210. if (record->event.pressed) {
  211. SEND_STRING("<>"SS_TAP(X_LEFT)); // 送信文字列
  212. }
  213. return false;
  214. break;
  215. }
  216. return true;
  217. }