yadam

yadam

V2EX 第 76283 号会员,加入于 2014-10-08 16:57:00 +08:00
今日活跃度排名 21099
根据 yadam 的设置,主题列表只有在你登录之后才可查看
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
yadam 最近回复了
4 天前
回复了 hzzhzzdogee 创建的主题 Terminal Kitty, Wezterm, Alacritty, Ghostty 该用哪个?
认同 #9 (除了 wezterm, 我没用过)

- kitty 目前是我的主力, 没有遇到过什么问题
- alacritty 是之前我的备用, 主要场景是要开两个 terminal, 并且希望绑定两个全局的 run or raise 的快捷键
- ghostty 感觉系统原生 UI 做的比较好, macOS 和 gnome 下都很融入系统, 有 tab, 在显示图片的时候比 kitty 分辨率高很多(类似 kitty icat 那种), 缺点是 ssh 到一台新机器的时候要把它自己的 terminfo 拷一份过去, 否则有些程序会报错. 然后 copy on select 之类的功能还不支持, 看有 issue 在讨论. 确实需要再养养, 现在它取代了 alacrity 作为我的第二终端模拟器
13 天前
回复了 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 相关的, 要做好确实要有好多路要走

老哥其他提到的很多知识点/名词都让我学到很多, 再次感谢!
14 天前
回复了 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
恭喜, 祝越来越好
128 天前
回复了 voydomnvd 创建的主题 Linux 本人用 Linux 发行版的一些疑惑
@lpdink #4 我自己主要是离不开 aur
144 天前
回复了 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

```
333 天前
回复了 coderMonkey 创建的主题 OpenAI AI 关于字符串回答总是错误的问题
#5 的文章写的很详细, 学习了
如果 op 的流程里一定依赖这种数长度流程的话, 会不会用 tool calling 可以比较完美的解决?
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3074 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 12ms · UTC 13:20 · PVG 21:20 · LAX 06:20 · JFK 09:20
Developed with CodeLauncher
♥ Do have faith in what you're doing.