Files
musicplayer/src/mpv/control.gleam
Alexander Heldt 4c73244787 Map Key to Control
2025-11-15 17:47:59 +01:00

28 lines
554 B
Gleam

import mpv/internal.{type Key}
import tcp/reason.{type Reason}
import tcp/tcp.{type Socket}
pub type Control {
TogglePlayPause
Exit
}
pub fn from_key(key: Key) -> Result(Control, Nil) {
case key {
internal.Char(char) -> char_control(char)
_ -> Error(Nil)
}
}
fn char_control(char: String) -> Result(Control, Nil) {
case char {
" " -> Ok(TogglePlayPause)
"q" -> Ok(Exit)
_ -> Error(Nil)
}
}
pub fn toggle_play_pause(socket: Socket) -> Result(Nil, Reason) {
tcp.send(socket, "{\"command\":[\"cycle\",\"pause\"]}\n")
}