diff --git a/doc/keys b/doc/keys index 2b8366a1..ebe96df5 100644 --- a/doc/keys +++ b/doc/keys @@ -82,6 +82,8 @@ # #key_prev = '<' # +#key_replay = 263 127 +# #key_seek_forward = 'f' # #key_seek_backward = 'b' diff --git a/src/help.cpp b/src/help.cpp index a055f771..2841043a 100644 --- a/src/help.cpp +++ b/src/help.cpp @@ -172,6 +172,7 @@ void Help::GetKeybindings() *w << DisplayKeys(Key.Pause) << "Pause\n"; *w << DisplayKeys(Key.Next) << "Next track\n"; *w << DisplayKeys(Key.Prev) << "Previous track\n"; + *w << DisplayKeys(Key.Replay) << "Play current track from the beginning\n"; *w << DisplayKeys(Key.SeekForward) << "Seek forward\n"; *w << DisplayKeys(Key.SeekBackward) << "Seek backward\n"; *w << DisplayKeys(Key.VolumeDown) << "Decrease volume\n"; diff --git a/src/ncmpcpp.cpp b/src/ncmpcpp.cpp index 8eba73c2..96e68666 100644 --- a/src/ncmpcpp.cpp +++ b/src/ncmpcpp.cpp @@ -551,7 +551,13 @@ int main(int argc, char *argv[]) design_changed = 1; resize_screen(); } - else if (Keypressed(input, Key.GoToParentDir)) + else if (Keypressed(input, Key.GoToParentDir) + && (myScreen == myBrowser +# ifdef HAVE_TAGLIB_H + || myScreen == myTagEditor +# endif // HAVE_TAGLIB_H + ) + ) { if (myScreen == myBrowser && myBrowser->CurrentDir() != "/") { @@ -797,6 +803,14 @@ int main(int argc, char *argv[]) } } } + else if (Keypressed(input, Key.Replay)) + { + if (Mpd.isPlaying()) + { + Mpd.Seek(0); + UpdateStatusImmediately = 1; + } + } else if (Keypressed(input, Key.Prev)) { Mpd.Prev(); diff --git a/src/settings.cpp b/src/settings.cpp index 7c603431..3d2732e4 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -184,6 +184,7 @@ void NcmpcppKeys::SetDefaults() Pause[0] = 'P'; Next[0] = '>'; Prev[0] = '<'; + Replay[0] = KEY_BACKSPACE; SeekForward[0] = 'f'; SeekBackward[0] = 'b'; ToggleRepeat[0] = 'r'; @@ -268,6 +269,7 @@ void NcmpcppKeys::SetDefaults() Pause[1] = NullKey; Next[1] = NullKey; Prev[1] = NullKey; + Replay[1] = 127; SeekForward[1] = NullKey; SeekBackward[1] = NullKey; ToggleRepeat[1] = NullKey; @@ -503,6 +505,8 @@ void NcmpcppKeys::Read() GetKeys(key, Next); else if (key.find("key_prev ") != std::string::npos) GetKeys(key, Prev); + else if (key.find("key_replay ") != std::string::npos) + GetKeys(key, Replay); else if (key.find("key_seek_forward ") != std::string::npos) GetKeys(key, SeekForward); else if (key.find("key_seek_backward ") != std::string::npos) diff --git a/src/settings.h b/src/settings.h index ee565c57..00116786 100644 --- a/src/settings.h +++ b/src/settings.h @@ -89,6 +89,7 @@ struct NcmpcppKeys int Pause[2]; int Next[2]; int Prev[2]; + int Replay[2]; int SeekForward[2]; int SeekBackward[2]; int ToggleRepeat[2];