bugfix: multiple keys support

This commit is contained in:
2025-08-27 17:51:09 +02:00
parent a1ae20fa82
commit ea9ff0501d
2 changed files with 62 additions and 26 deletions

View File

@@ -231,15 +231,16 @@ if [ "${1:-}" = "--fzf-change" ]; then
fi
if [ "${1:-}" = "--fzf-key" ]; then
foo "KEY: $*"
foo "KEY: $*; FZF_KEY=$FZF_KEY"
mbid="${2:-}"
path="${3:-}"
mode=$(cut -d "#" -f 1 "$MODEFILE")
args=$(cut -d "#" -f 2- "$MODEFILE")
case ",$FZF_KEY," in
*",$KEYS_PLAY,"*)
[ "$path" ] && case "$mode" in
case ",$KEYS_PLAY," in
*",$FZF_KEY,"*)
[ "$path" ] || exit 0
case "$mode" in
"$MODE_RELEASEGROUP")
tmplist=$(mktemp)
generate_playlist "$mbid" "$path" >"$tmplist"
@@ -251,8 +252,11 @@ if [ "${1:-}" = "--fzf-key" ]; then
;;
esac
;;
*",$KEYS_QUEUE,"*)
[ "$path" ] && case "$mode" in
esac
case ",$KEYS_QUEUE," in
*",$FZF_KEY,"*)
[ "$path" ] || exit 0
case "$mode" in
"$MODE_RELEASEGROUP")
tmplist=$(mktemp)
generate_playlist "$mbid" "$path" >"$tmplist"
@@ -264,20 +268,38 @@ if [ "${1:-}" = "--fzf-key" ]; then
;;
esac
;;
*",$KEYS_TOGGLE_PLAY_PAUSE,"*) mpv_toggle_pause >/dev/null ;;
*",$KEYS_PLAY_NEXT,"*) [ "$path" ] && mpv_next >/dev/null ;;
*",$KEYS_PLAY_PREV,"*) [ "$path" ] && mpv_prev >/dev/null ;;
*",$KEYS_SEEK_FORWARD,"*) mpv_seek_forward >/dev/null ;;
*",$KEYS_SEEK_BACKWARD,"*) mpv_seek_backward >/dev/null ;;
*",$KEYS_HALFPAGE_DOWN,"*) printf "half-page-down" ;;
*",$KEYS_HALFPAGE_UP,"*) printf "half-page-up" ;;
*",$KEYS_FILTER_LOCAL,"*)
esac
case ",$KEYS_TOGGLE_PLAY_PAUSE," in
*",$FZF_KEY,"*) mpv_toggle_pause >/dev/null ;;
esac
case ",$KEYS_PLAY_NEXT," in
*",$FZF_KEY,"*) [ "$path" ] && mpv_next >/dev/null ;;
esac
case ",$KEYS_PLAY_PREV," in
*",$FZF_KEY,"*) [ "$path" ] && mpv_prev >/dev/null ;;
esac
case ",$KEYS_SEEK_FORWARD," in
*",$FZF_KEY,"*) mpv_seek_forward >/dev/null ;;
esac
case ",$KEYS_SEEK_BACKWARD," in
*",$FZF_KEY,"*) mpv_seek_backward >/dev/null ;;
esac
case ",$KEYS_HALFPAGE_DOWN," in
*",$FZF_KEY,"*) printf "half-page-down" ;;
esac
case ",$KEYS_HALFPAGE_UP," in
*",$FZF_KEY,"*) printf "half-page-up" ;;
esac
case ",$KEYS_FILTER_LOCAL," in
*",$FZF_KEY,"*)
case "$mode" in
"$MODE_SEARCH_ARTIST" | "$MODE_SEARCH_ALBUM") ;;
*) QUERY="$FORMAT_LOCAL " ;;
esac
;;
*",$KEYS_SWITCH_ARTIST_ALBUM,"*)
esac
case ",$KEYS_SWITCH_ARTIST_ALBUM," in
*",$FZF_KEY,"*)
case "$mode" in
"$MODE_SEARCH_ARTIST") MODE_NEXT="$MODE_SEARCH_ALBUM" ;;
"$MODE_SEARCH_ALBUM") MODE_NEXT="$MODE_SEARCH_ARTIST" ;;
@@ -285,7 +307,9 @@ if [ "${1:-}" = "--fzf-key" ]; then
"$MODE_LIST_ALBUMS") MODE_NEXT="$MODE_LIST_ARTISTS" ;;
esac
;;
*",$KEYS_SWITCH_LOCAL_REMOTE,"*)
esac
case ",$KEYS_SWITCH_LOCAL_REMOTE," in
*",$FZF_KEY,"*)
case "$mode" in
"$MODE_SEARCH_ARTIST") MODE_NEXT="$MODE_LIST_ARTISTS" ;;
"$MODE_SEARCH_ALBUM") MODE_NEXT="$MODE_LIST_ALBUMS" ;;
@@ -293,7 +317,9 @@ if [ "${1:-}" = "--fzf-key" ]; then
"$MODE_LIST_ALBUMS") MODE_NEXT="$MODE_SEARCH_ALBUM" ;;
esac
;;
*",$KEYS_BROWSE,"*)
esac
case ",$KEYS_BROWSE," in
*",$FZF_KEY,"*)
[ "$mbid" ] || exit 0
case "$mode" in
"$MODE_SEARCH_ARTIST" | "$MODE_LIST_ARTISTS") urltype="artist" ;;
@@ -303,7 +329,9 @@ if [ "${1:-}" = "--fzf-key" ]; then
esac
printf "execute-silent(xdg-open \"https://musicbrainz.org/%s/%s\" &)" "$urltype" "$mbid"
;;
*",$KEYS_OUT,"*)
esac
case ",$KEYS_OUT," in
*",$FZF_KEY,"*)
case "$mode" in
"$MODE_ARTIST")
MODE_NEXT="$MODE_LIST_ARTISTS"
@@ -319,7 +347,9 @@ if [ "${1:-}" = "--fzf-key" ]; then
;;
esac
;;
*",$KEYS_IN,"*)
esac
case ",$KEYS_IN," in
*",$FZF_KEY,"*)
[ "$mbid" ] || exit 0
MODE_NEXT_ARGS="$mbid"
case "$mode" in
@@ -334,7 +364,9 @@ if [ "${1:-}" = "--fzf-key" ]; then
;;
esac
;;
*",$KEYS_SELECT_ARTIST,"*)
esac
case ",$KEYS_SELECT_ARTIST," in
*",$FZF_KEY,"*)
[ "$mbid" ] || exit 0
case "$mode" in
"$MODE_ARTIST" | "$MODE_SEARCH_ARTIST" | "$MODE_LIST_ARTISTS")
@@ -352,12 +384,16 @@ if [ "${1:-}" = "--fzf-key" ]; then
esac
[ "$MODE_NEXT_ARGS" ] && MODE_NEXT="$MODE_SELECT_ARTIST"
;;
*",$KEYS_FILTER_PRIMARY,"*)
esac
case ",$KEYS_FILTER_PRIMARY," in
*",$FZF_KEY,"*)
[ "$mode" = "$MODE_ARTIST" ] || exit 0
secsymb="$(printf "$FORMAT_TYPE_HAS_SECONDARY" "")"
QUERY="!$secsymb "
;;
*",$KEYS_FILTER_SECONDARY,"*)
esac
case ",$KEYS_FILTER_SECONDARY," in
*",$FZF_KEY,"*)
[ "$mode" = "$MODE_ARTIST" ] || exit 0
secsymb="$(printf "$FORMAT_TYPE_HAS_SECONDARY" "")"
QUERY="$secsymb "