xs is a user on mastodon.social. You can follow them or interact with them if you have an account anywhere in the fediverse. If you don't, you can sign up here.

Hey les Mastognous, vous êtes doué en #shell ?
J'ai un ptit script interactif qui a une boucle qui *read* une touche du clavier (-sn1) qui fonctionne bien pour les touches classiques, par contre j'arrive pas dans un *if* à vérifier si le retour est une flêche du clavier. Normalement [ "$input" = "^[[C" ]; then … mais ça marche pas, vous auriez une idée ?
J'ai vu un truc sur stackoverflow qui fait ça en plusieurs étapes mais du coup ça fout la merde pour le reste 😟 . En /bin/sh , pas bash
#help

@lord Yop,
en fait le sh ne supporte pas d'options -s ou -n pour le builtin read, il faut donc lire octet par octet depuis le tty en raw pour éviter d'avoir à faire un CR à chaque tour.

Voici un example compatible POSIX sh avec xxd, mais od ou hexdump, voir printf feront l'affaire: bpaste.net/raw/1eb0a420f00b

Mais pourquoi pas en bash ? ^^

@xs Erf effectivement avec /bin/sh made in bash ça fonctionne mais pas avec le vrai /bin/sh :-(
Bon du coup j'hésite à réellement passer sur bash mais à terme la machine devant acceuillir la bête ne devait pas avoir bash mais vu les complications…

xs @xs

@lord Avec la technique que je t'ai montré ça marchera avec sh, mais c'est pas propre. Idéalement je privilégie une interraction par l'environnement plutôt qu'interactive.

· Web · 0 · 0

@xs ouai mais là tout l'intéret du truc est l'interactivité, en gros je fais un client pour MPD, donc je fais pause / suivant /précédent et j'aimerai aussi avancer/reculer dans le morceau avec les flêches du clavier mais c'est un poil plus complexe…

@lord Ha d'accord, en tout cas là ça marchera avec tous les shell, plus qu'a mapper les keycodes que tu veux en hexa dans le case et appeller la commande mpd qui va bien.