wayland helloworld (二) 之Wayland鼠标消息

来源:互联网 发布:人工智能利大于弊 编辑:程序博客网 时间:2024/05/01 08:50

Wayland鼠标消息

    Wayland只提供了wl_pointer_listener,要想获取鼠标相关的消息需要首先设置监听器。

    wl_pointer的消息有:

enter 进入窗口范围

leave 离开窗口范围

motion 鼠标移动

button 鼠标点击,鼠标按键id定义位于文件<linux/input.h>中,例如BTN_LEFT表示鼠标左键。


    初始化wl_pointer_listener对象:

void pointer_enter(void *data, HPOINTER wl_pointer, uint32_t serial, HSURFACE surface, wl_fixed_t surface_x, wl_fixed_t surface_y){wlGetRegistry()->s_pointer_surface = surface;}void pointer_leave(void *data, HPOINTER wl_pointer, uint32_t serial, HSURFACE surface){wlGetRegistry()->s_pointer_surface = NULL;}void pointer_motion(void *data, HPOINTER wl_pointer, uint32_t time, wl_fixed_t surface_x, wl_fixed_t surface_y){}void pointer_button(void *data, HPOINTER wl_pointer, uint32_t serial, uint32_t time, uint32_t button, uint32_t state){if (wlGetRegistry()->s_pointer_surface == NULL)return;if (BTN_LEFT == button && state == WL_POINTER_BUTTON_STATE_PRESSED){HSHELLSURFACE shell_surface = _wlGetSurfacePrivate(wlGetRegistry()->s_pointer_surface)->shell_surface;wl_shell_surface_move(shell_surface, wlGetRegistry()->s_seat, serial);return;}}void pointer_axis(void *data, struct wl_pointer *wl_pointer, uint32_t time, uint32_t axis, wl_fixed_t value){}struct wl_pointer_listener pointer_listener = {.enter = pointer_enter,.leave = pointer_leave,.motion = pointer_motion,.button = pointer_button,.axis = pointer_axis};


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 7岁儿童发烧40度怎么办 7岁反复发烧39度怎么办 宝宝烧到39.5度怎么办 3岁儿童发烧39度怎么办 孩子发高烧怎么办39度5 3岁宝宝不吃水果怎么办 2岁宝宝不吃水果怎么办 4岁宝宝不吃水果怎么办 过早竖抱婴儿了怎么办 3个月宝宝认生怎么办 10天婴儿不拉屎怎么办 3个月宝宝不吃奶粉怎么办 婴儿吃青菜吃多怎么办 2月宝宝消化不好怎么办 吃母乳的宝宝便秘怎么办 婴儿拉肚子怎么办大便绿色的 10个月宝宝睡眠不好怎么办 婴幼儿消化不良引起的腹泻怎么办 小孩晚上睡觉不盖被子怎么办 镜子对着房间门怎么办 高血压引起的眼底出血怎么办 墙砖颜色选深了怎么办 墙砖颜色太深怎么办 30岁了没有朋友怎么办 产检宝宝腿短怎么办 2岁宝宝不学说话怎么办 4岁了还不会说话怎么办 两周岁还不说话怎么办 2岁了不会说话怎么办 一岁宝宝蛀牙了怎么办 分手了想联系他怎么办 和婆家人闹翻了怎么办 2岁宝宝不好断奶怎么办 2岁宝宝断奶哭闹怎么办 脑子感觉变笨了怎么办 5岁数学不开窍怎么办 小孩拼音太差了怎么办 我生了爸爸孩子怎么办 三岁宝宝特别犟怎么办 孩子说老师打他怎么办 孩子在幼儿园不合群怎么办