Вставить текст из hs.chooser в ложку молотка - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь создать ярлык, в котором я храню набор текстовых шаблонов, используя hs.chooser.И пользователь может вставить это, нажав на раскрывающееся меню hs.chooser.

. Я использую приведенный ниже код, который отображает мой шаблон, но не вставляет текст.

Может кто-нибудь указать мне, что я делаю неправильно?

hs.hotkey.bind({"Q"}, "W", function()
local current = hs.application.frontmostApplication()

local chooser = hs.chooser.new(function(choice)
    if not choice then focusLastFocused(); return end
    hs.pasteboard.setContents(choice["chars"])
    focusLastFocused()
    hs.eventtap.keyStrokes(hs.pasteboard.getContents())
end)

chooser:queryChangedCallback(function(string)
    local choices = {
        {
            ["text"] = "Testing",
            ["subText"] = "Testing my text"
        }
    }
    chooser:choices(choices)
end)

chooser:searchSubText(true)

chooser:show()
   end)

1 Ответ

0 голосов
/ 25 июня 2019

Я разобрался с ответом

-- Focus the last used window.

local function focusLastFocused()
    local wf = hs.window.filter
    local lastFocused = wf.defaultCurrentSpace:getWindows(wf.sortByFocusedLast)
    if #lastFocused > 0 then lastFocused[1]:focus() end
end
-- On selection, copy the text and type it into the focused application.

local chooser = hs.chooser.new(function(choice)
    if not choice then focusLastFocused(); return end
    hs.pasteboard.setContents(choice["subText"])
        focusLastFocused()
    hs.eventtap.keyStrokes(hs.pasteboard.getContents())
end)

chooser:choices({
      {
         ["text"] = "Browser\n",
         ["subText"] = "I used these browsers",
      },
      {
         ["text"] = "Device\n",
         ["subText"] = "I used these devices",
      },

})
hs.hotkey.bind({"E"}, "E", function() chooser:show() end)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...