Changeset 60ebe63 in mainline for uspace/srv


Ignore:
Timestamp:
2022-11-08T21:20:23Z (3 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
7bcd15f
Parents:
3a6d44b7
Message:

Store positioning device ID in position events

Location:
uspace/srv/hid
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/hid/console/console.c

    r3a6d44b7 r60ebe63  
    11/*
    2  * Copyright (c) 2021 Jiri Svoboda
     2 * Copyright (c) 2022 Jiri Svoboda
    33 * Copyright (c) 2011 Martin Decky
    44 * All rights reserved.
     
    120120static errno_t input_ev_active(input_t *);
    121121static errno_t input_ev_deactive(input_t *);
    122 static errno_t input_ev_key(input_t *, kbd_event_type_t, keycode_t, keymod_t, char32_t);
    123 static errno_t input_ev_move(input_t *, int, int);
    124 static errno_t input_ev_abs_move(input_t *, unsigned, unsigned, unsigned, unsigned);
    125 static errno_t input_ev_button(input_t *, int, int);
    126 static errno_t input_ev_dclick(input_t *, int);
     122static errno_t input_ev_key(input_t *, unsigned, kbd_event_type_t, keycode_t,
     123    keymod_t, char32_t);
     124static errno_t input_ev_move(input_t *, unsigned, int, int);
     125static errno_t input_ev_abs_move(input_t *, unsigned, unsigned, unsigned,
     126    unsigned, unsigned);
     127static errno_t input_ev_button(input_t *, unsigned, int, int);
     128static errno_t input_ev_dclick(input_t *, unsigned, int);
    127129
    128130static input_ev_ops_t input_ev_ops = {
     
    357359}
    358360
    359 static errno_t input_ev_key(input_t *input, kbd_event_type_t type, keycode_t key,
    360     keymod_t mods, char32_t c)
     361static errno_t input_ev_key(input_t *input, unsigned kbd_id,
     362    kbd_event_type_t type, keycode_t key, keymod_t mods, char32_t c)
    361363{
    362364        cons_event_t event;
     
    369371                event.type = CEV_KEY;
    370372
     373                (void)kbd_id;
    371374                event.ev.key.type = type;
    372375                event.ev.key.key = key;
     
    417420}
    418421
    419 static errno_t input_ev_move(input_t *input, int dx, int dy)
    420 {
     422static errno_t input_ev_move(input_t *input, unsigned pos_id, int dx, int dy)
     423{
     424        (void) pos_id;
    421425        pointer_update(pointer_x + dx, pointer_y + dy);
    422426        return EOK;
    423427}
    424428
    425 static errno_t input_ev_abs_move(input_t *input, unsigned x, unsigned y,
    426     unsigned max_x, unsigned max_y)
    427 {
     429static errno_t input_ev_abs_move(input_t *input, unsigned pos_id, unsigned x,
     430    unsigned y, unsigned max_x, unsigned max_y)
     431{
     432        (void)pos_id;
    428433        pointer_update(mouse_scale_x * cols * x / max_x, mouse_scale_y * rows * y / max_y);
    429434        return EOK;
    430435}
    431436
    432 static errno_t input_ev_button(input_t *input, int bnum, int bpress)
     437static errno_t input_ev_button(input_t *input, unsigned pos_id, int bnum,
     438    int bpress)
    433439{
    434440        cons_event_t event;
     441
     442        (void)pos_id;
    435443
    436444        event.type = CEV_POS;
     
    444452}
    445453
    446 static errno_t input_ev_dclick(input_t *input, int bnum)
     454static errno_t input_ev_dclick(input_t *input, unsigned pos_id, int bnum)
    447455{
    448456        cons_event_t event;
     457
     458        (void)pos_id;
    449459
    450460        event.type = CEV_POS;
  • uspace/srv/hid/display/input.c

    r3a6d44b7 r60ebe63  
    11/*
    2  * Copyright (c) 2021 Jiri Svoboda
     2 * Copyright (c) 2022 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    4545static errno_t ds_input_ev_active(input_t *);
    4646static errno_t ds_input_ev_deactive(input_t *);
    47 static errno_t ds_input_ev_key(input_t *, kbd_event_type_t, keycode_t, keymod_t, char32_t);
    48 static errno_t ds_input_ev_move(input_t *, int, int);
    49 static errno_t ds_input_ev_abs_move(input_t *, unsigned, unsigned, unsigned, unsigned);
    50 static errno_t ds_input_ev_button(input_t *, int, int);
    51 static errno_t ds_input_ev_dclick(input_t *, int);
     47static errno_t ds_input_ev_key(input_t *, unsigned, kbd_event_type_t, keycode_t,
     48    keymod_t, char32_t);
     49static errno_t ds_input_ev_move(input_t *, unsigned, int, int);
     50static errno_t ds_input_ev_abs_move(input_t *, unsigned, unsigned, unsigned,
     51    unsigned, unsigned);
     52static errno_t ds_input_ev_button(input_t *, unsigned, int, int);
     53static errno_t ds_input_ev_dclick(input_t *, unsigned, int);
    5254
    5355static input_ev_ops_t ds_input_ev_ops = {
     
    7173}
    7274
    73 static errno_t ds_input_ev_key(input_t *input, kbd_event_type_t type,
    74     keycode_t key, keymod_t mods, char32_t c)
     75static errno_t ds_input_ev_key(input_t *input, unsigned kbd_id,
     76    kbd_event_type_t type, keycode_t key, keymod_t mods, char32_t c)
    7577{
    7678        ds_display_t *disp = (ds_display_t *) input->user;
    7779        kbd_event_t event;
    7880        errno_t rc;
     81
     82        (void)kbd_id;
    7983
    8084        event.type = type;
     
    8993}
    9094
    91 static errno_t ds_input_ev_move(input_t *input, int dx, int dy)
    92 {
    93         ds_display_t *disp = (ds_display_t *) input->user;
    94         ptd_event_t event;
    95         errno_t rc;
    96 
     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;
    97102        event.type = PTD_MOVE;
    98103        event.dmove.x = dx;
     
    105110}
    106111
    107 static errno_t ds_input_ev_abs_move(input_t *input, unsigned x, unsigned y,
    108     unsigned max_x, unsigned max_y)
    109 {
    110         ds_display_t *disp = (ds_display_t *) input->user;
    111         ptd_event_t event;
    112         errno_t rc;
    113 
     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;
    114120        event.type = PTD_ABS_MOVE;
    115121        event.apos.x = x;
     
    126132}
    127133
    128 static errno_t ds_input_ev_button(input_t *input, int bnum, int bpress)
    129 {
    130         ds_display_t *disp = (ds_display_t *) input->user;
    131         ptd_event_t event;
    132         errno_t rc;
    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;
    134142        event.type = bpress ? PTD_PRESS : PTD_RELEASE;
    135143        event.btn_num = bnum;
     
    143151}
    144152
    145 static errno_t ds_input_ev_dclick(input_t *input, int bnum)
    146 {
    147         ds_display_t *disp = (ds_display_t *) input->user;
    148         ptd_event_t event;
    149         errno_t rc;
    150 
     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;
    151160        event.type = PTD_DCLICK;
    152161        event.btn_num = bnum;
  • uspace/srv/hid/display/seat.c

    r3a6d44b7 r60ebe63  
    11/*
    2  * Copyright (c) 2021 Jiri Svoboda
     2 * Copyright (c) 2022 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    364364        if (event->type == PTD_PRESS || event->type == PTD_RELEASE ||
    365365            event->type == PTD_DCLICK) {
    366                 pevent.pos_id = 0;
     366                pevent.pos_id = event->pos_id;
    367367                switch (event->type) {
    368368                case PTD_PRESS:
     
    395395                seat->pntpos = npos;
    396396
    397                 pevent.pos_id = 0;
     397                pevent.pos_id = event->pos_id;
    398398                pevent.type = POS_UPDATE;
    399399                pevent.btn_num = 0;
     
    423423                seat->pntpos = npos;
    424424
    425                 pevent.pos_id = 0;
     425                pevent.pos_id = event->pos_id;
    426426                pevent.type = POS_UPDATE;
    427427                pevent.btn_num = 0;
  • uspace/srv/hid/display/types/display/ptd_event.h

    r3a6d44b7 r60ebe63  
    11/*
    2  * Copyright (c) 2021 Jiri Svoboda
     2 * Copyright (c) 2022 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    4848/** Pointing device event */
    4949typedef struct {
     50        /** Positioning device ID */
     51        unsigned pos_id;
     52        /** PTD event type */
    5053        ptd_event_type_t type;
    5154        /** Button number for PTD_PRESS or PTD_RELEASE */
  • uspace/srv/hid/input/input.c

    r3a6d44b7 r60ebe63  
    11/*
    2  * Copyright (c) 2021 Jiri Svoboda
     2 * Copyright (c) 2022 Jiri Svoboda
    33 * Copyright (c) 2006 Josef Cejka
    44 * All rights reserved.
     
    253253                if (client->active) {
    254254                        async_exch_t *exch = async_exchange_begin(client->sess);
    255                         async_msg_4(exch, INPUT_EVENT_KEY, ev.type, ev.key, ev.mods, ev.c);
     255                        async_msg_5(exch, INPUT_EVENT_KEY, kdev->svc_id,
     256                            ev.type, ev.key, ev.mods, ev.c);
    256257                        async_exchange_end(exch);
    257258                }
     
    267268
    268269                        if ((dx) || (dy))
    269                                 async_msg_2(exch, INPUT_EVENT_MOVE, dx, dy);
     270                                async_msg_3(exch, INPUT_EVENT_MOVE,
     271                                    mdev->svc_id, dx, dy);
    270272
    271273                        if (dz) {
     
    274276
    275277                                for (unsigned int i = 0; i < 3; i++)
    276                                         async_msg_4(exch, INPUT_EVENT_KEY, KEY_PRESS, code, 0, 0);
    277 
    278                                 async_msg_4(exch, INPUT_EVENT_KEY, KEY_RELEASE, code, 0, 0);
     278                                        async_msg_5(exch, INPUT_EVENT_KEY,
     279                                            0 /* XXX kbd_id */,
     280                                            KEY_PRESS, code, 0, 0);
     281
     282                                async_msg_5(exch, INPUT_EVENT_KEY, KEY_RELEASE,
     283                                    0 /* XXX kbd_id */, code, 0, 0);
    279284                        }
    280285
     
    292297                        if ((max_x) && (max_y)) {
    293298                                async_exch_t *exch = async_exchange_begin(client->sess);
    294                                 async_msg_4(exch, INPUT_EVENT_ABS_MOVE, x, y, max_x, max_y);
     299                                async_msg_5(exch, INPUT_EVENT_ABS_MOVE,
     300                                    mdev->svc_id, x, y, max_x, max_y);
    295301                                async_exchange_end(exch);
    296302                        }
     
    305311                if (client->active) {
    306312                        async_exch_t *exch = async_exchange_begin(client->sess);
    307                         async_msg_2(exch, INPUT_EVENT_BUTTON, bnum, press);
     313                        async_msg_3(exch, INPUT_EVENT_BUTTON, mdev->svc_id,
     314                            bnum, press);
    308315                        async_exchange_end(exch);
    309316                }
     
    317324                if (client->active) {
    318325                        async_exch_t *exch = async_exchange_begin(client->sess);
    319                         async_msg_1(exch, INPUT_EVENT_DCLICK, bnum);
     326                        async_msg_2(exch, INPUT_EVENT_DCLICK, mdev->svc_id,
     327                            bnum);
    320328                        async_exchange_end(exch);
    321329                }
Note: See TracChangeset for help on using the changeset viewer.