|  | #pragma once
#include "util/common.hpp"
#include "midi.hpp"
#include <map>
namespace rack {
struct KeyboardInputDevice : MidiInputDevice {
	int octave = 5;
	std::map<int, int> pressedNotes;
	void onKeyPress(int key);
	void onKeyRelease(int key);
};
struct KeyboardDriver : MidiDriver {
	KeyboardInputDevice device;
	std::string getName() override {return "Computer keyboard";}
	std::vector<int> getInputDeviceIds() override;
	std::string getInputDeviceName(int deviceId) override;
	MidiInputDevice *subscribeInputDevice(int deviceId, MidiInput *midiInput) override;
	void unsubscribeInputDevice(int deviceId, MidiInput *midiInput) override;
};
void keyboardInit();
void keyboardPress(int key);
void keyboardRelease(int key);
} // namespace rack
 |