summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaronVerDow <2530548+AaronVerDow@users.noreply.github.com>2021-04-19 04:23:20 -0500
committerGitHub <noreply@github.com>2021-04-19 02:23:20 -0700
commit00eea387fcbd8ec3c37f029594891672f4889720 (patch)
tree65d1087e95ef67d0bb349d75c00f9db9ccf14180
parent2274631c8fd4fb6b20f6dc9e571dfb43625f629e (diff)
[Keymap] Iracing replay keymap (#12461)
Co-authored-by: Aaron VerDow <aaron@verdow.com>
-rw-r--r--keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/keymap.c156
-rw-r--r--keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/readme.md17
-rw-r--r--keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/rules.mk1
3 files changed, 174 insertions, 0 deletions
diff --git a/keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/keymap.c b/keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/keymap.c
new file mode 100644
index 0000000000..39ebb77ff8
--- /dev/null
+++ b/keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/keymap.c
@@ -0,0 +1,156 @@
+/* Copyright 2021 Aaron VerDow
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+// Layer declarations
+enum {
+ DEF_LAYER,
+ MOD_LAYER,
+};
+
+// Tap Dance declarations
+enum {
+ TD_CAR,
+ TD_PRINT,
+ TD_CAM_UP,
+ TD_CAM_DN
+};
+
+void camera_number(uint16_t tens, uint16_t ones) {
+/* Switch to a specific camera number
+ *
+ * I haven't been able to find official docs for this.
+ *
+ * To determine the number click the dropdown in UI and
+ * count from the top. The list can change with updates.
+ *
+ * Shift must be held between both * presses or the combo
+ * won't be recognized.
+ */
+
+ register_code16(KC_LSFT);
+ tap_code(KC_8);
+ tap_code(KC_8);
+ unregister_code16(KC_LSFT);
+ tap_code(tens);
+ tap_code(ones);
+ tap_code(KC_ENT);
+}
+
+void cam_up(qk_tap_dance_state_t *state, void *user_data) {
+ switch (state->count) {
+ case 1:
+ tap_code(KC_C); // tap once for next cam
+ break;
+ case 2:
+ camera_number(KC_2,KC_0); // tap twice for reverse chase cam
+ break;
+ }
+}
+
+void cam_down(qk_tap_dance_state_t *state, void *user_data) {
+ switch (state->count) {
+ case 1:
+ tap_code16(LSFT(KC_C)); // tap once for prev cam
+ break;
+ case 2:
+ camera_number(KC_1,KC_8); // tap twice for chase cam
+ break;
+ }
+}
+
+// Tap Dance definitions
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_CAR] = ACTION_TAP_DANCE_DOUBLE(
+ LSFT(KC_V), // tap once for prev car
+ LCTL(KC_V) // tap twice for my car
+ ),
+ [TD_PRINT] = ACTION_TAP_DANCE_DOUBLE(
+ LCTL(LALT(LSFT(KC_S))), // tap once for iRacing screenshot (must be enabled in options)
+ LGUI(KC_PSCR) // tap twice for Windows print screen and save to file
+ ),
+ [TD_CAM_UP] = ACTION_TAP_DANCE_FN(cam_up),
+ [TD_CAM_DN] = ACTION_TAP_DANCE_FN(cam_down)
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [DEF_LAYER] = LAYOUT_ortho_6x4( /* Base */
+
+ TD(TD_CAM_UP), // next cam, double tap for reverse chase cam
+ KC_V, // next car
+ LSFT(KC_P3), // next lap
+ LCTL(KC_P3), // next inc
+
+ TD(TD_CAM_DN), // prev cam, double tap for chase cam
+ TD(TD_CAR), // prev car, double tap for my car
+ LSFT(KC_P1), // prev lap
+ LCTL(KC_P1), // prev inc
+
+ LSFT(KC_P4), // rewind
+ KC_P5, // play/pause
+ LSFT(KC_P6), // fast forward
+ KC_P8, // slow mo
+
+ KC_P4, // prev frame
+ KC_W, // up
+ KC_P6, // next frame
+ TD(TD_PRINT), // print screen
+
+ KC_A, // left
+ KC_S, // down
+ KC_D, // right
+ LALT(KC_K), // toggle click and drag ui elements (in car)
+
+ KC_LCTL, // ctrl
+ KC_LALT, // alt
+ LCTL(KC_F12), // camera tool
+ LT(MOD_LAYER, KC_SPACE) // press once for UI, hold for MOD layer
+ ),
+
+ [MOD_LAYER] = LAYOUT_ortho_6x4( /* Base */
+
+ KC_B, // next sub cam
+ KC_PGUP, // next driver cam
+ LCTL(KC_P6), // next session
+ KC_P7, // start
+
+ LSFT(KC_B), // prev sub cam
+ KC_PGDOWN, // prev driver cam
+ LCTL(KC_P4), // prev session
+ KC_P1, // end
+
+ KC_RBRC, // FOV up
+ KC_EQL, // step factor up
+ _______,
+ _______,
+
+ KC_LBRC, // FOV down
+ KC_MINS, // step factor down
+ _______,
+ _______,
+
+ _______,
+ _______,
+ _______,
+ _______,
+
+ _______,
+ LALT(KC_M), // cycle aim
+ RALT(KC_ENTER), // fullscreen (unreliable)
+ _______
+ ),
+};
diff --git a/keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/readme.md b/keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/readme.md
new file mode 100644
index 0000000000..a574499c6b
--- /dev/null
+++ b/keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/readme.md
@@ -0,0 +1,17 @@
+# iRacing Replay Tool
+
+![](https://imgur.com/0948eBGh.jpg)
+
+Replay/camera tool for iRacing. This uses the default keybindings for the game so nothing should need to be mapped. This makes replays much easier to view in VR and makes waiting through heats a lot more enjoyable.
+
+To make full use of the arrow keys open the camera tool (you can close the UI after) and optionally switch the AIM to static.
+
+The code to generate stl files for the keycap set are ![available here.](https://github.com/AaronVerDow/KeyV2/blob/numpad/src/layouts/numpad/iracing.scad)
+
+Other notes:
+* Hold MOD (UI key) to access features on the front of
+* Double tap car down is a shortcut for your car
+* Double tap cam down is a shortcut for chase cam
+* Double tap cam up is a shortcut for reverse chase cam
+* The record button takes a screenshot using iRacing. Double tap record button to auto save a screenshot using Windows.
+* The key above UI is unassigned
diff --git a/keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/rules.mk b/keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/rules.mk
new file mode 100644
index 0000000000..e5ddcae8d9
--- /dev/null
+++ b/keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/rules.mk
@@ -0,0 +1 @@
+TAP_DANCE_ENABLE = yes