[Keymap] Iracing replay keymap (#12461)

Co-authored-by: Aaron VerDow <aaron@verdow.com>
master
AaronVerDow 2021-04-19 04:23:20 -05:00 committed by GitHub
parent 2274631c8f
commit 00eea387fc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 174 additions and 0 deletions

View File

@ -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)
_______
),
};

View File

@ -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

View File

@ -0,0 +1 @@
TAP_DANCE_ENABLE = yes