35class KeyboardScreen final :
public RootUI,
public InstrumentClipMinder {
39 ActionResult padAction(int32_t x, int32_t y, int32_t velocity)
override;
40 ActionResult buttonAction(deluge::hid::Button b,
bool on,
bool inCardRoutine)
override;
41 ActionResult verticalEncoderAction(int32_t offset,
bool inCardRoutine)
override;
42 ActionResult horizontalEncoderAction(int32_t offset)
override;
43 void selectEncoderAction(int8_t offset)
override;
45 bool renderMainPads(uint32_t whichRows,
RGB image[][kDisplayWidth + kSideBarWidth],
46 uint8_t occupancyMask[][kDisplayWidth + kSideBarWidth],
47 bool drawUndefinedArea =
false)
override;
48 bool renderSidebar(uint32_t whichRows,
RGB image[][kDisplayWidth + kSideBarWidth],
49 uint8_t occupancyMask[][kDisplayWidth + kSideBarWidth])
override;
51 void flashDefaultRootNote();
52 void openedInBackground();
53 void exitAuditionMode();
55 uint8_t highlightedNotes[kHighestKeyboardNote] = {0};
56 uint8_t nornsNotes[kHighestKeyboardNote] = {0};
58 inline void requestRendering() { uiNeedsRendering(
this, 0xFFFFFFFF, 0xFFFFFFFF); }
60 void killColumnSwitchKey(int32_t column);
63 UIType getUIType()
override {
return UIType::KEYBOARD_SCREEN; }
64 void checkNewInstrument(
Instrument* newInstrument);
67 bool opened()
override;
68 void focusRegained()
override;
69 void displayOrLanguageChanged()
final;
71 void evaluateActiveNotes();
72 void updateActiveNotes();
74 void noteOff(
ModelStack& modelStack,
Instrument& activeInstrument,
bool clipIsActiveOnInstrument, int32_t note);
78 void graphicsRoutine()
override;
79 bool getAffectEntire()
override;
81 void unscrolledPadAudition(int32_t velocity, int32_t note,
bool shiftButtonDown);
84 InstrumentClipMinder::renderOLED(canvas);
87 void selectLayout(int8_t offset);
88 void enterScaleMode(int32_t selectedRootNote = kDefaultCalculateRootNote);
90 void drawNoteCode(int32_t noteCode);
92 PressedPad pressedPads[kMaxNumKeyboardPadPresses];
93 NotesState lastNotesState;
94 NotesState currentNotesState;
96 bool keyboardButtonActive =
false;
97 bool keyboardButtonUsed =
false;
98 bool yEncoderActive =
false;
99 bool xEncoderActive =
false;