Changeset 1977


Ignore:
Timestamp:
Oct 4, 2012, 6:28:42 PM (5 years ago)
Author:
sam
Message:

neercs: support arrow keys, pgup etc. and don't send keystrokes to the
terminal if the setup window is active.

Location:
trunk/tools/neercs
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/neercs/neercs.cpp

    r1866 r1977  
    5959}
    6060
    61 
    6261void Neercs::TickDraw(float seconds)
    6362{
  • trunk/tools/neercs/term/term.cpp

    r1962 r1977  
    2424#include "term.h"
    2525
     26extern bool g_setup;
     27
    2628Term::Term(ivec2 size)
    2729  : m_pty(0),
     
    4547
    4648#if defined HAVE_PTY_H || defined HAVE_UTIL_H || defined HAVE_LIBUTIL_H
    47     bool have_ctrl = Input::GetStatus(Key::LeftCtrl)
    48                       || Input::GetStatus(Key::RightCtrl);
    49     bool have_shift = Input::GetStatus(Key::LeftShift)
    50                        || Input::GetStatus(Key::RightShift);
    51 
    52     for (int i = 0x0; i < 0x7f; ++i)
    53     {
    54         if (Input::WasPressed((Key::Value)i))
     49    if (!g_setup)
     50    {
     51        bool have_ctrl = Input::GetStatus(Key::LeftCtrl)
     52                          || Input::GetStatus(Key::RightCtrl);
     53        bool have_shift = Input::GetStatus(Key::LeftShift)
     54                           || Input::GetStatus(Key::RightShift);
     55
     56        /* Check for standard ASCII keys */
     57        for (int i = 0x0; i < 0x7f; ++i)
    5558        {
    56             if (have_ctrl && i >= 'a' && i <= 'z')
     59            if (Input::WasPressed((Key::Value)i))
    5760            {
    58                 char c = i + 1 - 'a';
    59                 m_pty->WriteData(&c, 1);
     61                if (have_ctrl && i >= 'a' && i <= 'z')
     62                {
     63                    char c = i + 1 - 'a';
     64                    m_pty->WriteData(&c, 1);
     65                }
     66                else if (have_shift && i >= 'a' && i <= 'z')
     67                {
     68                    char c = i + 'A' - 'a';
     69                    m_pty->WriteData(&c, 1);
     70                }
     71                else
     72                {
     73                    char c = i;
     74                    m_pty->WriteData(&c, 1);
     75                }
    6076            }
    61             else if (have_shift && i >= 'a' && i <= 'z')
    62             {
    63                 char c = i + 'A' - 'a';
    64                 m_pty->WriteData(&c, 1);
    65             }
    66             else
    67             {
    68                 char c = i;
    69                 m_pty->WriteData(&c, 1);
    70             }
     77        }
     78
     79        /* Check for special keys */
     80        static struct { Key::Value k; char const *str; int len; } const lut[] =
     81        {
     82            { Key::Up, "\033OA", 3 },
     83            { Key::Down, "\033OB", 3 },
     84            { Key::Right, "\033OC", 3 },
     85            { Key::Left, "\033OD", 3 },
     86            { Key::PageUp, "\033[5~", 4 },
     87            { Key::PageDown, "\033[6~", 4 },
     88            { Key::Home, "\033[1~", 4 },
     89            { Key::Insert, "\033[2~", 4 },
     90            { Key::Delete, "\033[3~", 4 },
     91            { Key::End, "\033[4~", 4 },
     92#if 0 /* FIXME: disabled for now (used by the theme system */
     93            { Key::F1, "\033[11~", 5 },
     94            { Key::F2, "\033[12~", 5 },
     95            { Key::F3, "\033[13~", 5 },
     96            { Key::F4, "\033[14~", 5 },
     97            { Key::F5, "\033[15~", 5 },
     98            { Key::F6, "\033[17~", 5 },
     99            { Key::F7, "\033[18~", 5 },
     100            { Key::F8, "\033[19~", 5 },
     101            { Key::F9, "\033[20~", 5 },
     102            { Key::F10, "\033[21~", 5 },
     103            { Key::F11, "\033[23~", 5 },
     104            { Key::F12, "\033[24~", 5 },
     105#endif
     106        };
     107
     108        for (size_t i = 0; i < sizeof(lut) / sizeof(*lut); i++)
     109        {
     110            if (!have_ctrl && !have_shift)
     111                if (Input::WasPressed(lut[i].k))
     112                    m_pty->WriteData(lut[i].str, lut[i].len);
    71113        }
    72114    }
  • trunk/tools/neercs/video/render.cpp

    r1974 r1977  
    4444
    4545#define PID M_PI/180.0f    // pi ratio
     46
     47/*
     48 * Global variable -- ugly
     49 */
     50bool g_setup = true;
    4651
    4752/*
     
    580585    m_pause(false),
    581586    m_polygon(true),
    582     m_setup(true),
    583587    m_shader(true),
    584588    m_shader_glow(true),
     
    611615
    612616    /* draw setup */
    613     if (m_setup)
     617    if (g_setup)
    614618    {
    615619        /* background */
     
    708712    if (Input::WasPressed(Key::F1))
    709713    {
    710         m_setup = !m_setup;
    711         if (m_setup) setup_n = calc_item_length();
     714        g_setup = !g_setup;
     715        if (g_setup) setup_n = calc_item_length();
    712716        sync_flag = true;
    713717        sync_angle = main_angle;
     
    729733   if (Input::WasPressed(Key::Tab))
    730734    {
    731         if (m_setup)
     735        if (g_setup)
    732736        {
    733737            setup_switch = !setup_switch;
     
    738742    if (Input::WasPressed(Key::Up))
    739743    {
    740         if (m_setup)
     744        if (g_setup)
    741745        {
    742746            if (!setup_switch)
     
    788792    if (Input::WasPressed(Key::Down))
    789793    {
    790         if (m_setup)
     794        if (g_setup)
    791795        {
    792796            if (!setup_switch)
     
    838842    if (Input::WasPressed(Key::PageUp))
    839843    {
    840         if (m_setup)
     844        if (g_setup)
    841845        {
    842846            if (!setup_switch)
     
    887891    if (Input::WasPressed(Key::PageDown))
    888892    {
    889         if (m_setup)
     893        if (g_setup)
    890894        {
    891895            if (!setup_switch)
     
    936940    if (Input::WasPressed(Key::Left))
    937941    {
    938         if (m_setup && setup_switch)
     942        if (g_setup && setup_switch)
    939943        {
    940944            setup_var[setup_item_key].w -= setup_var[setup_item_key].z;
     
    945949    if (Input::WasPressed(Key::Right))
    946950    {
    947         if (m_setup && setup_switch)
     951        if (g_setup && setup_switch)
    948952        {
    949953            setup_var[setup_item_key].w += setup_var[setup_item_key].z;
     
    954958    if (Input::WasPressed(Key::Home))
    955959    {
    956         if (m_setup && setup_switch)
     960        if (g_setup && setup_switch)
    957961        {
    958962            setup_var[setup_item_key].w = setup_var[setup_item_key].x;
     
    962966    if (Input::WasPressed(Key::End))
    963967    {
    964         if (m_setup && setup_switch)
     968        if (g_setup && setup_switch)
    965969        {
    966970            setup_var[setup_item_key].w = setup_var[setup_item_key].y;
     
    10421046    m_txt_screen->Render();
    10431047
    1044     if (m_setup)
     1048    if (g_setup)
    10451049        m_txt_setup->Render();
    10461050
     
    10591063
    10601064    m_txt_screen->Blit(border, canvas_size);
    1061     if (m_setup)
     1065    if (g_setup)
    10621066        m_txt_setup->Blit((screen_size - setup_canvas_size) / 2, setup_canvas_size);
    10631067
  • trunk/tools/neercs/video/render.h

    r1971 r1977  
    3737    bool m_pause;
    3838    bool m_polygon;
    39     bool m_setup;
    4039    bool m_shader;
    4140    bool m_shader_glow;
Note: See TracChangeset for help on using the changeset viewer.