« get me outta code hell

Beginnings of keyboard controls - http-music - Command-line music player + utils (not a server!)
about summary refs log tree commit diff
path: root/src/http-music.js
diff options
context:
space:
mode:
authorliam4 <towerofnix@gmail.com>2017-06-11 10:04:09 -0300
committerliam4 <towerofnix@gmail.com>2017-06-11 10:04:09 -0300
commita48c6bbbbcca48ddc0bade66b33781e13f80213d (patch)
treef399c54ac26a3679e6b936e9c5eb43ff94a9e0a8 /src/http-music.js
parent3ddae56a88e819a3f7cf07a6ec0efd3a90567fe6 (diff)
Beginnings of keyboard controls
Diffstat (limited to 'src/http-music.js')
-rwxr-xr-xsrc/http-music.js23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/http-music.js b/src/http-music.js
index fee1b79..3d7e217 100755
--- a/src/http-music.js
+++ b/src/http-music.js
@@ -239,7 +239,28 @@ setupDefaultPlaylist('./playlist.json')
         return
       }
 
-      return loopPlay(picker, downloader, playOpts)
+      const play = loopPlay(picker, downloader, playOpts)
+
+      // We're looking to gather standard input one keystroke at a time.
+      process.stdin.setRawMode(true)
+
+      process.stdin.on('data', data => {
+        if (Buffer.from('s').equals(data)) {
+          play.skip()
+        }
+
+        if (
+          Buffer.from('q').equals(data) ||
+          Buffer.from([0x03]).equals(data) || // ^C
+          Buffer.from([0x04]).equals(data) // ^D
+        ) {
+          play.kill()
+          process.stdout.write('\n')
+          process.exit(0)
+        }
+      })
+
+      return play.promise
     } else {
       return activePlaylist
     }