Skip to content

Commit a620cda

Browse files
committed
Fixed cut/copy/paste
1 parent 0a8ecef commit a620cda

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

src/LsdjKeyMap.h

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,14 @@ class LsdjKeyMap {
7474
VirtualKey vk = (VirtualKey)key.VK;
7575
ButtonType b = _gbKeyMap->getControllerButton(vk);
7676

77+
if (down && key.C) {
78+
switch (vk) {
79+
case VirtualKeys::X: cut(); return true;
80+
case VirtualKeys::C: copy(); return true;
81+
case VirtualKeys::V: paste(); return true;
82+
}
83+
}
84+
7785
switch (b) {
7886
case ButtonTypes::Left:
7987
case ButtonTypes::Right:
@@ -96,13 +104,7 @@ class LsdjKeyMap {
96104
return true;
97105
case ButtonTypes::MAX:
98106
// Key press does not relate to a button but may still be used
99-
if (down && key.C) {
100-
switch (vk) {
101-
case VirtualKeys::X: cut(); return true;
102-
case VirtualKeys::C: copy(); return true;
103-
case VirtualKeys::V: paste(); return true;
104-
}
105-
} else if (down) {
107+
if (down) {
106108
auto found = _actionMap.find(vk);
107109
if (found != _actionMap.end()) {
108110
if (_state == State::None) {
@@ -126,17 +128,15 @@ class LsdjKeyMap {
126128

127129
return false;
128130
default:
129-
// In selection mode, all button presses are ignored unless
130-
// they are directional
131131
if (_state == State::None) {
132132
if (down) {
133133
_presses.hold(b);
134134
} else {
135135
_presses.release(b);
136136
}
137-
138-
return true;
139137
}
138+
139+
return true;
140140
}
141141

142142
return false;
@@ -159,22 +159,26 @@ class LsdjKeyMap {
159159

160160
ButtonQueue& copy() {
161161
consoleLogLine("copy");
162+
int delay = 0;
162163
if (_state != State::Selecting) {
163164
beginSelect();
165+
delay = 150;
164166
}
165167

166168
_state = State::None;
167-
return _presses.press(ButtonTypes::B);
169+
return _presses.press(ButtonTypes::B, delay);
168170
}
169171

170172
ButtonQueue& cut() {
171173
consoleLogLine("cut");
174+
int delay = 0;
172175
if (_state != State::Selecting) {
173176
beginSelect();
177+
delay = 150;
174178
}
175179

176180
_state = State::None;
177-
return _presses.pressModified(ButtonTypes::A, ButtonTypes::Select);
181+
return _presses.pressModified(ButtonTypes::A, ButtonTypes::Select, delay);
178182
}
179183

180184
ButtonQueue& paste() {

0 commit comments

Comments
 (0)