yadam

yadam

V2EX 第 76283 号会员,加入于 2014-10-08 16:57:00 +08:00
今日活跃度排名 8154
根据 yadam 的设置,主题列表只有在你登录之后才可查看
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
yadam 最近回复了
1 天前
回复了 yadam 创建的主题 Linux 分享一个 Linux 下的改键工具
@kuanat #4


感谢回复, 老哥太专业了, 句句直戳要害
我说一下在做这个工具的时候自己的一点儿思考, 希望老哥能够百忙之中再指导指导


关于 2:

这个真是大坑而且不太好在 remapping 的逻辑里处理完
我目前的做法是针对 ctrl 和 alt 做了特殊处理 (其实如你所说, alt 更加不好处理,我自己疏忽了没有考虑到 alt 在很多场景是不是完全的 modifier)

我对 ctrl 处理的需求是想解决按住 ctrl 打开浏览器链接的时候会强制在新 tab 打开
当前的处理逻辑是(以 ctrl 为例):
- 独立按下的时候透传一个 down 的 event
- 在 down 的状态如果还有其他键比如 C 按下并且匹配到改键逻辑, 则在发送改键 event 之前发送这个 ctrl 的 up event
- 发送修改之后的组合到 uinput
- 丢掉 src dev 后面 ctrl 和 C 的 up event

所有的 remap 的配置我都是使用当前 down 的所有 key 做匹配


关于 3:

我的初版实现是用 yaml 做配置文件的, 好处就是所有用户的逻辑可以提前知道, 性能可以做到比较好
但是只要想表达复杂逻辑 if else or and 之类的, 在 yaml 上做就很反人类

那自然想到脚本语言, 我评估了三种:

1. lua, 最开始就想到它, vim, 以及我个人比较喜欢的一个叫做 Hammerspoon 工具都用它
但是我自己不太会写 lua, 以及看到一些大佬评价 lua 的某些缺点, 就不做最优先考虑了
2. 像 AHK 一样, 有自己的脚本引擎, 这个是我最想要做的, 好处有:
- 可以做到配置特别简洁, 比如 remap 只需要两个 a::b 就行
- 脚本运行之前就能掌控所有的用户配置, 好做优化
- 支持复杂的 if else 等逻辑

缺点: 对我这样的初级开发者来讲, 实现起来太难了. 对用户来讲需要学习一个新的脚本语法
3. js, 算是综合前面所有考虑之后的妥协

另外提到全拦截, 我看到的最优雅的是 kmonad, 最开始我也实现了一个 layer 的方案, 但是后来发现对于我这样只想映射少量键的请, 要配置层多了之后每个层都要把所有键配置一下也挺烦的
最后想开了: 不要想大而全, 不要想让很多人都用, 就只做好一小部分功能就不错了
从这个角度出发, 我甚至都考虑过不开放配置, 就叫做: 让你的 linux 快捷键用起来像 macOS
我自己用的话可能就用 go 写死一个这个 [Engine]( https://github.com/jialeicui/KeySwift/blob/d21ee1e683cab0ee16862d08612ea0ccadb50327/pkg/engine/interfaces.go#L15) 的实现了


关于 4:

是我自己的强需求, 目前只实现了 gnome 相关的, 要做好确实要有好多路要走

老哥其他提到的很多知识点/名词都让我学到很多, 再次感谢!
2 天前
回复了 yadam 创建的主题 Linux 分享一个 Linux 下的改键工具
@xiling000000 #2
学习了, 原来还可以这样, 确实方便

我现在比较依赖于不同的 app 不同的快捷键
比如 emacs 形式的快捷键和 terminal 以及开了 vim mode 的程序都会打架 (比如 ctrl+b 和 tmux 打架)

以前用基于 X 的桌面的时候用过一阵子 autokey, 也挺好用的

我现在的配置是: https://github.com/jialeicui/KeySwift/blob/main/examples/config.js
恭喜, 祝越来越好
116 天前
回复了 voydomnvd 创建的主题 Linux 本人用 Linux 发行版的一些疑惑
@lpdink #4 我自己主要是离不开 aur
132 天前
回复了 capgrey 创建的主题 Linux 哪个 Linux 发新版本支持 Darwin(Mac OS)的键位?
如果是基于 X 的 DE, 用 autokey 可以满足大部分的场景
wayland 下的 DE 的话, 我现在用 xremap, 这东西的好处是可以基于不同的 app 做配置, 大部分场景也都没问题
kmonad 的 layer 概念很 nb, 不过我用不习惯

下面是我现在用的 xremap 的配置 (jb 我在 ideavim 里配了一些, 基本跨操作系统无感)

```yaml
keymap:
- name: "chrome"
application:
only: Google-chrome
remap:
Super-1: C-1
Super-2: C-2
Super-3: C-3
Super-4: C-4

- name: "default"
application:
not: [kitty, org.gnome.Console, org.kde.konsole, jetbrains-goland, jetbrains-pycharm, jetbrains-idea, jetbrains-clion, jetbrains-webstorm, jetbrains-phpstorm, jetbrains-rubymine, jetbrains-datagrip, jetbrains-appcode, jetbrains-android-studio]
remap:
Super-c: C-c
Super-v: C-v
Super-w: C-w
Super-t: C-t
Super-p: C-p
Super-a: C-a
Super-r: C-r
Super-f: C-f

- name: "window"
remap:
Super-Shift_L-Alt-m: Super-Up

- name: "jetbrains"
application:
only: [jetbrains-goland, jetbrains-pycharm, jetbrains-idea, jetbrains-clion, jetbrains-webstorm, jetbrains-phpstorm, jetbrains-rubymine, jetbrains-datagrip, jetbrains-appcode, jetbrains-android-studio]
remap:
Super-1: Alt-1
Super-2: Alt-2
Super-3: Alt-3
Super-w: C-4
Super-c: C-Insert
Super-v: Shift-Insert

```
321 天前
回复了 coderMonkey 创建的主题 OpenAI AI 关于字符串回答总是错误的问题
#5 的文章写的很详细, 学习了
如果 op 的流程里一定依赖这种数长度流程的话, 会不会用 tool calling 可以比较完美的解决?
我也有过类似的苦恼, 就是用手机给孩子拍视频, 随随便便几百兆, 存 NAS 比较占用空间, 搜了 FFmpeg 的很多用法, 最后都比不过大家说的传 youtube 再下载下来 (够清晰, 够小), 不过没有批量搞过

请问 @zapper 能再求多一些关键字么? 找时间学习学习, 看看能够在本地能够压缩到接近 youtube 的效果
335 天前
回复了 Knuth 创建的主题 MacBook 后端开发一定要买 macbook 吗
如果不是公司提供的电脑是 mac, 个人觉着没必要用 mac, 特别是 cpp 开发
Windows 没有问题, 如果是我的话, 更可能会 Linux 作为开发机, 最主要的是跑各种 docker container 比 wsl 稍微自然一些
如果是公司提供开发机, 那 Windows 更没问题了, vscode remote 或者 vim 过去, 自己电脑是啥无所谓
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2820 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 11ms · UTC 07:03 · PVG 15:03 · LAX 00:03 · JFK 03:03
Developed with CodeLauncher
♥ Do have faith in what you're doing.