shithub: zuke

Download patch

ref: 61cfb51244f83d2961bd359c2916c09ce022b942
parent: 504011b50809153ffd3d22d9da036e42f2fcdc37
author: Sigrid Haflínudóttir <ftrvxmtrx@gmail.com>
date: Mon Dec 9 10:14:27 EST 2019

fast seek, keys "," and "."

--- a/README.md
+++ b/README.md
@@ -39,7 +39,8 @@
 ## Hot keys
 
 ```
-left/right                 - seek backwards/forward
+left/right                 - seek backwards/forward (10 seconds step)
+,/.                        - seek backwards/forward (one minute step)
 up/down/pgup/pgdn/home/end - move within the playlist
 o                          - move to the currently playing track
 enter                      - play the selected track
--- a/zuke.c
+++ b/zuke.c
@@ -16,6 +16,8 @@
 	Ctoggle,
 	Cforward,
 	Cbackward,
+	Cforwardfast,
+	Cbackwardfast,
 
 	Everror = 1,
 	Evready,
@@ -22,6 +24,7 @@
 
 	Bps = 44100*2*2, /* 44100KHz, stereo, u16 for a sample */
 	Seekbytes = Bps*10, /* 10 seconds */
+	Seekbytesfast = Bps*60, /* 1 minute */
 
 	Scrollwidth = 12,
 	Scrollheight = 16,
@@ -97,7 +100,7 @@
 
 	total = mincolwidth[0] + mincolwidth[1] + mincolwidth[2];
 	for(i = 0; i < nelem(mincolwidth); i++)
-	      colwidth[i] = (Dx(screen->r) - 8) * mincolwidth[i] / total;
+		colwidth[i] = (Dx(screen->r) - 8) * mincolwidth[i] / total;
 }
 
 static void
@@ -460,10 +463,16 @@
 				goto stop;
 		}else if(c == Cforward){
 			bytesfrom = byteswritten + Seekbytes;
+		}else if(c == Cforwardfast){
+			bytesfrom = byteswritten + Seekbytesfast;
 		}else if(c == Cbackward){ /* to seek backwards we need to restart playback */
 			bytesfrom = byteswritten >= Seekbytes ? byteswritten - Seekbytes : 0;
 			n = 0; /* not an error */
 			break;
+		}else if(c == Cbackwardfast){
+			bytesfrom = byteswritten >= Seekbytesfast ? byteswritten - Seekbytesfast : 0;
+			n = 0; /* not an error */
+			break;
 		}
 
 		c = 0;
@@ -537,6 +546,20 @@
 }
 
 static void
+backwardfast(Player *player)
+{
+	if(player != nil)
+		sendul(player->ctl, Cbackwardfast);
+}
+
+static void
+forwardfast(Player *player)
+{
+	if(player != nil)
+		sendul(player->ctl, Cforwardfast);
+}
+
+static void
 readplist(void)
 {
 	Meta *m;
@@ -773,6 +796,12 @@
 				break;
 			case Kright:
 				forward(playercurr);
+				break;
+			case ',':
+				backwardfast(playercurr);
+				break;
+			case '.':
+				forwardfast(playercurr);
 				break;
 			case Kup:
 				pcur--;