学习AutohotkH V2:生成 QuickSearch 可用的数据文件

用ahk和自定义码表生成 QuickSearch Extend 可用的数据文件

很多人开始转V2版本了,群里几位大神也开发了 VSCode 插件。我试着几天,确实语法更舒服一点,强烈建议大家使用。

QuickSearch Extended 是文件管理器 Total Commander 的一个插件,因为名字打完标题会换行,我不喜欢,所以标题只打了插件一半的名字。

这个插件支持用拼音首字母快速搜索文件,可以说是 TC 用户最喜欢的插件。但是,中文用户还有很多是用五笔、双拼等输入法的,拼音首字母不一定是最顺手的。这个脚本可以把文本格式的码表文件转换成 QuickSearch Extended 可用的 tbl 数据文件。让 QuickSearch Extended 支持五笔首字母搜索、双拼首字母搜索等。

 

为提高论坛活跃度,已编译文件及码表示例支付积分后查看

; AHK VSERION: AutohotkeyH v2 W32
; Author: fwt
; Description: 生成tc插件 QuickSearch eXtended 可用的码表文件

SelectedFile := FileSelect(3, A_ScriptDir, "请选择码表文件", "*.txt")
if SelectedFile = ""
  ExitApp

SplitPath(SelectedFile, , dir)
content := RTrim(FileRead(SelectedFile), "`n")
pytable := Map()
pytable.Capacity := 0x9FA5 - 0x4E00 + 1
buf := BufferAlloc((0x9FA5 - 0x4E00 + 1) * 2)

for l in StrSplit(content, "`n")
{
  if l ~= "^#|^s*$"
    Continue
  m := StrSplit(l, A_Tab, "", 2)
  zi := m[2]
  hex := ord(zi)
  if hex > 0x9FA5 || hex < 0x4E00
    Continue
  num := ord(m[1]) & 95 - 64
  offset := (hex - 0x4E00) * 2

  if pytable.Has(zi)
  {
    arr := pytable[zi]
    if arr.Length < 3 && !inArray(arr, num)
    {
      arr.push(num)
      num += NumGet(buf, offset, "UShort") << 5
    }
  }
  else
  {
    pytable[zi] := [num]
  }
  NumPut("UShort", num, buf, offset)
}


outfile := dir "tcmatch.tbl"
file := FileOpen(outfile, "w")
file.RawWrite(Buf)
file.close()
Run("Explorer /Select," outfile)

inArray(arr, num)
{
  for i in arr
    if i = num
      return True
  return False
}

 

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA捐赠
共{{data.count}}人
人已捐赠
其他教程

控件提示

2021-3-3 5:21:39

其他案例

KMCounter v3.7 | 使用热力图显示鼠标与键盘使用情况的工具

2021-3-12 21:25:12

2 条回复 A文章作者 M管理员
  1. 木之本末

    let me cc

  2. user12121

    学习一下

个人中心
购物车
优惠劵
有新私信 私信列表
搜索