8x25 平台上添加虚拟按键

if (event->au16_x[i] < 540 && event->au16_y[i] < 960)
        //LCD view area
        {
            input_report_abs(data->input_dev, ABS_MT_POSITION_X, event->au16_x[i]);
            input_report_abs(data->input_dev, ABS_MT_POSITION_Y, event->au16_y[i]);
            input_report_abs(data->input_dev, ABS_MT_WIDTH_MAJOR, 1);
            input_report_abs(data->input_dev, ABS_MT_TRACKING_ID, event->au8_finger_id[i]);
            input_report_abs(data->input_dev, ABS_MT_PRESSURE, 100);
            if (event->au8_touch_event[i]== 0 || event->au8_touch_event[i] == 2)
            {
                input_report_abs(data->input_dev, ABS_MT_TOUCH_MAJOR, event->pressure);
            }
            else
            {
                input_report_abs(data->input_dev, ABS_MT_TOUCH_MAJOR, 0);
            }
        }

tp大小 480*800

引用网上的一段说法:

tpd_button_setting()函数根据定义在tpd_custom_XXX.h文件中的配置信息将虚拟按键的坐标信息写在/sys/board_properties /virtualkeys.mtk-tpd中。工作时,tp driver将按下的点的坐标进行上报,Android上层会读取sys中的按键配置信息,再判断上报的坐标是否属于某个按键的坐标范围,以此将坐标信息转化为具体的按键键值。 
2.在factory mode和recovery mode下,由于Android还未启动,所以按键事件不能采取1中的上报机制,而是利用tpd_button()函数来对按键进行直接上报处理。 
所以,对于normal mode,按键事件不需要调用tpd_button()函数上报,而在factory mode和recovery mode下,必须调用tpd_button()函数对虚拟按键事件进行上报。


应该以报点方式传递虚拟按键的坐标值

另外在board-msm7627a-io.c中需要添加一段代码,主要是为了创建这个文件virtualkeys.ft5x06_ts:

static ssize_t
ft5306_virtual_keys_register(struct kobject *kobj,
			     struct kobj_attribute *attr,
			     char *buf)
{
	
		return snprintf(buf, 200,
			__stringify(EV_KEY) ":" __stringify(KEY_MENU)  ":50:830:105:80"
			":" __stringify(EV_KEY) ":" __stringify(KEY_HOME)   ":195:830:105:80"
			":" __stringify(EV_KEY) ":" __stringify(KEY_BACK) ":355:830:105:80"
			//":" __stringify(EV_KEY) ":" __stringify(KEY_BACK)   ":280:510:80:60"
			"\n");
}
static struct kobj_attribute ft5306_virtual_keys_attr = {
	.attr = {
		.name = "virtualkeys.ft5x06_ts",
		.mode = S_IRUGO,
	},
	.show = &ft5306_virtual_keys_register,
};
static struct attribute *ft5306_virtual_key_properties_attrs[] = {
	&ft5306_virtual_keys_attr.attr,
	NULL,
};

static struct attribute_group ft5306_virtual_key_properties_attr_group = {
	.attrs = ft5306_virtual_key_properties_attrs,
};
struct kobject *ft5306_virtual_key_properties_kobj;
static void __init ft5306_touchpad_setup(void)
{
	int rc;
	
	rc = gpio_tlmm_config(GPIO_CFG(48, 0,
			GPIO_CFG_INPUT, GPIO_CFG_PULL_UP,
			GPIO_CFG_8MA), GPIO_CFG_ENABLE);
	if (rc)
		pr_err("%s: gpio_tlmm_config for %d failed--erji.liu\n",
			__func__, ft5306_ts_data[0].irq);

	rc = gpio_tlmm_config(GPIO_CFG(ft5306_ts_data[0].reset, 0,
			GPIO_CFG_OUTPUT, GPIO_CFG_PULL_DOWN,
			GPIO_CFG_8MA), GPIO_CFG_ENABLE);
	if (rc)
		pr_err("%s: gpio_tlmm_config for %d failed--jremmliu\n",
			__func__, ft5306_ts_data[0].reset);

	ft5306_virtual_key_properties_kobj =
			kobject_create_and_add("board_properties", NULL);

	if (ft5306_virtual_key_properties_kobj)
		rc = sysfs_create_group(ft5306_virtual_key_properties_kobj,
				&ft5306_virtual_key_properties_attr_group);

	if (!ft5306_virtual_key_properties_kobj || rc)
		pr_err("%s: failed to create board_properties\n", __func__);

}
 /*end */



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值