ref: abda0e3d1f0671aaa8706fdc1c05662931db596e
parent: 5211cf9366364dfbe803dc44a15240e62272f9ff
parent: a11576828cc4e1050c99faadc78d471ace7dd3b3
author: Jonne Kokkonen <jonne.kokkonen@gmail.com>
date: Mon Apr 29 07:15:56 EDT 2024
Merge pull request #143 from jmolero/feat/jazzkeys-keys-config Allow custom bindings for keyjazz function keys (octave up/down, velocity up/down)
--- 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,41 @@
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.repeat > 0 || event->key.type == SDL_KEYUP) {+ break;
}
- 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);
+ if (event->key.keysym.scancode == conf->key_jazz_dec_octave) {+ if (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 (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_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 +425,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:
--- a/src/serial.h
+++ b/src/serial.h
@@ -3,6 +3,7 @@
#ifndef _SERIAL_H_
#define _SERIAL_H_
+#include <stdint.h>
#include <stdint.h>
#ifdef USE_LIBUSB
--
⑨