PyDeck
让老手机发挥余热,给电脑增加功能键 - 极端低配/无售后/功能全靠DIY版 StreamDeck
缘起
小众软件论坛 的一个帖子:能代StreamDeck!免费、开源软件macro deck。
看了之后,感觉极端低配版的 StreamDeck 很容易实现,就是写个 Web 服务器,根据用户点击链接在后台执行相应的程序。
小众论坛的 @dog 写了不少有趣又有用的小工具,我也用过,也学到了不少。
他在这个贴子里感叹自己之前搞的手机电脑交互不好用。
家里正好新装一台长期开机的小电脑,不接显示器键盘,每次操作都要开电脑连远程桌面。
于是就有了这个。
警告
因为是一天手搓的极端低配版,没有任何安全防护措施,只能在家里局域网内使用,服务器千万不能开放到互联网上,否则别人连上来就可以点击启动电脑内的程序,更别说高手说不定就能黑入电脑了。
免责
既然叫 极端低配/无售后/功能全靠DIY版
,那肯定是 使用后果自负
啦!
我写这个是为了自己家里长期开机的电脑用,一些常用的操作就不用连显示器键盘或者连远程桌面了。
使用说明
-
PyDeck.yaml
Port: Web 服务侦听端口,防火墙要开放这个端口,否则其他设备无法连接 Web 服务。
Title: 面板名称
Icons Per Line: 每行应用图标个数
Show Label: 是否显示应用名称,true|false
Apps: 应用列表
- id: 应用ID,纯英文字符串
name: 应用显示名称
icon: 应用图标文件名,存放目录:PyDeck\icon,浏览器支持显示的格式都行,最好是正方形图片。
command: 应用实际执行命令
workdir: 应用起始路径
-
所有字符串值最好都加英文单引号('),字符串里有双引号 (") 的一定要加单引号。
-
command 和 workdir 中,如果文件名或路径中有空格,需要加双引号。
-
command 和 workdir 的正确格式:
可以认为在 PyDeck 服务器中有一个隐藏的 cmd 窗口,执行 START "[PyDeck] CMD" /I /D workdir command
。
因此,如果将 command 和 workdir 填入其中后,在普通 cmd 窗口中可以运行成功,那么基本上 PyDeck 也可以成功执行命令。
-
PyDeck.stpl
Deck 页面模板,可以自己修改。
注意: {{ }}
中和 %
后的是 Python 代码。
-
icon\
目录
子目录 icon
里放的是应用图标文件,浏览器支持显示的格式都行,最好是正方形图片。
icon\RELOAD.png
是 PyDeck 自用的,不要删除,除非修改了 PyDeck.stpl
。
客户端浏览器要求
页面没有 javascript,只用了 CSS,至少在我的 iPad 1 (iOS 5.1.1) 的 Safari 浏览器上没问题。
感谢
Github
Repo: cataerogong/PyDeck: 让老手机发挥余热,给电脑增加功能键 (github.com)
Release: Releases · cataerogong/PyDeck (github.com)
3 个赞
yazii
(Yazii!)
2
StreamDeck的优秀也不只是显示出功能键的图标来,而是动态性和扩展性。
- 能设置多个folder,每个folder有不同的按键和图标,根据前台程序自动切换folder,或者用户主动切换folder
- 有各种各样的扩展方便接入不同软件、硬件。比如直播OBS,智能家居,显示电脑资源占用,等等。
- 有实体按键(部分人比如我就非常喜欢按实体按键,不喜欢点击触摸屏。所以其实我也在考虑如何弄出廉价的有实体按键的micro deck)
如果抛开上边的几点,实际上论坛里活跃的quicker也有移动端,同样能够显示图标并发送控制PC的命令。
从我个人的角度讲,更希望大佬也能加入到micro deck的开发中,毕竟micro deck已经相对成熟,并且现在就可以通过网页连接使用。
shadows
(shadows)
3
原来你们说的是StreamDeck不是SteamDeck啊,我还在想那不是游戏机吗,怎么和文章内容不符
dog
(荒废千年)
4
挺好用的,很简洁。赞!
不过有以下几个需求哈:
-
那个cmd窗口可以选择隐藏吗?
-
怎么通过ahk来进行reload,因为我想添加两个按钮,
一个叫大大大,一个叫小小小,用来快捷改变每行图标数。
之后可能还想快捷添加按钮之类的,需要更改yaml然后reload。
-
换个背景,纯黑色有点单调。
-
强制换行功能,不需要一行满了图标才放下一行(我在用平板使用,实际上一行12个图标,放50行没问题)
另外,我给大家推荐一个网站
字母图标生成器 | 汉字徽章图标一键生成 - 标小智LOGO神器 (logosc.cn)
输个汉字,然后截图,用来做图标很快,哈哈~
我再去研究研究 Macro Deck
我的初衷是想操控家里的小电脑,基本需求只是点一下图标跑个程序这样,Macro Deck 感觉重了点(100多M),而且我的客户端还可能是 iPad 1,iOS 才 5.1.1,看个电影都吃力
纯粹自娱自乐的。
dog
(荒废千年)
7
哇,真棒,我试了一下,kindle也可以用!
不过要是白色背景就好了,Kindle下黑色背景太难看了
建议给标题里加几个字——
~变成让老手机,老kindle发挥余热~
- 那个cmd窗口可以选择隐藏吗?
你是说 PyDeck.exe 的 console 窗?
两个方案:
-
用 nircmd
,不过关程序只能杀进程了
> nircmd.exe exec hide PyDeck.exe
-
用你擅长的 ahk
哦,还有个3
3. 广告时间:我用 AutoIt3 写的小程序 cataerogong/AppTray: Apps in Tray (github.com),可以配置隐藏窗口运行程序,我用来跑类似 WebDAV 的各种需要常开的 console 程序。
编辑:广告失败了,AppTray 跑不了这个
- 怎么通过ahk来进行reload,因为我想添加两个按钮,
一个叫大大大,一个叫小小小,用来快捷改变每行图标数。
之后可能还想快捷添加按钮之类的,需要更改yaml然后reload。
直接访问URL,应该可以,你试一下。
UrlDownloadToFile, http://ip:port/reload, temp\file
- 换个背景,纯黑色有点单调。
自己打开 PyDeck.stpl 去改,先备份。
- 强制换行功能,不需要一行满了图标才放下一行(我在用平板使用,实际上一行12个图标,放50行没问题)
你想学一下 Python 吗?
dog
(荒废千年)
9
想学,不过总是被吓退,哈哈~
被缩进语法吓着了,我写autohotkey代码几乎都胡乱缩进。
其他的都明白了。
换行这里,我找人研究研究(其实我老婆正在学python)
1 个赞
dog
(荒废千年)
11
你可以用kindle改一个!!!
旧版kindle是红外触发的,所以说,不需要指头,更容易做出来实体按键感觉。
我现在正在研究怎么搞~
dms
(稻米鼠)
12
大家想法总是这么的一致,我现在写那玩意儿一个方向也是显示多功能按键,不过现阶段还在侧重信息显示部分
yazii
(Yazii!)
13
我只有文石电子书,没有kindle。电子书其实很麻烦,担心把屏弄坏
我打算用透明塑料(比如pet)做一个支架,上边覆盖一块剪开的透明塑料当按键,利用塑料片的弹性一定程度模拟按键手感,或者在侧面直接加橡胶碗,手指触底直接触发电容屏。
或者利用磁铁在上方吸按键,用橡皮筋从上方拉之类的。总之这周还没时间搞……
如果是作为扩展键盘,那点下去就直接在你主屏幕上有反应了,不用反馈了。
如果是作为远程控制,前端该获得啥样的反馈呢?录屏3秒?这样的反馈是不是太慢了?截图?截图时程序窗口显示出来了吗?需要等多久?我能想到的比较简单的是,返回进程PID之类的,代表程序确实运行起来了。但是,有些命令执行很快,可能还没及时获取到PID就已经退出了,所以这也不太完美。
最重要的,我程序目前执行命令的方式就好比:哈士奇不牵绳——出门就没,调用了就和我程序没关系了 :捂脸:
作为一个“功能全靠DIY”的程序,首先从 DIY 配置开始。(我懒……
foyax
(foyax)
17
AutoHotkey 没有代码格式工具,太痛苦。不过 VS 有插件支持格式代码,堪堪可用。
lilyhcn1
(lilyhcn1)
18
每秒截屏并返回,共计15秒左右比较合适。
这样反馈性比较好
做好这个我就可以长期使用了
本来想了个拼凑版,利用 nircmd.exe 截屏,但是验证了一下,如果是锁屏状态,截的是锁屏画面
不管怎样,下一版考虑增加以下功能:
- 增加 /static 目录
- 配置增加 global_pre_action,运行 app 前执行
- 配置增加 global_post_action,运行 app 后执行
/action/appid
URL 返回执行是否成功
有了这些,就可以比较 ugly 的实现 15s 截屏反馈了。
再后面,可能会加 jQuery 库,改成 AJAX 调用,这样也可以方便实现一些页面特效。但是要先验证在我的 iPad 1 能不能支持,如果不能,那就只能表示遗憾了。