cscg24-guacamole

CSCG 2024 Challenge 'Guacamole Mashup'
git clone https://git.sinitax.com/sinitax/cscg24-guacamole
Log | Files | Refs | sfeed.txt

input.c (2188B)


      1/*
      2 * Licensed to the Apache Software Foundation (ASF) under one
      3 * or more contributor license agreements.  See the NOTICE file
      4 * distributed with this work for additional information
      5 * regarding copyright ownership.  The ASF licenses this file
      6 * to you under the Apache License, Version 2.0 (the
      7 * "License"); you may not use this file except in compliance
      8 * with the License.  You may obtain a copy of the License at
      9 *
     10 *   http://www.apache.org/licenses/LICENSE-2.0
     11 *
     12 * Unless required by applicable law or agreed to in writing,
     13 * software distributed under the License is distributed on an
     14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
     15 * KIND, either express or implied.  See the License for the
     16 * specific language governing permissions and limitations
     17 * under the License.
     18 */
     19
     20#include "config.h"
     21
     22#include "common/cursor.h"
     23#include "common/display.h"
     24#include "vnc.h"
     25
     26#include <guacamole/recording.h>
     27#include <guacamole/user.h>
     28#include <rfb/rfbclient.h>
     29
     30int guac_vnc_user_mouse_handler(guac_user* user, int x, int y, int mask) {
     31
     32    guac_client* client = user->client;
     33    guac_vnc_client* vnc_client = (guac_vnc_client*) client->data;
     34    rfbClient* rfb_client = vnc_client->rfb_client;
     35
     36    /* Store current mouse location/state */
     37    guac_common_cursor_update(vnc_client->display->cursor, user, x, y, mask);
     38
     39    /* Report mouse position within recording */
     40    if (vnc_client->recording != NULL)
     41        guac_recording_report_mouse(vnc_client->recording, x, y, mask);
     42
     43    /* Send VNC event only if finished connecting */
     44    if (rfb_client != NULL)
     45        SendPointerEvent(rfb_client, x, y, mask);
     46
     47    return 0;
     48}
     49
     50int guac_vnc_user_key_handler(guac_user* user, int keysym, int pressed) {
     51
     52    guac_vnc_client* vnc_client = (guac_vnc_client*) user->client->data;
     53    rfbClient* rfb_client = vnc_client->rfb_client;
     54
     55    /* Report key state within recording */
     56    if (vnc_client->recording != NULL)
     57        guac_recording_report_key(vnc_client->recording,
     58                keysym, pressed);
     59
     60    /* Send VNC event only if finished connecting */
     61    if (rfb_client != NULL)
     62        SendKeyEvent(rfb_client, keysym, pressed);
     63
     64    return 0;
     65}
     66