Xavier Nayrac

Accro au TDD, rubyiste mais pas que, maker, heureux utilisateur de Vim, accordéoniste.
Si vous vous sentez particulièrement généreux, suivez moi sur Twitter.

Un éditeur pour le terminal - partie 9

| Comments

Niveau : intermédiaire

Dans le programme d’aujourd’hui, on s’occupe de déplacer le curseur.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
require 'curses'
include Curses

begin
  init_screen
  cbreak
  noecho
  stdscr.keypad(true)
  x = 0
  y = 0

  while (ch = getch) != KEY_F1
    case ch
    when KEY_LEFT then x -= 1
    when KEY_RIGHT then x += 1
    when KEY_UP then y -= 1
    when KEY_DOWN then y += 1
    end
    setpos(y, x)
    refresh
  end
ensure
  close_screen
end

Les détails:

Pour éviter que les caractères s’affiche sur le terminal:

1
  noecho

Pour rappel, le code suivant permet d’activer le pavé numérique, les flèches, etc.

1
  stdscr.keypad(true)

Positionner le curseur est aussi simple que ce qui suit. Comme toujours, attention, c’est y d’abord et x ensuite:

1
setpos(y, x)

Par contre, si vous jouer un peu avec ce programme, on voit que les sauts de lignes ne sont pas gérer automatiquement (quand j’arrive à la fin de la ligne et que j’appuie sur flèche droite, on ne passe pas à la ligne suivante par exemple). Ce sera à nous de le gérer…

Si on veut utiliser HJKL (comme dans Vim) pour se déplacer, on peut remplacer le contenu du case par:

1
2
3
4
when ?h then x -= 1
when ?l then x += 1
when ?k then y -= 1
when ?j then y += 1

Voilà.

À demain.

Articles connexes

Commentaires