DDE Gesture Manager 是专为 DDE 桌面环境打造的触摸板手势管理工具(缩写:dgm),客户端使用 Flutter 构建,后端技术栈为 dart 的 Angel3 框架 + PostgreSQL + Redis + docker。
使用docker(推荐)
首先安装 docker 及 docker-compose,然后在/api
目录下执行:
bash start.sh
手动运行
首先配置 dart 环境(如果已经配置 flutter 开发环境则无需再配置): Dart SDK overview
安装项目依赖,运行代码生成命令: 在/api
目录下执行:
bash source_gen.sh
安装 PostgreSQL 及 Redis
然后在 /config/development.yaml
设置如下配置:
# Development-only server configuration.
debug: true
postgres:
host: [db host]
port: 5432
database_name: gesture_manager
username: postgres
password: [db password]
use_ssl: false
time_zone: Asia/Shanghai
redis:
host: [redis host]
port: 6379
password: [redis password]
smtp:
username: [smtp account name]
password: [smtp account password]
host: [smtp server host]
设置数据库
登录数据库,创建名为 gesture_manager
的数据库
create database gesture_manager;
运行 Migration:
dart bin/migrate.dart
运行 api
dart bin/dev.dart
配置 flutter 开发环境,并启用 Linux 支持:
修改服务器连接地址 在 /api
目录下修改 lib/apis.dart
:
class Apis {
static const apiScheme = 'http';
static const apiHost = 'localhost'; // 设置为api的地址
static const apiPort = 3000; // 设置为api监听的端口
static const appNewVersionUrl = 'https://www.debuggerx.com';
……
}
安装项目依赖,运行代码生成命令: 在/app
目录下执行:
bash source_gen.sh
运行app项目:
flutter run -d linux
flutter run -d chrome
Q:为什么要开发这个工具
A:本人是 Deepin Linux 的老粉了,日常学习工作和生活娱乐几乎完全在 Deepin/UOS 系统下进行。同时我还是个手势重度依赖者,除了鼠标手势,对笔记本的触摸板手势一样有很强的自定义需求。但是从 Deepin 系统增加手势功能到如今也有5年多了,官方一直没有在系统层面给出自定义触摸板手势的功能入口,我不得不经常通过手工修改系统手势配置文件的方式来实现自定义。但是长久以来,一方面是自己每次新装系统都需要重新设置,一方面是不断看到论坛和用户群有朋友反馈询问修改方法,遂决定动手写一个方便使用,并支持配置分享下载的GUI工具
Q:为什么使用 flutter 开发而不是 Qt/DTK/GTK ……
A:因为本人对 flutter 比较熟悉,有4年多的研究积累,而且对于 flutter 的跨平台效果非常看好,而C/C++的经验相对缺乏,又恰逢2021下半年这个时间点,google官方的一大重点就是对桌面应用开发的支持,于是决定尝试通过使用 flutter 实现本工具。
Q:为何还要兼容开发Web版本
A:得益于 flutter 的跨平台能力,在开发 Linux 桌面版应用的基础上,可以以很低的成本同步开发出 Web 版,于是一方面出于技术探索的目的,从一开始的功能规划我就将 Web 支持放在了基础需求中。另外,Web 版还有三个明显的好处:
Q:为何使用 dart 编写服务端,而不用其他更流行常见的语言和技术
A:作为全栈开发,虽然有多种其他语言和流行框架的后端开发经验,但是那些方案,有些是框架本身太重太吃资源,不适合这个小项目使用,有些是语言本身实在是写烦了,开发起来没有动力……在看到一些朋友和大佬分享使用 dart 开发后端的经验之后,我想,是不是可以让前后端项目使用相同的语言,以"同构"的方式开发,并将前后端的一些"弱关联"转变成由语法来保证正确性的"强依赖"呢?
所以在这个项目中,我让api
直接作为app
的依赖,app
的网络请求处理中直接使用api
侧导出的请求参数定义和结果模型,探索一种可以不用再通过文档进行前后端配合的开发模式——因为我相信,文档总是不可靠的,只有代码本身不会骗人
手势事件 Tabris.js有基于4种手势类型的13种手势事件: tap - 手指短暂地触摸控件时,触发一次。 longpress - 手指触摸控件一定时间(约一秒,取决于平台),抬起手指时触发。 pan - 当手指向任一方向移动一定距离(约5px,取决于平台)时,就开始连续触发。事件始终在触摸的第一个元素上触发,即使手指移动到控件之外。 panLeft - 当手指向左移动一定距离时,就开始连续触
iOS 版Safari 为了向开发人员传达一些特殊信息,新增了一些专有事件。因为iOS 设备既没有鼠标也没有键盘,所以在为移动Safari 开发交互性网页时,常规的鼠标和键盘事件根本不够用。随着Android中的WebKit 的加入,很多这样的专有事件变成了事实标准,导致W3C 开始制定Touch Events 规范(参见https://dvcs.w3.org/hg/webevents/raw-f
本文向大家介绍Android触摸及手势操作GestureDetector,包括了Android触摸及手势操作GestureDetector的使用技巧和注意事项,需要的朋友参考一下 现在的智能手机不敢说百分百的都是触摸屏,也应该是百分之九九以上为触摸屏了,触摸屏为我们操作无键盘、无鼠标的手机系统带来了很多的便利。当用户触摸屏幕时会产生很多的触摸事件,down、up、move等等。View类有个Vie
本文向大家介绍JS触摸事件、手势事件详解,包括了JS触摸事件、手势事件详解的使用技巧和注意事项,需要的朋友参考一下 触屏已经是我们身边电子设备的常态了。触摸事件当然也是随着触屏的出现,用户使用最多的事件啦! 难道使用触屏事件后,其他原来的鼠标事件就都不能用啦?当然不是,只不过不是那么好用啊。 针对鼠标事件,有哪些不适应? dbclick 触屏设备不支持双击事件。双击浏览器窗口,会放大画面。 可以通
本文向大家介绍iOS轻点、触摸和手势代码开发,包括了iOS轻点、触摸和手势代码开发的使用技巧和注意事项,需要的朋友参考一下 一、响应者链 以UIResponder作为超类的任何类都是响应者。UIView和UIControl是UIReponder的子类,因此所有视图和所有控件都是响应者。 1、初始相应器 事件首先会传递给UIApplication对象,接下来会传递给应用程序的UIWindow,UIW
本文向大家介绍Android手势滑动实现两点触摸缩放图片,包括了Android手势滑动实现两点触摸缩放图片的使用技巧和注意事项,需要的朋友参考一下 学习安卓手势滑动,多点触摸放大缩小图片,分享给大家供大家参考,具体代码如下 1.布局文件如下main.xml 2.自定义缩放图片控件ZoomImageView.java代码: 3.工程主文件MainActivity.java代码: 以上就是Androi
键盘/鼠标/触摸板 [HW] atkbd.set={2|3} 设置atkbd驱动(CONFIG_KEYBOARD_ATKBD)的键盘类型:2(默认值)表示AT键盘;3 表示PS/2键盘。 [HW] atkbd.reset 在初始化AT或PS/2键盘时重置键盘状态。常用于解决从休眠状态唤醒后键盘失效的故障。 [HW] atkbd.softraw={0|1} 当键盘按键被按下时,是返回原始的扫描码(S
在适用于 Windows 8 系统的 Photoshop CC 2014 版中启用了触控手势。Photoshop 可在连接到系统的任何支持多点触控的数字化设备(包括直接触控显示屏和外部平板电脑)上识别其自定义手势。在随许多笔记本电脑系统提供的触摸板指点设备上无法识别自定义 Photoshop 手势。您可以使用支持两个或更多同步触点的设备控制 Photoshop。 在 Photoshop 中,双指触