Skip to content

Commit b7944f0

Browse files
committed
refactor
1 parent 073a66a commit b7944f0

File tree

1 file changed

+38
-38
lines changed

1 file changed

+38
-38
lines changed

src/M2KB.cpp

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
#include <string.h>
77
#include <sstream>
88
#include <map>
9-
#include <functional>
109
#include "UI.h"
1110
#include "UIExtensions.h"
1211
#include "Config.h"
@@ -18,19 +17,11 @@ class Keymapper {
1817
UI ui = UI("MIDI-device to keyboard mapper");
1918
Config config;
2019

21-
int currentDevice; // current midi device
22-
char cmkc; // current midi key code
23-
char cmkp; // is current midi key is pressed or released
24-
HMIDIIN hMidiDevice;
25-
bool mapping;
26-
27-
Keymapper () {
28-
currentDevice = -1;
29-
cmkc = 0;
30-
cmkp = 0;
31-
hMidiDevice = NULL;
32-
mapping = false;
33-
}
20+
int currentDevice = -1; // current midi device
21+
char cmkc = 0; // current midi key code
22+
char cmkp = 0; // is current midi key is pressed or released
23+
HMIDIIN hMidiDevice = NULL;
24+
bool mapping = false;
3425

3526
~Keymapper () {
3627
mapping = false;
@@ -124,32 +115,41 @@ class Keymapper {
124115
return;
125116
}
126117

118+
void reportKey(HMIDIIN hMidiIn, UINT wMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2) {
119+
if (wMsg != MIM_DATA || !mapping) return;
120+
if (cmkp) ui.print("Pressed MIDI #%d", +cmkc);
121+
if (!cmkp) ui.print("Released MIDI #%d", +cmkc);
122+
if(config.keymap[+cmkc] != 0) ui.printchars("\t mapped to KB #%c", config.keymap[+cmkc]);
123+
}
124+
125+
void extractKey(HMIDIIN hMidiIn, UINT wMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2) {
126+
if (wMsg != MIM_DATA) return;
127+
cmkc = (dwParam1 & 0x0000ff00) >> 8; // keycode
128+
if (config.altcmkp == 0) cmkp = (dwParam1 & 0x00ff0000) >> 16; // key released if 0, else pressed
129+
else if (config.altcmkp == 1) cmkp = ((dwParam1 & 0x00ff0000) >> 16) != 64; // key released if 64, else pressed
130+
}
131+
132+
void mapKey(HMIDIIN hMidiIn, UINT wMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2) {
133+
if (wMsg != MIM_DATA || !mapping) return;
134+
if (config.keymap[+cmkc] == 0) {
135+
std::cout << std::endl;
136+
return;
137+
}
138+
INPUT input;
139+
input.type = INPUT_KEYBOARD;
140+
input.ki.wScan = 0;
141+
input.ki.time = 0;
142+
input.ki.dwExtraInfo = 0;
143+
input.ki.wVk = config.keymap[+cmkc];
144+
input.ki.dwFlags = cmkp ? 0 : KEYEVENTF_KEYUP;
145+
SendInput(1, &input, sizeof(INPUT));
146+
}
147+
127148
static void CALLBACK MICallback(HMIDIIN hMidiIn, UINT wMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2) {
128149
Keymapper* keymapper = reinterpret_cast <Keymapper*>(dwInstance);
129-
if (wMsg == MIM_DATA) {
130-
keymapper->cmkc = (dwParam1 & 0x0000ff00) >> 8; // keycode
131-
if (keymapper->config.altcmkp == 0) keymapper->cmkp = (dwParam1 & 0x00ff0000) >> 16; // key released if 0, else pressed
132-
else if (keymapper->config.altcmkp == 1) keymapper->cmkp = ((dwParam1 & 0x00ff0000) >> 16) != 64; // key released if 64, else pressed
133-
if (keymapper->mapping) {
134-
if (keymapper->cmkp) keymapper->ui.print("Pressed MIDI #%d", +keymapper->cmkc);
135-
if (!keymapper->cmkp) keymapper->ui.print("Released MIDI #%d", +keymapper->cmkc);
136-
if(keymapper->config.keymap[+keymapper->cmkc] != 0) {
137-
keymapper->ui.printchars("\t mapped to KB #%c", keymapper->config.keymap[+keymapper->cmkc]);
138-
139-
INPUT input;
140-
input.type = INPUT_KEYBOARD;
141-
input.ki.wScan = 0;
142-
input.ki.time = 0;
143-
input.ki.dwExtraInfo = 0;
144-
input.ki.wVk = config.keymap[+keymapper->cmkc];
145-
input.ki.dwFlags = cmkp ? 0 : KEYEVENTF_KEYUP;
146-
147-
SendInput(1, &input, sizeof(INPUT));
148-
} else {
149-
std::cout << std::endl;
150-
}
151-
}
152-
}
150+
keymapper->extractKey(hMidiIn, wMsg, dwInstance, dwParam1, dwParam2);
151+
keymapper->mapKey(hMidiIn, wMsg, dwInstance, dwParam1, dwParam2);
152+
keymapper->reportKey(hMidiIn, wMsg, dwInstance, dwParam1, dwParam2);
153153
}
154154

155155
void listen() {

0 commit comments

Comments
 (0)