diff --git a/src/main.sh b/src/main.sh index cf8ef2f..816b608 100755 --- a/src/main.sh +++ b/src/main.sh @@ -89,6 +89,10 @@ case "${1:-}" in esac exit 0 ;; +"--playback") + debug "NOT IMPLEMENTED" + exit 0 + ;; "--filter") mode=$2 view=$3 @@ -380,7 +384,7 @@ IN_SEARCH_ARTIST_VIEW="$(printf "$IN_VIEW_PATTERN" "$VIEW_SEARCH_ARTIST")" IN_SEARCH_ALBUM_VIEW="$(printf "$IN_VIEW_PATTERN" "$VIEW_SEARCH_ALBUM")" FZF_CURRENT_MODE="\$FZF_INPUT_STATE" FZF_CURRENT_VIEW="\$FZF_BORDER_LABEL" -PUT_FZF_KEY_LOGIC="case \"\$FZF_KEY\" in \"space\") echo \"put( )\";; \"backspace\"|\"bspace\"|\"bs\") echo \"backward-delete-char\";; \"delete\"|\"del\") echo \"delete-char\";; *) echo \"put(\$FZF_KEY)\";; esac" +PUT_FZF_KEY_LOGIC="case \"\$FZF_KEY\" in \"space\") echo \"put( )\";; \"left\") echo \"backward-char\";; \"right\") echo \"forward-char\";; \"backspace\"|\"bspace\"|\"bs\") echo \"backward-delete-char\";; \"delete\"|\"del\") echo \"delete-char\";; *) echo \"put(\$FZF_KEY)\";; esac" while true; do case "$VIEW" in "$VIEW_SELECT_ARTIST") @@ -493,9 +497,8 @@ open \"\$(dirname {4})\"" \ --bind="$KEYS_SHOW_PLAYLIST:print($VIEW_PLAYLIST)+accept" \ --bind="$KEYS_QUIT:print($VIEW_QUIT)+accept" \ --bind="$KEYS_N_QUIT:transform:$IN_NORMAL_MODE && ($IN_LIST_ARTISTS_VIEW && echo \"print($VIEW_QUIT)+accept\" || $0 --draw $MODE_NORMAL $VIEW_LIST_ARTISTS) || $PUT_FZF_KEY_LOGIC" \ - --bind="$KEYS_PLAY:" \ - --bind="$KEYS_QUEUE:" \ - --bind="$KEYS_SHOW_PLAYLIST:" \ + --bind="$KEYS_PLAYBACK:transform:$0 --playback" \ + --bind="$KEYS_N_PLAYBACK:transform:$IN_NORMAL_MODE && $0 --playback || $PUT_FZF_KEY_LOGIC" \ --bind="change:execute-silent($0 --fzf-change $FZF_CURRENT_VIEW &)+reload:$0 --fzf-change-reload" \ --preview-window="right,25%,border-left,wrap,<30(hidden)" \ --preview="$0 --preview-artist {3}" \ diff --git a/src/sh/fzf.sh b/src/sh/fzf.sh index 6ba75fb..82454c0 100644 --- a/src/sh/fzf.sh +++ b/src/sh/fzf.sh @@ -569,7 +569,7 @@ fzf_handle_key() { esac ;; esac - case ",$KEYS_N_TOGGLE_PLAY_PAUSE," in + case ",$KEYS_N_TOGGLE_PLAYBACK," in *",$FZF_KEY,"*) mpv_toggle_pause >/dev/null ;; esac diff --git a/src/sh/keys.sh b/src/sh/keys.sh index 493d406..1530d59 100644 --- a/src/sh/keys.sh +++ b/src/sh/keys.sh @@ -54,6 +54,15 @@ # view VIEW_LIST_ARTISTS (normal mode) # # Playback: +# - KEYS_PLAY: Play selected release or selected track +# - KEYS_QUEUE: Queue selected release or selected track +# - KEYS_QUEUE_NEXT: Queue selected release or selected track as next entry in +# the playlist +# - KEYS_N_TOGGLE_PLAYBACK: Play-pause toggle +# - KEYS_N_PLAY_NEXT: Play next track +# - KEYS_N_PLAY_PREV: Play previous track +# - KEYS_N_SEEK_FORWARD: Seek forward +# - KEYS_N_SEEK_BACKWARD: Seek backward # # Playlist: # @@ -106,7 +115,28 @@ KEYS_SHOW_PLAYLIST="${KEYS_SHOW_PLAYLIST:-"ctrl-p"}" KEYS_QUIT="${KEYS_QUIT:-"ctrl-c"}" KEYS_N_QUIT="${KEYS_N_QUIT:-"q"}" +# Playback: +KEYS_PLAY="${KEYS_PLAY:-"enter"}" +KEYS_QUEUE="${KEYS_QUEUE:-"ctrl-alt-m"}" +KEYS_QUEUE_NEXT="${KEYS_QUEUE_NEXT:-"ctrl-alt-n"}" +KEYS_TOGGLE_PLAYBACK="${KEYS_TOGGLE_PLAYBACK:-"alt-space"}" +KEYS_PLAY_NEXT="${KEYS_PLAY_NEXT:-"alt-right"}" +KEYS_PLAY_PREV="${KEYS_PLAY_PREV:-"alt-left"}" +KEYS_SEEK_FORWARD="${KEYS_SEEK_FORWARD:-"alt-shift-right,shift-right"}" +KEYS_SEEK_BACKWARD="${KEYS_SEEK_BACKWARD:-"alt-shift-left,shift-left"}" +KEYS_PLAYBACK="$KEYS_PLAY,$KEYS_QUEUE,$KEYS_QUEUE_NEXT,$KEYS_TOGGLE_PLAYBACK,$KEYS_PLAY_NEXT,$KEYS_PLAY_PREV,$KEYS_SEEK_FORWARD,$KEYS_SEEK_BACKWARD" +KEYS_N_PLAY="${KEYS_PLAY:-"."}" +KEYS_N_QUEUE="${KEYS_QUEUE:-","}" +KEYS_N_QUEUE_NEXT="${KEYS_QUEUE_NEXT:-";"}" +KEYS_N_TOGGLE_PLAYBACK="${KEYS_N_TOGGLE_PLAYBACK:-"space"}" +KEYS_N_PLAY_NEXT="${KEYS_N_PLAY_NEXT:-"right,n"}" +KEYS_N_PLAY_PREV="${KEYS_N_PLAY_PREV:-"left,p"}" +KEYS_N_SEEK_FORWARD="${KEYS_N_SEEK_FORWARD:-"N,f"}" +KEYS_N_SEEK_BACKWARD="${KEYS_N_SEEK_BACKWARD:-"P,b"}" +KEYS_N_PLAYBACK="$KEYS_N_PLAY,$KEYS_N_QUEUE,$KEYS_N_QUEUE_NEXT,$KEYS_N_TOGGLE_PLAYBACK,$KEYS_N_PLAY_NEXT,$KEYS_N_PLAY_PREV,$KEYS_N_SEEK_FORWARD,$KEYS_N_SEEK_BACKWARD" + ## Not yet characterized +########################## KEYS_INPUT_SINGLE='0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,!,",#,$,%,&,\,(,),*,+,,,-,.,/,:,;,<,=,>,?,@,[,\,\,],^,_,`,{,|,},~' KEYS_INPUT_SINGLE="$KEYS_INPUT_SINGLE,'" @@ -114,20 +144,11 @@ KEYS_INPUT_SPECIAL="space,backspace,delete,left,right" export KEYS_INPUT_SINGLE KEYS_INPUT_SPECIAL # Normal and insert mode -KEYS_PLAY="${KEYS_PLAY:-"enter"}" -KEYS_QUEUE="${KEYS_QUEUE:-"ctrl-alt-m"}" -KEYS_SHOW_PLAYLIST="${KEYS_SHOW_PLAYLIST:-"ctrl-p"}" KEYS_NI="$KEYS_HALFPAGE_DOWN,$KEYS_HALFPAGE_UP,$KEYS_BROWSE,$KEYS_OPEN,$KEYS_OUT,$KEYS_IN,$KEYS_SELECT_ARTIST,$KEYS_FILTER_LOCAL,$KEYS_FILTER_1,$KEYS_FILTER_2,$KEYS_FILTER_3,$KEYS_FILTER_4,$KEYS_SWITCH_ARTIST_ALBUM,$KEYS_SWITCH_LOCAL_REMOTE,$KEYS_PLAY,$KEYS_QUEUE,$KEYS_SHOW_PLAYLIST" export KEYS_NI # Keys in normal mode only -KEYS_N_INSERT="${KEYS_N_INSERT:-"a,i,/"}" -KEYS_N_TOGGLE_PLAY_PAUSE="${KEYS_N_TOGGLE_PLAY_PAUSE:-"space"}" -KEYS_N_PLAY_NEXT="${KEYS_N_PLAY_NEXT:-"right"}" -KEYS_N_PLAY_PREV="${KEYS_N_PLAY_PREV:-"left"}" -KEYS_N_SEEK_FORWARD="${KEYS_N_SEEK_FORWARD:-"shift-right"}" -KEYS_N_SEEK_BACKWARD="${KEYS_N_SEEK_BACKWARD:-"shift-left"}" -KEYS_N="$KEYS_N_DOWN,$KEYS_N_UP,$KEYS_N_OUT,$KEYS_N_IN,$KEYS_N_TOP,$KEYS_N_BOT,$KEYS_N_QUIT,$KEYS_N_INSERT,$KEYS_N_TOGGLE_PLAY_PAUSE,$KEYS_N_PLAY_NEXT,$KEYS_N_PLAY_PREV,$KEYS_N_SEEK_FORWARD,$KEYS_N_SEEK_BACKWARD" +KEYS_N="$KEYS_N_DOWN,$KEYS_N_UP,$KEYS_N_OUT,$KEYS_N_IN,$KEYS_N_TOP,$KEYS_N_BOT,$KEYS_N_QUIT,$KEYS_N_INSERT,$KEYS_N_TOGGLE_PLAYBACK,$KEYS_N_PLAY_NEXT,$KEYS_N_PLAY_PREV,$KEYS_N_SEEK_FORWARD,$KEYS_N_SEEK_BACKWARD" export KEYS_N # Keys in insert mode only @@ -146,7 +167,7 @@ export KEYS_HALFPAGE_DOWN KEYS_HALFPAGE_UP KEYS_OPEN KEYS_BROWSE KEYS_OUT KEYS_I KEYS_SELECT_ARTIST KEYS_FILTER_LOCAL KEYS_FILTER_1 KEYS_FILTER_2 KEYS_FILETER_3 KEYS_FILTER_4 \ KEYS_SWITCH_ARTIST_ALBUM KEYS_SWITCH_LOCAL_REMOTE KEYS_PLAY KEYS_QUEUE \ KEYS_N_DOWN KEYS_N_UP KEYS_N_OUT KEYS_N_IN KEYS_N_TOP KEYS_N_BOT KEYS_N_QUIT KEYS_N_INSERT \ - KEYS_N_TOGGLE_PLAY_PAUSE KEYS_N_PLAY_NEXT KEYS_N_PLAY_PREV KEYS_N_SEEK_FORWARD \ + KEYS_N_TOGGLE_PLAYBACK KEYS_N_PLAY_NEXT KEYS_N_PLAY_PREV KEYS_N_SEEK_FORWARD \ KEYS_N_SEEK_BACKWARD KEYS_SHOW_PLAYLIST \ KEYS_I_NORMAL \ KEYS_GROUP_NI KEYS_GROUP_N KEYS_GROUP_I KEYS PLAYLIST KEYS_ALL