e.mods = static_cast(mods); // GLFW reports auto-repeat as its own action; a held key keeps acting, exactly // as holding the key on a keyboard does. e.down = action != GLFW_RELEASE; // A key has no position of its own: it goes to the row the pointer was last over, // which is the row the user is looking at. input::Controller& controller = (figure_ == nullptr || last_row_ >= row_controllers_.size()) ? controller_ : *row_controllers_[last_row_]; controller.on_key(e); } } // namespace plot::glfw