From 009ff317370ab6226f6dd11e1f8843db5d1e5c04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=84min=20Baumeler?= Date: Fri, 29 Aug 2025 10:13:44 +0200 Subject: [PATCH] bugfix: input keys; better controls --- src/sh/fzf.sh | 51 +++++++++++++++++++++++++++++++++++++++++++++----- src/sh/keys.sh | 18 +++++++++++------- 2 files changed, 57 insertions(+), 12 deletions(-) diff --git a/src/sh/fzf.sh b/src/sh/fzf.sh index 7667583..22bb387 100644 --- a/src/sh/fzf.sh +++ b/src/sh/fzf.sh @@ -207,13 +207,26 @@ fzf_handle_key() { # If we are in the insert mode, and the key pressed is an "input" key, then # put it and quit. if [ "$mode" = "$MODE_INSERT" ]; then - case ",$KEYS_INPUT," in + case ",$KEYS_INPUT_SINGLE," in *",$FZF_KEY,"*) - foo "...." + foo "single key" printf "put(%s)" "$FZF_KEY" return 0 ;; esac + case ",$KEYS_INPUT_SPECIAL," in + *",$FZF_KEY,"*) + foo "special key" + case "$FZF_KEY" in + "space") printf "put( )" ;; + "backspace") printf "backward-delete-char" ;; + "delete") printf "delete-char" ;; + "left") printf "backward-char" ;; + "right") printf "forward-char" ;; + esac + return 0 + ;; + esac fi # Handle key press @@ -307,7 +320,12 @@ fzf_handle_key() { esac ;; esac - case ",$KEYS_FILTER_PRIMARY," in + # VIEW_RELEASEGROUP="rg" + # VIEW_RELEASE="release" + # VIEW_LIST_ARTISTS="list-artists" + # VIEW_SELECT_ARTIST="select-artist" + # VIEW_PLAYLIST="playlist" + case ",$KEYS_FILTER_1," in *",$FZF_KEY,"*) case "$view" in "$VIEW_ARTIST" | "$VIEW_LIST_ALBUMS") @@ -317,12 +335,35 @@ fzf_handle_key() { esac ;; esac - case ",$KEYS_FILTER_SECONDARY," in + case ",$KEYS_FILTER_2," in *",$FZF_KEY,"*) case "$view" in "$VIEW_ARTIST" | "$VIEW_LIST_ALBUMS") secsymb="$(printf "$FORMAT_TYPE_HAS_SECONDARY" "")" - QUERY="$secsymb " + typesymb="$(printf "$FORMAT_TYPE_ALBUM" | sed "s/ /\\\ /g")" + QUERY="!$secsymb '$typesymb' " + ;; + esac + ;; + esac + case ",$KEYS_FILTER_3," in + *",$FZF_KEY,"*) + case "$view" in + "$VIEW_ARTIST" | "$VIEW_LIST_ALBUMS") + secsymb="$(printf "$FORMAT_TYPE_HAS_SECONDARY" "")" + typesymb="$(printf "$FORMAT_TYPE_EP" | sed "s/ /\\\ /g")" + QUERY="!$secsymb '$typesymb' " + ;; + esac + ;; + esac + case ",$KEYS_FILTER_4," in + *",$FZF_KEY,"*) + case "$view" in + "$VIEW_ARTIST" | "$VIEW_LIST_ALBUMS") + secsymb="$(printf "$FORMAT_TYPE_HAS_SECONDARY" "")" + typesymb="$(printf "$FORMAT_TYPE_SINGLE" | sed "s/ /\\\ /g")" + QUERY="!$secsymb '$typesymb' " ;; esac ;; diff --git a/src/sh/keys.sh b/src/sh/keys.sh index 777b973..2876dbc 100644 --- a/src/sh/keys.sh +++ b/src/sh/keys.sh @@ -1,5 +1,7 @@ -KEYS_INPUT='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="$KEYS_INPUT,'" +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,'" +KEYS_INPUT_SPECIAL="space,backspace,delete,left,right" +export KEYS_INPUT_SINGLE KEYS_INPUT_SPECIAL # Normal and insert mode KEYS_HALFPAGE_DOWN="${KEYS_HALFPAGE_DOWN:-"ctrl-d"}" @@ -9,8 +11,10 @@ KEYS_OUT="${KEYS_OUT:-"ctrl-h"}" KEYS_IN="${KEYS_IN:-"ctrl-l"}" KEYS_SELECT_ARTIST="${KEYS_SELECT_ARTIST:-"ctrl-a"}" KEYS_FILTER_LOCAL="${KEYS_FILTER_LOCAL:-"alt-l"}" -KEYS_FILTER_PRIMARY="${KEYS_FILTER_PRIMARY:-"alt-1"}" -KEYS_FILTER_SECONDARY="${KEYS_FILTER_SECONDARY:-"alt-2"}" +KEYS_FILTER_1="${KEYS_FILTER_1:-"alt-1"}" +KEYS_FILTER_2="${KEYS_FILTER_2:-"alt-2"}" +KEYS_FILTER_3="${KEYS_FILTER_3:-"alt-3"}" +KEYS_FILTER_4="${KEYS_FILTER_4:-"alt-4"}" KEYS_SWITCH_ARTIST_ALBUM="${KEYS_SWITCH_ARTIST_ALBUM:-"tab"}" KEYS_SWITCH_LOCAL_REMOTE="${KEYS_SWITCH_LOCAL_REMOTE:-"ctrl-/"}" KEYS_PLAY="${KEYS_PLAY:-"enter"}" @@ -35,16 +39,16 @@ KEYS_N_SEEK_BACKWARD="${KEYS_N_SEEK_BACKWARD:-"shift-left"}" KEYS_I_NORMAL="${KEYS_I_NORMAL:-"esc"}" # Grouping -KEYS_GROUP_NI="$KEYS_HALFPAGE_DOWN,$KEYS_HALFPAGE_UP,$KEYS_BROWSE,$KEYS_OUT,$KEYS_IN,$KEYS_SELECT_ARTIST,$KEYS_FILTER_LOCAL,$KEYS_FILTER_PRIMARY,$KEYS_FILTER_SECONDARY,$KEYS_SWITCH_ARTIST_ALBUM,$KEYS_SWITCH_LOCAL_REMOTE,$KEYS_PLAY,$KEYS_QUEUE,$KEYS_SHOW_PLAYLIST" +KEYS_GROUP_NI="$KEYS_HALFPAGE_DOWN,$KEYS_HALFPAGE_UP,$KEYS_BROWSE,$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" KEYS_GROUP_N="$KEYS_N_DOWN,$KEYS_N_UP,$KEYS_N_OUT,$KEYS_N_IN,$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_GROUP_I="$KEYS_I_NORMAL" -KEYS_ALL="$KEYS_GROUP_NI,$KEYS_GROUP_N,$KEYS_GROUP_I,$KEYS_INPUT" +KEYS_ALL="$KEYS_GROUP_NI,$KEYS_GROUP_N,$KEYS_GROUP_I,$KEYS_INPUT_SINGLE,$KEYS_INPUT_SPECIAL" export KEYS_HALFPAGE_DOWN KEYS_HALFPAGE_UP KEYS_BROWSE KEYS_OUT KEYS_IN \ - KEYS_SELECT_ARTIST KEYS_FILTER_LOCAL KEYS_FILTER_PRIMARY KEYS_FILTER_SECONDARY \ + 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_BOT KEYS_N_QUIT KEYS_N_INSERT \ KEYS_N_TOGGLE_PLAY_PAUSE KEYS_N_PLAY_NEXT KEYS_N_PLAY_PREV KEYS_N_SEEK_FORWARD \