Просмотр/манипулирование буферами обмена (чаще называемыми буферами). Можно взаимодействовать как с системным буфером обмена, так и с пользовательскими буферами.
Этот модуль частично основан на коде из предыдущей версии Mjolnir от Steven Degutis.
Массив, элементы которого — таблица, содержащая типы содержимого для каждого элемента в буфере обмена.
Параметры
имя — необязательная строка, указывающая имя буфера обмена. Если nil или отсутствует, по умолчанию используется системный буфер обмена.
Возвращаемое значение
массив, где каждый индекс представляет объект в буфере обмена. Если буфер обмена содержит только один элемент, это эквивалентно { hs.pasteboard.contentTypes(name) }.
Вызывает обратный вызов, когда указанный буфер обмена изменился или истекло время ожидания.
Parameters
name - необязательная строка, указывающая имя буфера обмена. Если nil или отсутствует, используется системный буфер обмена.
timeout - необязательное число, по умолчанию 2.0, задающее время в секундах, в течение которого функция должна ожидать изменения указанного буфера обмена перед истечением времени ожидания.
callback - обязательная функция обратного вызова, которая будет вызвана, когда содержимое указанного буфера обмена изменится или истечёт время ожидания. Функция должна ожидать один логический аргумент, true, если содержимое буфера обмена изменилось, или false, если истекло время ожидания.
Returns
None
Notes
Эта функция может использоваться для захвата результатов операции копирования, выполненной программно с помощью hs.application:selectMenuItem или hs.eventtap.keyStroke, без создания собственных таймеров:
hs.eventtap.keyStroke({"cmd"}, "c", 0) -- or whatever method you want to trigger the copy
hs.pasteboard.callbackWhenChanged(5, function(state)
if state then
local contents = hs.pasteboard.getContents()
-- do what you want with contents
else
error("copy timeout") -- or whatever fallback you want when it times out
end
end)
hs.pasteboard.readArchiverDataForUTI([name], uti) -> any
Type
Function
Description
Возвращает первый элемент буфера обмена с указанным UTI. Данные в буфере обмена должны быть закодированы как объект архива с ключами, соответствующий NSKeyedArchiver.
Parameters
name - необязательная строка, указывающая имя буфера обмена. Если nil или отсутствует, используется системный буфер обмена.
uti - строка, определяющая UTI элемента буфера обмена, который нужно получить.
Returns
lua-объект, представляющий данные архива, если их можно декодировать. Возникает ошибка, если данные имеют неправильный формат.
Notes
NSKeyedArchiver определяет формат, независимый от архитектуры, который часто используется в приложениях OS X для хранения и передачи объектов между приложениями и при сохранении данных в файл. Он работает, записывая информацию о типах объектов и парах «ключ-значение», составляющих хранимые объекты.
Только объекты, для которых Hammerspoon имеет встроенные функции преобразования, могут быть преобразованы. Будет возвращено строковое представление о нераспознанных типах. Если вы найдёте распространённый тип данных, который, по вашему мнению, может быть интересен пользователям Hammerspoon, не стесняйтесь внести вклад в функцию преобразования или сделать запрос в группу Hammerspoon Google или на сайте GitHub.
Некоторые приложения могут определять свои собственные классы, которые могут быть заархивированы. Hammerspoon не сможет распознать эти типы, если приложение не сделает тип объекта доступным в одной из своих библиотек. Возможно, вам удастся загрузить необходимую библиотеку с помощью package.loadlib("/Applications/appname.app/Contents/Frameworks/frameworkname.framework/frameworkname", "*") перед извлечением данных, но полное представление данных в Hammerspoon, скорее всего, невозможно без поддержки со стороны разработчиков приложения.
hs.pasteboard.readImage([name], [all]) -> hs.image object or array of hs.image objects
Type
Function
Description
Возвращает один или несколько hs.image объектов из буфера обмена или nil, если совместимые объекты отсутствуют.
Parameters
name - необязательная строка, указывающая имя буфера обмена. Если nil или отсутствует, используется системный буфер обмена.
all - необязательный булевый параметр, указывающий, нужно ли вернуть все (true) изображения из буфера обмена или только первое (false). По умолчанию false.
Returns
По умолчанию первое изображение из буфера обмена или таблица со всеми изображениями, если параметр all имеет значение true. Возвращает nil, если изображения отсутствуют.
hs.pasteboard.readString([name], [all]) -> string or array of strings
Type
Function
Description
Возвращает одну или несколько строк из буфера обмена или nil, если совместимые объекты отсутствуют.
Parameters
name - необязательная строка, указывающая имя буфера обмена. Если nil или отсутствует, используется системный буфер обмена.
all - необязательный булевый параметр, указывающий, нужно ли вернуть все (true) URL из буфера обмена или только первый (false). По умолчанию false.
Returns
По умолчанию первая строка из буфера обмена или таблица со всеми строками, если параметр all имеет значение true. Возвращает nil, если строки отсутствуют.
Notes
Практически все строковые и форматированные текстовые объекты внутренне преобразуются и будут доступны с помощью этого метода, а также с помощью hs.pasteboard.readStyledText. Если элемент фактически является объектом hs.styledtext, строка будет содержать только текст объекта.
hs.pasteboard.readStyledText([name], [all]) -> hs.styledtext object or array of hs.styledtext objects
Type
Function
Description
Возвращает один или несколько hs.styledtext объектов из буфера обмена или nil, если совместимые объекты отсутствуют.
Parameters
name - необязательная строка, указывающая имя буфера обмена. Если nil или отсутствует, используется системный буфер обмена.
all - необязательный булевый параметр, указывающий, нужно ли вернуть все (true) URL из буфера обмена или только первый (false). По умолчанию false.
Returns
По умолчанию первый форматированный текстовый объект из буфера обмена или таблица со всеми форматированными текстовыми объектами, если параметр all имеет значение true. Возвращает nil, если форматированные текстовые объекты отсутствуют.
Notes
Практически все строковые и форматированные текстовые объекты внутренне преобразуются и будут доступны с помощью этого метода, а также с помощью hs.pasteboard.readString. Если элемент в буфере обмена является просто строкой, представление объекта hs.styledtext не будет иметь установленных атрибутов.
hs.pasteboard.readURL([name], [all]) -> string or array of strings representing file or resource urls
Type
Function
Description
Возвращает одну или несколько строк, представляющих URL-адреса файлов или ресурсов из буфера обмена, или nil, если совместимые объекты отсутствуют.
Parameters
name - необязательная строка, указывающая имя буфера обмена. Если nil или отсутствует, используется системный буфер обмена.
all - необязательный булевый параметр, указывающий, нужно ли вернуть все (true) URL-адреса из буфера обмена или только первый (false). По умолчанию false.
Returns
По умолчанию первый URL-адрес из буфера обмена, или таблица всех URL-адресов из буфера обмена, если параметр all задан и равен true. Возвращает nil, если URL-адреса отсутствуют.
Возвращает имя нового буфера обмена с именем, гарантированно уникальным по отношению к другим буферам обмена на компьютере.
Parameters
None
Returns
уникальное имя буфера обмена
Notes
для правильного управления системными ресурсами, необходимо освободить созданный буфер обмена с помощью hs.pasteboard.deletePasteboard, когда вы уверены, что он больше не нужен.
Устанавливает буфер обмена в содержимое данных и присваивает его тип указанному UTI. Данные будут закодированы как архив, соответствующий NSKeyedArchiver.
Parameters
name - необязательная строка, указывающая имя буфера обмена. Если nil или отсутствует, используется системный буфер обмена.
uti - строка, определяющая UTI элемента буфера обмена, который нужно установить.
data - любой тип, представимый в Lua, который будет преобразован в соответствующие типы NSObject и архивирован с помощью NSKeyedArchiver. Поддерживаются все основные типы Lua, а также те типы NSObject, которые обрабатываются модулями Hammerspoon (NSColor, NSStyledText, NSImage и т. д.).
add - необязательное булево значение, указывающее, следует ли сохранить данные с другими значениями UTI. Это значение должно быть строго true или false, если задано, чтобы избежать неоднозначности с предыдущими параметрами.
Returns
True, если операция выполнена успешно, иначе false (что, скорее всего, означает изменение владения буфером обмена)
Notes
NSKeyedArchiver определяет архитектурно-независимый формат, который часто используется в приложениях OS X для хранения и передачи объектов между приложениями и при хранении данных в файле. Он работает, записывая информацию о типах объектов и парах ключ-значение, составляющих хранимые объекты.
Только объекты, для которых есть встроенные функции преобразования в Hammerspoon, могут быть преобразованы.
Полный список объектов NSObject, напрямую поддерживаемых Hammerspoon, запланирован в будущей статье Wiki.
Устанавливает буфер обмена в содержимое данных и присваивает ему тип указанного UTI.
Parameters
name - необязательная строка, указывающая имя буфера обмена. Если nil или отсутствует, используется системный буфер обмена.
uti - строка, определяющая UTI элемента буфера обмена, который нужно установить.
data - строка, определяющая исходные данные для присвоения буферу обмена.
add - необязательное булево значение, указывающее, следует ли сохранить данные с другими значениями UTI. Это значение должно быть строго true или false, если задано, чтобы избежать неоднозначности с предыдущими параметрами.
Returns
True, если операция выполнена успешно, иначе false (что, скорее всего, означает изменение владения буфером обмена)
Устанавливает содержимое буфера обмена указанному объекту или объектам.
Parameters
object - объект или таблица объектов, для которых нужно установить буфер обмена. Признаются следующие объекты:
строка Lua, которая может быть получена большинством приложений, которые могут принимать текст из буфера обмена
объект hs.styledtext , который может быть получен большинством приложений, которые могут принимать исходный объект NSAttributedString (часто преобразуемый внутренне в RTF, RTFD, HTML и т. д.)
объект hs.sound , который может быть получен большинством приложений, которые могут принимать исходный объект NSSound
объект hs.image , который может быть получен большинством приложений, которые могут принимать исходный объект NSImage
таблица с ключом url и значением, представляющим URL-адрес файла или ресурса, который может быть получен большинством приложений, которые могут принимать объект NSURL для представления файла или удаленного ресурса
таблица с ключами, как описано в hs.drawing.color , для представления цвета, который может быть получен большинством приложений, которые могут принимать исходный объект NSColor
массив одного или нескольких из вышеуказанных объектов, позволяющий поместить более одного объекта в буфер обмена.
name - необязательная строка, указывающая имя буфера обмена. Если nil или отсутствует, используется системный буфер обмена.
Returns
true или false, указывающие, были ли обновлены данные буфера обмена.
Notes
Большинство приложений могут получить только первый элемент в буфере обмена. Несколько элементов в буфере обмена чаще всего используются для внутриприложения связи, где отправитель и получатель специально написаны с учетом нескольких объектов.
Устанавливает буфер обмена на содержимое данных и присваивает ему указанный тип UTI.
Параметры
name - необязательная строка, указывающая имя буфера обмена. Если nil или отсутствует, используется системный буфер обмена.
uti - строка, определяющая UTI элемента буфера обмена, который нужно установить.
data - тип Lua, который может быть представлен как значение списка свойств.
add - необязательное булево значение, указывающее, следует ли сохранять данные с другими значениями UTI. Это значение должно быть строго true или false, если задано, чтобы избежать неоднозначности с предыдущими параметрами.
Возвращаемое значение
True, если операция выполнена успешно, иначе false (что, скорее всего, означает изменение владения буфером обмена)