ref: 174d07c60c9fdae8090b929a064acacf17595bd7
parent: 15fdd8e0a6862df8ae183cb3821d01758920343a
author: Jorge Molero <jmolerocalafell@gmail.com>
date: Sat Apr 6 18:28:35 EDT 2024
Feat: Configurable jazzkeys keys Add the four jazzkeys to the config file and uses them to make changes in the velocity and octave when in jazzkeys mode.
--- a/src/config.c
+++ b/src/config.c
@@ -47,6 +47,10 @@
c.key_edit_alt = SDL_SCANCODE_S;
c.key_delete = SDL_SCANCODE_DELETE;
c.key_reset = SDL_SCANCODE_R;
+ c.key_jazz_inc_octave = SDL_SCANCODE_KP_MULTIPLY;
+ c.key_jazz_dec_octave = SDL_SCANCODE_KP_DIVIDE;
+ c.key_jazz_inc_velocity = SDL_SCANCODE_KP_MINUS;
+ c.key_jazz_dec_velocity = SDL_SCANCODE_KP_PLUS;
c.gamepad_up = SDL_CONTROLLER_BUTTON_DPAD_UP;
c.gamepad_left = SDL_CONTROLLER_BUTTON_DPAD_LEFT;
@@ -82,7 +86,7 @@
SDL_Log("Writing config file to %s", config_path);- const unsigned int INI_LINE_COUNT = 44;
+ const unsigned int INI_LINE_COUNT = 48;
const unsigned int LINELEN = 50;
// Entries for the config file
@@ -129,6 +133,14 @@
conf->key_delete);
snprintf(ini_values[initPointer++], LINELEN, "key_reset=%d\n",
conf->key_reset);
+ snprintf(ini_values[initPointer++], LINELEN, "key_jazz_inc_octave=%d\n",
+ conf->key_jazz_inc_octave);
+ snprintf(ini_values[initPointer++], LINELEN, "key_jazz_dec_octave=%d\n",
+ conf->key_jazz_dec_octave);
+ snprintf(ini_values[initPointer++], LINELEN, "key_jazz_inc_velocity=%d\n",
+ conf->key_jazz_inc_velocity);
+ snprintf(ini_values[initPointer++], LINELEN, "key_jazz_dec_velocity=%d\n",
+ conf->key_jazz_dec_velocity);
snprintf(ini_values[initPointer++], LINELEN, "[gamepad]\n");
snprintf(ini_values[initPointer++], LINELEN, "gamepad_up=%d\n",
conf->gamepad_up);
@@ -289,6 +301,10 @@
const char *key_edit_alt = ini_get(ini, "keyboard", "key_edit_alt");
const char *key_delete = ini_get(ini, "keyboard", "key_delete");
const char *key_reset = ini_get(ini, "keyboard", "key_reset");
+ const char *key_jazz_inc_octave = ini_get(ini, "keyboard", "key_jazz_inc_octave");
+ const char *key_jazz_dec_octave = ini_get(ini, "keyboard", "key_jazz_dec_octave");
+ const char *key_jazz_inc_velocity = ini_get(ini, "keyboard", "key_jazz_inc_velocity");
+ const char *key_jazz_dec_velocity = ini_get(ini, "keyboard", "key_jazz_dec_velocity");
if (key_up)
conf->key_up = SDL_atoi(key_up);
@@ -318,6 +334,14 @@
conf->key_delete = SDL_atoi(key_delete);
if (key_reset)
conf->key_reset = SDL_atoi(key_reset);
+ if (key_jazz_inc_octave)
+ conf->key_jazz_inc_octave = SDL_atoi(key_jazz_inc_octave);
+ if (key_jazz_dec_octave)
+ conf->key_jazz_dec_octave = SDL_atoi(key_jazz_dec_octave);
+ if (key_jazz_inc_velocity)
+ conf->key_jazz_inc_velocity = SDL_atoi(key_jazz_inc_velocity);
+ if (key_jazz_dec_velocity)
+ conf->key_jazz_dec_velocity = SDL_atoi(key_jazz_dec_velocity);
}
void read_gamepad_config(ini_t *ini, config_params_s *conf) {--- a/src/config.h
+++ b/src/config.h
@@ -31,6 +31,10 @@
int key_edit_alt;
int key_delete;
int key_reset;
+ int key_jazz_inc_octave;
+ int key_jazz_dec_octave;
+ int key_jazz_inc_velocity;
+ int key_jazz_dec_velocity;
int gamepad_up;
int gamepad_left;
--- a/src/input.c
+++ b/src/input.c
@@ -98,7 +98,11 @@
}
}
-static input_msg_s handle_keyjazz(SDL_Event *event, uint8_t keyvalue) {+static input_msg_s handle_keyjazz(
+ SDL_Event *event,
+ uint8_t keyvalue,
+ config_params_s *conf
+) { input_msg_s key = {keyjazz, keyvalue, keyjazz_velocity, event->type}; switch (event->key.keysym.scancode) {case SDL_SCANCODE_Z:
@@ -188,49 +192,38 @@
case SDL_SCANCODE_P:
key.value = 28 + keyjazz_base_octave * 12;
break;
- case SDL_SCANCODE_KP_DIVIDE:
+ default:
key.type = normal;
- if (event->type == SDL_KEYDOWN && keyjazz_base_octave > 0) {- keyjazz_base_octave--;
- display_keyjazz_overlay(1, keyjazz_base_octave, keyjazz_velocity);
+ if (event->key.keysym.scancode == conf->key_jazz_dec_octave) {+ if (event->type == SDL_KEYDOWN && keyjazz_base_octave > 0) {+ keyjazz_base_octave--;
+ display_keyjazz_overlay(1, keyjazz_base_octave, keyjazz_velocity);
+ }
+ } else if (event->key.keysym.scancode == conf->key_jazz_inc_octave) {+ if (event->type == SDL_KEYDOWN && keyjazz_base_octave < 8) {+ keyjazz_base_octave++;
+ display_keyjazz_overlay(1, keyjazz_base_octave, keyjazz_velocity);
+ }
+ } else if (event->key.keysym.scancode == conf->key_jazz_dec_velocity) {+ if ((event->key.keysym.mod & KMOD_ALT) > 0) {+ if (keyjazz_velocity > 1)
+ keyjazz_velocity -= 1;
+ } else {+ if (keyjazz_velocity > 0x10)
+ keyjazz_velocity -= 0x10;
+ }
+ display_keyjazz_overlay(1, keyjazz_base_octave, keyjazz_velocity);
+ } else if (event->key.keysym.scancode == conf->key_jazz_inc_velocity) {+ if ((event->key.keysym.mod & KMOD_ALT) > 0) {+ if (keyjazz_velocity < 0x7F)
+ keyjazz_velocity += 1;
+ } else {+ if (keyjazz_velocity < 0x6F)
+ keyjazz_velocity += 0x10;
+ }
+ display_keyjazz_overlay(1, keyjazz_base_octave, keyjazz_velocity);
}
break;
- case SDL_SCANCODE_KP_MULTIPLY:
- key.type = normal;
- if (event->type == SDL_KEYDOWN && keyjazz_base_octave < 8) {- keyjazz_base_octave++;
- display_keyjazz_overlay(1, keyjazz_base_octave, keyjazz_velocity);
- }
- break;
- case SDL_SCANCODE_KP_MINUS:
- key.type = normal;
- if (event->type == SDL_KEYDOWN) {- if ((event->key.keysym.mod & KMOD_ALT) > 0) {- if (keyjazz_velocity > 1)
- keyjazz_velocity -= 1;
- } else {- if (keyjazz_velocity > 0x10)
- keyjazz_velocity -= 0x10;
- }
- display_keyjazz_overlay(1, keyjazz_base_octave, keyjazz_velocity);
- }
- break;
- case SDL_SCANCODE_KP_PLUS:
- key.type = normal;
- if (event->type == SDL_KEYDOWN) {- if ((event->key.keysym.mod & KMOD_ALT) > 0) {- if (keyjazz_velocity < 0x7F)
- keyjazz_velocity += 1;
- } else {- if (keyjazz_velocity < 0x6F)
- keyjazz_velocity += 0x10;
- }
- display_keyjazz_overlay(1, keyjazz_base_octave, keyjazz_velocity);
- }
- break;
- default:
- key.type = normal;
- break;
}
return key;
@@ -429,7 +422,7 @@
key = handle_normal_keys(&event, conf, 0);
if (keyjazz_enabled)
- key = handle_keyjazz(&event, key.value);
+ key = handle_keyjazz(&event, key.value, conf);
break;
default:
--
⑨