Changeset 4016 for neercs


Ignore:
Timestamp:
Nov 23, 2009, 12:45:17 PM (10 years ago)
Author:
Jean-Yves Lamoureux
Message:
  • Implemented "DA -- Device Attributes" ansi sequence (vttest 6/4)
Location:
neercs/trunk/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • neercs/trunk/src/neercs.h

    r4014 r4016  
    275275int send_event(caca_event_t ev, struct screen_list* screen_list);
    276276int send_delay(struct screen_list* screen_list);
     277int send_ansi_sequence(struct screen_list *screen_list, char *str);
    277278
    278279/* Screens management */
  • neercs/trunk/src/server.c

    r4001 r4016  
    450450    char *str = NULL;
    451451    int size = 0;
     452
     453    if (screen_list->help)
     454    {
     455        return help_handle_key(screen_list, c); 
     456    }
     457
    452458    /* CTRL-A has been pressed before, handle this as a command, except that
    453        CTRL-A a sends literal CTRL-A */
    454 
    455     if (screen_list->help)
    456     {
    457         return help_handle_key(screen_list, c); 
    458     }
    459 
     459     CTRL-A a sends literal CTRL-A */
    460460    if (screen_list->command && (c != 'a'))
    461461    {
     
    515515}
    516516
     517int send_ansi_sequence(struct screen_list *screen_list, char *str)
     518{
     519    debug("Sending ansi '%s'\n", str);
     520    return write(screen_list->screen[screen_list->pty]->fd, str, strlen(str));
     521}
    517522
    518523int start_server(struct screen_list *screen_list)
  • neercs/trunk/src/term.c

    r3992 r4016  
    243243        {
    244244        }
    245        
     245
    246246        /* If there are not enough characters to parse the escape sequence,
    247247           wait until the next try. We require 3. */
     
    468468            param = 2;
    469469
    470             /* vttest use to interleave control characters (\014 CR or \010 BS)
    471                into CSI sequences, either directly after ESC[ or after param.
    472                Can't find anything related to this in any documentation nor
    473                XTerm sources, thought. */
     470            /* vttest use to interleave control characters (\014 CR or \010
     471               BS) into CSI sequences, either directly after ESC[ or after
     472               param. Can't find anything related to this in any documentation
     473               nor XTerm sources, thought. */
    474474
    475475            for (junk = param; i + junk < size; junk++)
     
    656656                    caca_set_attr(sc->cv, savedattr);
    657657                }
     658            case 'c':          /* DA -- Device Attributes */
     659                    /*
     660                     0 Base VT100, no options
     661                     1 Processor options (STP)
     662                     2 Advanced video option (AVO)
     663                     3 AVO and STP
     664                     4 Graphics processor option (GPO)
     665                     5 GPO and STP
     666                     6 GPO and AVO
     667                     7 GPO, STP, and AVO
     668                     */
     669                    /* Warning, argument is Pn */
     670                debug("ansi Got command c, argc %d, argv[0] (%d)\n", argc, argv[0], argv[0]);
     671                if (!argc || argv[0] == 0)
     672                {
     673                    send_ansi_sequence(screen_list, "\x1b[?1;0c");
     674                }
     675                else
     676                {
     677                    switch (argv[0])
     678                    {
     679                    case 1:
     680                        send_ansi_sequence(screen_list, "\x1b[?\x1;\x1c");
     681                        break;
     682                    case 2:
     683                        send_ansi_sequence(screen_list, "\x1b[?\x1;\x2c");
     684                        break;
     685                    case 3:
     686                        send_ansi_sequence(screen_list, "\x1b[?\x1;\x3c");
     687                        break;
     688                    case 4:
     689                        send_ansi_sequence(screen_list, "\x1b[?\x1;\x4c");
     690                        break;
     691                    case 5:
     692                        send_ansi_sequence(screen_list, "\x1b[?\x1;\x5c");
     693                        break;
     694                    case 6:
     695                        send_ansi_sequence(screen_list, "\x1b[?\x1;\x6c");
     696                        break;
     697                    case 7:
     698                        send_ansi_sequence(screen_list, "\x1b[?\x1;\x7c");
     699                        break;
     700                        default:
     701                            debug("Unsupported DA option '%d'\n", argv[0]);
     702                            break;
     703                    }
     704                }
     705                break;
    658706            case 'd':          /* VPA (0x64) - Line Position Absolute */
    659707                y = (argc && argv[0] > 0) ? argv[0] - 1 : 0;
     
    694742                break;
    695743            default:
    696                 debug("ansi import: unknown command \"^[[%.*s\"",
     744                debug("ansi import: unknown command \"^[%.*s\"",
    697745                      final - param + 1, buffer + i + param);
    698746                break;
     
    775823                if (((ch > ' ') && (ch <= '~'))
    776824                    &&
    777                     (sc->
    778                      conv_state.gn[sc->conv_state.ss ? sc->
    779                                    conv_state.gn[sc->conv_state.ss] : sc->
    780                                    conv_state.glr[0]] == '0'))
     825                    (sc->conv_state.
     826                     gn[sc->conv_state.ss ? sc->conv_state.
     827                        gn[sc->conv_state.ss] : sc->conv_state.glr[0]] == '0'))
    781828                {
    782829                    ch = dec_acs(ch);
Note: See TracChangeset for help on using the changeset viewer.