clipspin 0.1.2 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -20
- package/index.js +21 -8
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# ClipSpin
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
- cycle your paste queue with every CMD+V.
|
|
4
|
+
|
|
5
|
+
Du startest Clipspin im Terminal mit einer JSON-Liste aus Texten. Solange der Command läuft, reagiert ClipSpin auf `Cmd+V`: Beim ersten Einfügen wird der erste Text aus der Liste verwendet, beim nächsten `Cmd+V` der zweite, danach der dritte und so weiter. Am Ende der Liste springt ClipSpin wieder zurück zum Anfang.
|
|
4
6
|
|
|
5
7
|
## Installation
|
|
6
8
|
|
|
@@ -36,8 +38,6 @@ cat snippets.json | clipspin
|
|
|
36
38
|
["Erster Text", "Zweiter Text", "Dritter Text"]
|
|
37
39
|
```
|
|
38
40
|
|
|
39
|
-
Nach dem Start liegt der erste Eintrag in der Zwischenablage. Mit jedem `Cmd+V` wird der nächste Eintrag vorbereitet; nach dem letzten beginnt ClipSpin wieder von vorne.
|
|
40
|
-
|
|
41
41
|
Stoppen kannst du ClipSpin mit `Ctrl+C` im Terminal. Die vorherige Zwischenablage wird danach wiederhergestellt.
|
|
42
42
|
|
|
43
43
|
Wenn `Cmd+V` nicht erkannt wird, starte ClipSpin im Debug-Modus:
|
|
@@ -47,20 +47,3 @@ clipspin --debug '["Erster Text", "Zweiter Text"]'
|
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
Beim Drücken von Tasten sollten dann `[debug]`-Zeilen erscheinen. Wenn keine erscheinen, fehlen macOS-Berechtigungen für die Terminal-App.
|
|
50
|
-
|
|
51
|
-
## Veröffentlichen
|
|
52
|
-
|
|
53
|
-
Vor dem Publish die Version in `package.json` erhöhen. Danach:
|
|
54
|
-
|
|
55
|
-
```bash
|
|
56
|
-
npm run publish:npm
|
|
57
|
-
npm run publish:brew
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
Oder beides nacheinander:
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
npm run publish:all
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
`publish:brew` erwartet, dass die npm-Version bereits veröffentlicht ist. Der Befehl aktualisiert `oliverjessner/tap/clipspin`, setzt die npm-Tarball-URL samt SHA256, führt Homebrew-Checks aus, committet die Formula und pusht den Tap.
|
package/index.js
CHANGED
|
@@ -126,6 +126,7 @@ const items = parseItems(rawInput);
|
|
|
126
126
|
|
|
127
127
|
let index = 0;
|
|
128
128
|
let lastPasteAt = 0;
|
|
129
|
+
let commandDown = false;
|
|
129
130
|
let pendingPaste = false;
|
|
130
131
|
let pasteFallbackTimer = null;
|
|
131
132
|
const originalClipboard = getClipboard();
|
|
@@ -177,8 +178,12 @@ console.log('paste-cycle active.');
|
|
|
177
178
|
console.log('Press Cmd + V anywhere to paste/cycle.');
|
|
178
179
|
console.log('Press Ctrl + C here to stop.\n');
|
|
179
180
|
|
|
180
|
-
function
|
|
181
|
-
return event.keycode === UiohookKey.
|
|
181
|
+
function isCommandKey(event) {
|
|
182
|
+
return event.keycode === UiohookKey.Meta || event.keycode === UiohookKey.MetaRight;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
function isPasteKey(event) {
|
|
186
|
+
return event.keycode === UiohookKey.V || event.keycode === 9;
|
|
182
187
|
}
|
|
183
188
|
|
|
184
189
|
function logKeyEvent(name, event) {
|
|
@@ -187,14 +192,18 @@ function logKeyEvent(name, event) {
|
|
|
187
192
|
}
|
|
188
193
|
|
|
189
194
|
console.log(
|
|
190
|
-
`[debug] ${name}: keycode=${event.keycode} meta=${event.metaKey} ctrl=${event.ctrlKey} alt=${event.altKey} shift=${event.shiftKey}`,
|
|
195
|
+
`[debug] ${name}: keycode=${event.keycode} meta=${event.metaKey} commandDown=${commandDown} ctrl=${event.ctrlKey} alt=${event.altKey} shift=${event.shiftKey}`,
|
|
191
196
|
);
|
|
192
197
|
}
|
|
193
198
|
|
|
194
199
|
uIOhook.on('keydown', event => {
|
|
195
200
|
logKeyEvent('keydown', event);
|
|
196
201
|
|
|
197
|
-
|
|
202
|
+
if (isCommandKey(event)) {
|
|
203
|
+
commandDown = true;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
const isCommandV = (event.metaKey === true || commandDown) && isPasteKey(event);
|
|
198
207
|
|
|
199
208
|
if (!isCommandV) {
|
|
200
209
|
return;
|
|
@@ -228,12 +237,16 @@ uIOhook.on('keydown', event => {
|
|
|
228
237
|
uIOhook.on('keyup', event => {
|
|
229
238
|
logKeyEvent('keyup', event);
|
|
230
239
|
|
|
231
|
-
|
|
232
|
-
|
|
240
|
+
const shouldAdvance = pendingPaste;
|
|
241
|
+
|
|
242
|
+
if (isCommandKey(event)) {
|
|
243
|
+
commandDown = false;
|
|
233
244
|
}
|
|
234
245
|
|
|
235
|
-
|
|
236
|
-
|
|
246
|
+
if (shouldAdvance) {
|
|
247
|
+
// Let the application finish handling Cmd+V before replacing the clipboard.
|
|
248
|
+
advanceAfterPaste(80);
|
|
249
|
+
}
|
|
237
250
|
});
|
|
238
251
|
|
|
239
252
|
try {
|