VgaGames4

VgaGames4 - input man-pages

[.. upper level ..]

# vg4->input->textbuffer()

Set a text buffer for text input.

SYNTAX
void vg4->input->textbuffer(char *text, size_t tsize, const char *ch_acc, const char *ch_rej)
FUNCTION PARAMETERS

text | Text buffer or NULL = no buffer (deactivate text-input)
tsize | Size of text buffer
ch_acc | Allowed characters for text, or NULL = all
ch_rej | Not allowed characters for text, or NULL = none

DESCRIPTION
Set a text buffer for text input. If a text buffer is set, key strokes will be set into this buffer, even for keyboard keys which are not inserted with vg4->input->key_insert(). The buffer must be a character array of fixed size. With vg4->input->update() it will be filled according to the key strokes, and is always null-terminated. To restrict the input to allowed characters the parameters ch_acc and ch_rej can be set as following: - single UTF-8 characters: allow or inhibit this character - character groups: - %d = digits - %a = letters - %b = blanks - %p = special characters: any printable character which is not a space or an alphanumeric character Single characters take precedence over character-groups. Example: - ch_acc = %d%a.: allow digits and letters and period and colon - ch_acc = %d%a%p ch_rej = / allow digits and letters and special characters except slash (/)
EXAMPLE

      char tbuf[32];
      size_t tlen;

      /* set text buffer to tbuf[]
       * allow digits and letters and special characters except slash (/)
       */
      vg4->input->textbuffer(tbuf, sizeof(tbuf), "%d%a%p", "/");
      tlen = 0;

      for (;;) {
        if (!vg4->input->update(VG_TRUE)) { break; }

        /* if previous length of text buffer is unequal to actual length, print text buffer */
        if (tlen != strlen(tbuf)) {
          tlen = strlen(tbuf);
          printf("Buffer with length %d: \"%s\"\n", (int)tlen, tbuf);
        }

        vg4->window->flush();
        vg4->misc->wait_time(100);
      }

      /* deactivate text-input */
      vg4->input->textbuffer(NULL, 0, NULL, NULL);