File tree Expand file tree Collapse file tree 3 files changed +67
-0
lines changed Expand file tree Collapse file tree 3 files changed +67
-0
lines changed Original file line number Diff line number Diff line change 1+ # Hammerspoon
2+
3+ ## 键盘输入全角符号转半角` modules.banjiao `
4+
5+ > 在撰写MarkDown文档时,需要在中文输入法模式下键入大量的MarkDown控制符;但这些控制符需要使用半角
6+
7+ - 通过修改` app_map``replace_map ` 这两个字典调整脚本的行为
8+
9+ ## Install
10+
11+ - 复制 ` modules ` 目录到目录 ` ~/.hammerspoon ` 下
12+ - 修改 ` ~/.hammerspoon/init.lua ` 文件激活对应模块
Original file line number Diff line number Diff line change 1+ require (" modules.banjiao" )
Original file line number Diff line number Diff line change 1+ -- 键盘输入自动全角符号转半角符号
2+
3+ -- 事件的API https://www.hammerspoon.org/docs/hs.eventtap.event.html
4+ -- 按键(delete)定义表 https://github.com/Hammerspoon/hammerspoon/blob/master/extensions/keycodes/keycodes.lua
5+
6+
7+ -- 预定义生效的应用清单
8+ local app_map = {
9+ [" Code" ] = true ,
10+ [" Drafts" ] = true ,
11+ [" Joplin" ] = true ,
12+ [" Sublime Text" ] = true
13+ }
14+ -- 预定义替换映射表
15+ local replace_map = {
16+ [" ·" ] = " `" ,
17+ [" “" ] = ' "' ,
18+ [" ”" ] = ' "' ,
19+ [" 》" ] = ' >' ,
20+ [" 《" ] = ' <' ,
21+ }
22+
23+ local function keyboardReplaceListener (event )
24+ -- print("-----")
25+ -- print(hs.inspect.inspect(event:asData()))
26+ -- print(event:getButtonState(0))
27+ -- print(hs.inspect.inspect(event:getCharacters()))
28+ -- print(hs.inspect.inspect(event:getFlags()))
29+ -- print(event:getKeyCode())
30+ -- print(event:getProperty(hs.eventtap.event.properties.eventSourceUserData))
31+ -- print(event:getRawEventData())
32+ -- print(event:getTouchDetails())
33+ -- print(event:getTouches())
34+ -- print(event:getType())
35+ -- print(event:getUnicodeString())
36+
37+ -- 只在指定的应用中生效
38+ local app_name = hs .application .frontmostApplication ():name ()
39+ -- print(app_name)
40+ if not app_map [app_name ] then
41+ return
42+ end
43+
44+ -- 安装替换表执行替换
45+ local new_char = replace_map [event :getCharacters ()]
46+ if new_char then
47+ local delete_event = require (" hs.eventtap" )
48+ delete_event .keyStroke ({}, " delete" )
49+ hs .eventtap .keyStrokes (new_char )
50+ end
51+ end
52+
53+ tap = hs .eventtap .new ({ hs .eventtap .event .types .keyUp }, keyboardReplaceListener )
54+ tap :start ()
You can’t perform that action at this time.
0 commit comments