Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/hid/display/input.c

    r78445be8 r6fbd1f9  
    11/*
    2  * Copyright (c) 2019 Jiri Svoboda
     2 * Copyright (c) 2024 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    3434
    3535#include <errno.h>
     36#include <inttypes.h>
    3637#include <io/input.h>
    3738#include <io/log.h>
     
    3940#include <str_error.h>
    4041#include "display.h"
     42#include "ievent.h"
    4143#include "input.h"
    4244#include "main.h"
     
    4446static errno_t ds_input_ev_active(input_t *);
    4547static errno_t ds_input_ev_deactive(input_t *);
    46 static errno_t ds_input_ev_key(input_t *, kbd_event_type_t, keycode_t, keymod_t, wchar_t);
    47 static errno_t ds_input_ev_move(input_t *, int, int);
    48 static errno_t ds_input_ev_abs_move(input_t *, unsigned, unsigned, unsigned, unsigned);
    49 static errno_t ds_input_ev_button(input_t *, int, int);
     48static errno_t ds_input_ev_key(input_t *, unsigned, kbd_event_type_t, keycode_t,
     49    keymod_t, char32_t);
     50static errno_t ds_input_ev_move(input_t *, unsigned, int, int);
     51static errno_t ds_input_ev_abs_move(input_t *, unsigned, unsigned, unsigned,
     52    unsigned, unsigned);
     53static errno_t ds_input_ev_button(input_t *, unsigned, int, int);
     54static errno_t ds_input_ev_dclick(input_t *, unsigned, int);
    5055
    5156static input_ev_ops_t ds_input_ev_ops = {
     
    5560        .move = ds_input_ev_move,
    5661        .abs_move = ds_input_ev_abs_move,
    57         .button = ds_input_ev_button
     62        .button = ds_input_ev_button,
     63        .dclick = ds_input_ev_dclick
    5864};
    5965
     
    6874}
    6975
    70 static errno_t ds_input_ev_key(input_t *input, kbd_event_type_t type,
    71     keycode_t key, keymod_t mods, wchar_t c)
     76static errno_t ds_input_ev_key(input_t *input, unsigned kbd_id,
     77    kbd_event_type_t type, keycode_t key, keymod_t mods, char32_t c)
    7278{
    7379        ds_display_t *disp = (ds_display_t *) input->user;
     
    7581        errno_t rc;
    7682
     83        event.kbd_id = kbd_id;
    7784        event.type = type;
    7885        event.key = key;
     
    8188
    8289        ds_display_lock(disp);
    83         rc = ds_display_post_kbd_event(disp, &event);
    84         ds_display_unlock(disp);
    85         return rc;
    86 }
    87 
    88 static errno_t ds_input_ev_move(input_t *input, int dx, int dy)
    89 {
    90         ds_display_t *disp = (ds_display_t *) input->user;
    91         ptd_event_t event;
    92         errno_t rc;
    93 
     90        rc = ds_ievent_post_kbd(disp, &event);
     91        ds_display_unlock(disp);
     92        return rc;
     93}
     94
     95static errno_t ds_input_ev_move(input_t *input, unsigned pos_id, int dx, int dy)
     96{
     97        ds_display_t *disp = (ds_display_t *) input->user;
     98        ptd_event_t event;
     99        errno_t rc;
     100
     101        event.pos_id = pos_id;
    94102        event.type = PTD_MOVE;
    95103        event.dmove.x = dx;
     
    97105
    98106        ds_display_lock(disp);
    99         rc = ds_display_post_ptd_event(disp, &event);
    100         ds_display_unlock(disp);
    101         return rc;
    102 }
    103 
    104 static errno_t ds_input_ev_abs_move(input_t *input, unsigned x, unsigned y,
    105     unsigned max_x, unsigned max_y)
    106 {
    107         ds_display_t *disp = (ds_display_t *) input->user;
    108         ptd_event_t event;
    109         errno_t rc;
    110 
     107        rc = ds_ievent_post_ptd(disp, &event);
     108        ds_display_unlock(disp);
     109        return rc;
     110}
     111
     112static errno_t ds_input_ev_abs_move(input_t *input, unsigned pos_id, unsigned x,
     113    unsigned y, unsigned max_x, unsigned max_y)
     114{
     115        ds_display_t *disp = (ds_display_t *) input->user;
     116        ptd_event_t event;
     117        errno_t rc;
     118
     119        event.pos_id = pos_id;
    111120        event.type = PTD_ABS_MOVE;
    112121        event.apos.x = x;
     
    118127
    119128        ds_display_lock(disp);
    120         rc = ds_display_post_ptd_event(disp, &event);
    121         ds_display_unlock(disp);
    122         return rc;
    123 }
    124 
    125 static errno_t ds_input_ev_button(input_t *input, int bnum, int bpress)
    126 {
    127         ds_display_t *disp = (ds_display_t *) input->user;
    128         ptd_event_t event;
    129         errno_t rc;
    130 
     129        rc = ds_ievent_post_ptd(disp, &event);
     130        ds_display_unlock(disp);
     131        return rc;
     132}
     133
     134static errno_t ds_input_ev_button(input_t *input, unsigned pos_id, int bnum,
     135    int bpress)
     136{
     137        ds_display_t *disp = (ds_display_t *) input->user;
     138        ptd_event_t event;
     139        errno_t rc;
     140
     141        event.pos_id = pos_id;
    131142        event.type = bpress ? PTD_PRESS : PTD_RELEASE;
    132143        event.btn_num = bnum;
     
    135146
    136147        ds_display_lock(disp);
    137         rc = ds_display_post_ptd_event(disp, &event);
     148        rc = ds_ievent_post_ptd(disp, &event);
     149        ds_display_unlock(disp);
     150        return rc;
     151}
     152
     153static errno_t ds_input_ev_dclick(input_t *input, unsigned pos_id, int bnum)
     154{
     155        ds_display_t *disp = (ds_display_t *) input->user;
     156        ptd_event_t event;
     157        errno_t rc;
     158
     159        event.pos_id = pos_id;
     160        event.type = PTD_DCLICK;
     161        event.btn_num = bnum;
     162        event.dmove.x = 0;
     163        event.dmove.y = 0;
     164
     165        ds_display_lock(disp);
     166        rc = ds_ievent_post_ptd(disp, &event);
    138167        ds_display_unlock(disp);
    139168        return rc;
Note: See TracChangeset for help on using the changeset viewer.