Spec-Zone.ru › Hammerspoon

hs.eventtap.event

Создать, изменить и просмотреть события для hs.eventtap

Этот модуль в основном основан на коде из предыдущей версии Mjolnir, предоставленной Steven Degutis.

hs.eventtap.event.newGesture использует внешнюю библиотеку Calf Trail Software, LLC.

Авторское право на использование (C) 2010 Calf Trail Software, LLC

Эта программа является свободным программным обеспечением; вы можете перераспределять ее и/или изменять ее в соответствии с условиями GNU Общественной лицензии, опубликованной Фондом свободного программного обеспечения; либо версия 2 лицензии, либо (по вашему выбору) любая более поздняя версия.

Эта программа распространяется в надежде, что она будет полезной, но БЕЗ ГАРАНТИИ; даже без подразумеваемой гарантии товарной пригодности или пригодности для определенной цели. Подробнее см. в GNU Общественной лицензии.

Вы должны были получить копию GNU Общественной лицензии вместе с этой программой; если нет, напишите в Фонд свободного программного обеспечения, Inc., 51 Franklin Street, пятый этаж, Бостон, MA 02110-1301, США.

Обзор API

  • Константы - Полезные значения, которые нельзя изменить
    • properties
    • rawFlagMasks
    • types
  • Функции - API-вызовы, предлагаемые непосредственно расширением
    • newKeyEventSequence
  • Конструкторы - API-вызовы, которые возвращают объект, как правило, тот, что предлагает API-методы
    • copy
    • newEvent
    • newEventFromData
    • newGesture
    • newKeyEvent
    • newMouseEvent
    • newScrollEvent
    • newSystemKeyEvent
  • Методы - API-вызовы, которые могут быть выполнены только над объектом, возвращенным конструктором
    • asData
    • getButtonState
    • getCharacters
    • getFlags
    • getKeyCode
    • getProperty
    • getRawEventData
    • getTouchDetails
    • getTouches
    • getType
    • getUnicodeString
    • location
    • post
    • rawFlags
    • setFlags
    • setKeyCode
    • setProperty
    • setType
    • setUnicodeString
    • systemKey
    • timestamp

Документация API

Константы

properties
Подпись hs.eventtap.event.properties -> table
Тип Константа
Описание

Таблица, содержащая типы свойств для использования с hs.eventtap.event:getProperty() и hs.eventtap.event:setProperty(). Таблица поддерживает прямой (метка к числу) и обратный (число к метке) поиск для повышения гибкости.

Примечания
  • Константы, определенные в этой таблице, представлены следующим образом: (I) в описании указывает, что это свойство возвращается или устанавливается как целое число (N) в описании указывает, что это свойство возвращается или устанавливается как число (с плавающей точкой)
  • eventSourceGroupID -- (I) Эффективный GID процесса источника события Unix.
  • eventSourceStateID -- (I) Идентификатор состояния источника события, используемый для создания этого события.
  • eventSourceUnixProcessID -- (I) Идентификатор процесса источника события Unix.
  • eventSourceUserData -- (I) Данные, предоставленные пользователем источника события, до 64 бит.
  • eventSourceUserID -- (I) Эффективный UID процесса источника события Unix.
  • eventTargetProcessSerialNumber -- (I) Номер последовательности процесса целевого события. Значение представляет собой 64-битное длинное слово.
  • eventTargetUnixProcessID -- (I) Идентификатор процесса целевого события Unix.
  • eventUnacceleratedPointerMovementX -- Недокументировано, предполагается целое число
  • eventUnacceleratedPointerMovementY -- Недокументировано, предполагается целое число
  • keyboardEventAutorepeat -- (I) Не равно нулю, когда это повторение нажатия клавиши, и равно нулю в противном случае.
  • keyboardEventKeyboardType -- (I) Идентификатор типа клавиатуры.
  • keyboardEventKeycode -- (I) Виртуальный код клавиши события нажатия или отпускания клавиши.
  • mouseEventButtonNumber -- (I) Номер кнопки мыши. Для получения информации о возможных значениях см. Кнопки мыши.
  • mouseEventClickState -- (I) Состояние нажатия кнопки мыши. Состояние щелчка 1 соответствует одиночному щелчку. Состояние щелчка 2 соответствует двойному щелчку. Состояние щелчка 3 соответствует тройному щелчку.
  • mouseEventDeltaX -- (I) Горизонтальное смещение мыши с момента последнего события перемещения мыши.
  • mouseEventDeltaY -- (I) Вертикальное смещение мыши с момента последнего события перемещения мыши.
  • mouseEventInstantMouser -- (I) Значение не равно нулю, если событие должно игнорироваться подсистемой Inkwell.
  • mouseEventNumber -- (I) Номер события кнопки мыши. Соответствующие события нажатия и отпускания кнопки мыши будут иметь одинаковый номер события.
  • mouseEventPressure -- (N) Давление на кнопку мыши. Значение давления может изменяться от 0 до 1, где 0 соответствует поднятой мыши. Это значение обычно устанавливается планшетными ручками, имитирующими мышь.
  • mouseEventSubtype -- (I) Кодирование подтипа события мыши. 0 = мышь, 1 = точка планшета, 2 = близость планшета, 3 = касание
  • mouseEventWindowUnderMousePointer -- (I) Идентификатор окна под курсором мыши (это соответствует hs.window:id())
  • mouseEventWindowUnderMousePointerThatCanHandleThisEvent -- (I) Идентификатор окна под курсором мыши, которое может обработать это событие (это соответствует hs.window:id())
  • scrollWheelEventDeltaAxis1 -- (I) Данные прокрутки. Это поле обычно содержит изменение вертикального положения с момента последнего события прокрутки от скроллера Mighty Mouse или скроллера мыши с одной колесиком.
  • scrollWheelEventDeltaAxis2 -- (I) Данные прокрутки. Это поле обычно содержит изменение горизонтального положения с момента последнего события прокрутки от скроллера Mighty Mouse.
  • scrollWheelEventDeltaAxis3 -- (I) Это поле не используется.
  • scrollWheelEventFixedPtDeltaAxis1 -- (N) Содержит данные прокрутки, которые представляют изменение вертикального положения на основе строк или пикселей с момента последнего события прокрутки от скроллера Mighty Mouse или скроллера мыши с одной колесиком.
  • scrollWheelEventFixedPtDeltaAxis2 -- (N) Содержит данные прокрутки, которые представляют изменение горизонтального положения на основе строк или пикселей с момента последнего события прокрутки от скроллера Mighty Mouse.
  • scrollWheelEventFixedPtDeltaAxis3 -- (N) Это поле не используется.
  • scrollWheelEventInstantMouser -- (I) Указывает, должно ли событие игнорироваться подсистемой Inkwell. Если значение не равно нулю, событие должно игнорироваться.
  • scrollWheelEventIsContinuous -- (I) Указывает, содержит ли событие прокрутки непрерывные данные прокрутки на основе пикселей. Значение не равно нулю, когда данные прокрутки основаны на пикселях, и равно нулю, когда данные прокрутки основаны на строках (обратите внимание, что это противоположно тому, что предполагают константы в CGEventTypes.h, поэтому протестируйте, прежде чем полагаться на это, и сообщите нам, что вы обнаружили!).
  • scrollWheelEventMomentumPhase -- (I) Указывает фазу импульса прокрутки: 0 = нет, 1 = начало, 2 = продолжение, 3 = конец
  • scrollWheelEventPointDeltaAxis1 -- (I) Данные прокрутки на основе пикселей. Данные прокрутки представляют собой изменение вертикального положения с момента последнего события прокрутки от скроллера Mighty Mouse или скроллера мыши с одной колесиком.
  • scrollWheelEventPointDeltaAxis2 -- (I) Данные прокрутки на основе пикселей. Данные прокрутки представляют собой изменение горизонтального положения с момента последнего события прокрутки от скроллера Mighty Mouse.
  • scrollWheelEventPointDeltaAxis3 -- (I) Это поле не используется.
  • scrollWheelEventScrollCount -- (I) Количество жестов прокрутки, которые начались до того, как закончилась фаза импульса начального жеста (не проверено, это выводится из комментариев в сети).
  • scrollWheelEventScrollPhase -- (I) Указывает фазу прокрутки: 1 = началась, 2 = изменилась, 4 = закончилась, 8 = отменена, 128 = может начаться.
  • tabletEventDeviceID -- (I) Уникальный идентификатор устройства, назначенный системой.
  • tabletEventPointButtons -- (I) Состояние кнопок планшета. Бит 0 — первая кнопка, и установленный бит обозначает закрытую или нажатую кнопку. Поддерживается до 16 кнопок.
  • tabletEventPointPressure -- (N) Давление на стилус планшета. Значение 0.0 соответствует отсутствию давления, а 1.0 — максимальному давлению.
  • tabletEventPointX -- (I) Абсолютная координата X в пространстве планшета с полным разрешением планшета.
  • tabletEventPointY -- (I) Абсолютная координата Y в пространстве планшета с полным разрешением планшета.
  • tabletEventPointZ -- (I) Абсолютная координата Z в пространстве планшета с полным разрешением планшета.
  • tabletEventRotation -- (N) Поворот стилуса планшета.
  • tabletEventTangentialPressure -- (N) Касательное давление на устройстве. Значение 0.0 соответствует отсутствию давления, а 1.0 — максимальному давлению.
  • tabletEventTiltX -- (N) Горизонтальный наклон стилуса планшета. Значение 0.0 соответствует отсутствию наклона, а 1.0 — максимальному наклону.
  • tabletEventTiltY -- (N) Вертикальный наклон стилуса планшета. Значение 0.0 соответствует отсутствию наклона, а 1.0 — максимальному наклону.
  • tabletEventVendor1 -- (I) Значение, указанное производителем.
  • tabletEventVendor2 -- (I) Значение, указанное производителем.
  • tabletEventVendor3 -- (I) Значение, указанное производителем.
  • tabletProximityEventCapabilityMask -- (I) Маска возможностей устройства.
  • tabletProximityEventDeviceID -- (I) Идентификатор устройства, назначенный системой.
  • tabletProximityEventEnterProximity -- (I) Указывает, находится ли стилус вблизи планшета. Значение не равно нулю, если стилус находится вблизи планшета, и равно нулю при выходе из зоны планшета.
  • tabletProximityEventPointerID -- (I) Идентификатор указателя, определенный производителем.
  • tabletProximityEventPointerType -- (I) Тип указателя.
  • tabletProximityEventSystemTabletID -- (I) Уникальный идентификатор планшета, назначенный системой.
  • tabletProximityEventTabletID -- (I) Идентификатор планшета, определенный производителем, обычно идентификатор USB-продукта.
  • tabletProximityEventVendorID -- (I) Идентификатор производителя, обычно идентификатор USB-производителя.
  • tabletProximityEventVendorPointerSerialNumber -- (I) Серийный номер указателя, определенный производителем.
  • tabletProximityEventVendorPointerType -- (I) Тип указателя, определенный производителем.
  • tabletProximityEventVendorUniqueID -- (I) Уникальный идентификатор, определенный производителем.
Источник extensions/eventtap/libeventtap_event.m строка 1398
rawFlagMasks
Подпись hs.eventtap.event.rawFlagMasks[]
Тип Константа
Описание

Таблица, содержащая пары ключ-значение, описывающие сырые флаги модификаторов, которые можно изменять с помощью hs.eventtap.event:rawFlags.

Примечания
  • Эта таблица и hs.eventtap.event:rawFlags считаются экспериментальными, так как полное значение некоторых из этих флагов и возможные комбинации всё ещё определяются. Некоторые имена ключей могут быть изменены в будущем.
  • В настоящее время известно следующее о флагах:
  • alternate - Соответствует левой (или единственной) клавише Alt на клавиатуре
  • command - Соответствует левой (или единственной) клавише Cmd на клавиатуре
  • control - Соответствует левой (или единственной) клавише Ctrl на клавиатуре
  • shift - Соответствует левой (или единственной) клавише Shift на клавиатуре
  • numericPad - Указывает, что клавиша соответствует определённой клавише на цифровом блоке клавиатуры, если он присутствует
  • secondaryFn - Указывает клавишу Fn, которая есть на большинстве современных ноутбуков Macintosh. Может также наблюдаться с функциональными и другими специальными клавишами (стрелки, Page Up/Down и т. д.)
  • deviceRightAlternate - Соответствует правой клавише Alt на клавиатуре (если присутствует)
  • deviceRightCommand - Соответствует правой клавише Cmd на клавиатуре (если присутствует)
  • deviceRightControl - Соответствует правой клавише Ctrl на клавиатуре (если присутствует)
  • deviceRightShift - Соответствует правой клавише Alt на клавиатуре (если присутствует)
  • nonCoalesced - Указывает, что несколько движений мыши не объединяются в одно событие, если доставка события была замедлена
  • Следующие также определены в IOLLEvent.h, но описание является предположением, так как я их не наблюдал
  • alphaShift - так или иначе связан с Caps Lock?
  • alphaShiftStateless - так или иначе связан с Caps Lock?
  • deviceAlphaShiftStateless - так или иначе связан с Caps Lock?
  • deviceLeftAlternate - Соответствует левой клавише Alt на клавиатуре (если присутствует)
  • deviceLeftCommand - Соответствует левой клавише Cmd на клавиатуре (если присутствует)
  • deviceLeftControl - Соответствует левой клавише Ctrl на клавиатуре (если присутствует)
  • deviceLeftShift - Соответствует левой клавише Shift на клавиатуре (если присутствует)
  • help - связан с модификатором, который был на старых клавиатурах NeXT, но отсутствует на современных?
  • Также было замечено, что искусственные события, которые были опубликованы, также имеют установленный бит, представленный 0x20000000. Эта константа не появляется в IOLLEvent.h или CGEventTypes.h, которые определяют большинство констант, используемых в этом модуле, поэтому она не включена в эту таблицу в настоящее время, но может быть добавлена в будущем, если будут найдены подтверждающие данные.
  • Для того чтобы это могло пригодиться, я обнаружил, что наиболее полезно отфильтровать nonCoalesced и 0x20000000 перед изучением флагов в своём собственном коде, например так: hs.eventtap.event:rawFlags() & 0xdffffeff где 0xdffffeff = ~(0x20000000 | 0x100) (ограничено 32 битами, поскольку это то, что возвращает rawFlags).
  • Любая документация или ссылки, которые могут дополнить информацию здесь, приветствуются - Пожалуйста, отправьте любую информацию, которая у вас есть, через сайт Hammerspoon GitHub или Google группу.
Источник extensions/eventtap/libeventtap_event.m строка 1531
types
Подпись hs.eventtap.event.types -> table
Тип Константа
Описание

Таблица, содержащая типы событий, которые необходимо использовать с hs.eventtap.new(...) и возвращаемые hs.eventtap.event:type(). Таблица поддерживает поиск по направлению вперёд (метка в число) и назад (число в метку) для повышения гибкости.

Примечания
  • Константы, определённые в этой таблице, следующие:
  • nullEvent -- Указывает нулевое событие. (до сих пор не наблюдалось; пожалуйста, отправьте вопрос, если у вас есть дополнительная информация)
  • leftMouseDown -- Указывает событие нажатия левой кнопкой мыши.
  • leftMouseUp -- Указывает событие отпускания левой кнопкой мыши.
  • rightMouseDown -- Указывает событие нажатия правой кнопкой мыши.
  • rightMouseUp -- Указывает событие отпускания правой кнопкой мыши.
  • mouseMoved -- Указывает событие перемещения мыши.
  • leftMouseDragged -- Указывает событие перетаскивания мыши с нажатой левой кнопкой.
  • rightMouseDragged -- Указывает событие перетаскивания мыши с нажатой правой кнопкой.
  • keyDown -- Указывает событие нажатия клавиши.
  • keyUp -- Указывает событие отпускания клавиши.
  • flagsChanged -- Указывает событие изменения клавиши для модификатора или клавиши состояния.
  • scrollWheel -- Указывает событие вращения колёсика мыши.
  • tabletPointer -- Указывает событие указателя планшета.
  • tabletProximity -- Указывает событие близости планшета.
  • otherMouseDown -- Указывает событие нажатия кнопкой мыши 2-31.
  • otherMouseUp -- Указывает событие отпускания кнопкой мыши 2-31.
  • otherMouseDragged -- Указывает событие перетаскивания мыши с нажатой кнопкой 2-31.
  • Следующие события, также включённые в таблицу поиска, предоставляются через NSEvent и в настоящее время могут потребовать использование hs.eventtap.event:getRawEventData() для получения дополнительной информации. Методы, специфичные для целевого объекта, могут быть добавлены по мере изучения возможности использования этих событий.
  • gesture -- Событие, представляющее событие касания на сенсорной панели или сенсорной панели. Смотрите ниже.
  • systemDefined -- Событие, указывающее, что произошло какое-то системное событие. Для нас оно в основном используется для обнаружения специальных системных клавиш (громкость вверх/вниз и т. д.). См. hs.eventtap.event:systemKey и hs.eventtap.event.newSystemKeyEvent.
  • appKitDefined -- (до сих пор не наблюдалось; пожалуйста, отправьте вопрос, если у вас есть дополнительная информация)
  • applicationDefined -- (до сих пор не наблюдалось; пожалуйста, отправьте вопрос, если у вас есть дополнительная информация)
  • cursorUpdate -- (до сих пор не наблюдалось; пожалуйста, отправьте вопрос, если у вас есть дополнительная информация)
  • mouseEntered -- (до сих пор не наблюдалось; пожалуйста, отправьте вопрос, если у вас есть дополнительная информация)
  • mouseExited -- (до сих пор не наблюдалось; пожалуйста, отправьте вопрос, если у вас есть дополнительная информация)
  • periodic -- (до сих пор не наблюдалось; пожалуйста, отправьте вопрос, если у вас есть дополнительная информация)
  • quickLook -- (до сих пор не наблюдалось; пожалуйста, отправьте вопрос, если у вас есть дополнительная информация)
  • Чтобы обнаружить следующие события, настройте eventtap для захвата типа hs.eventtap.event.type.gesture и проверьте значение hs.eventtap.event:getType(true).
  • gesture -- Пользователь коснулся части трекпада
  • directTouch -- Пользователь коснулся части сенсорной панели.
  • changeMode -- Двойное нажатие на боковой части Apple Pencil, сопряжённого с iPad, который используется в качестве внешнего монитора через Sidecar.
  • magnify -- Пользователь выполнил жест масштабирования или уменьшения.
  • pressure -- Давление на сенсорную панель с силой нажатия изменилось.
  • rotate -- Пользователь выполнил поворотный жест.
  • smartMagnify -- Пользователь выполнил умный жест масштабирования (2-пальцевое двойное нажатие на трекпадах).
  • swipe -- Пользователь выполнил жест свайпа. (до сих пор не наблюдалось; пожалуйста, отправьте вопрос, если у вас есть дополнительная информация)
Источник extensions/eventtap/libeventtap_event.m строка 1301

Функции

newKeyEventSequence
Подпись hs.eventtap.event.newKeyEventSequence(modifiers, character) -> table
Тип Функция
Описание

Генерирует таблицу, содержащую события нажатия и отпускания клавиш для генерации нажатия клавиши со заданными модификаторами.

Параметры
  • modifiers - Таблица, содержащая клавиши модификаторов для применения ("cmd", "alt", "shift", "ctrl", "rightCmd", "rightAlt", "rightShift", "rightCtrl" или "fn")
  • character - Строка, содержащая символ, который необходимо вывести
Возвращаемое значение
  • таблица с событиями, которая содержит отдельные события, которые Apple рекомендует для построения сочетания клавиш (см. hs.eventtap.event.newKeyEvent) в порядке их отправки (т. е. первая половина будет содержать события keyDown, а вторая половина — keyUp события)
Примечания
  • Таблица modifiers должна содержать полное имя модификаторов, которые необходимо использовать для нажатия клавиши, как определено в hs.keycodes.map — эквиваленты Unicode этой функцией не поддерживаются.
  • Возвращаемая таблица всегда будет содержать чётное количество событий — первая половина будет содержать события keyDown, а вторая половина — keyUp события.
  • События не были отправлены; таблица может быть использована без изменений в качестве возвращаемого значения для обратного вызова наблюдателя, определённого с помощью hs.eventtap.new.
Источник extensions/eventtap/eventtap.lua строка 87

Конструкторы

copy
Подпись hs.eventtap.event:copy() -> event
Тип Конструктор
Описание

Создаёт дубликат события hs.eventtap.event для дальнейшей модификации или вставки

Параметры
  • Нет
Возвращаемое значение
  • Новый объект hs.eventtap.event
Источник extensions/eventtap/libeventtap_event.m строка 22
newEvent
Подпись hs.eventtap.event.newEvent() -> event
Тип Конструктор
Описание

Создаёт пустое событие. Вам необходимо установить его тип с помощью hs.eventtap.event:setType

Параметры
  • Нет
Возвращаемое значение
  • новый объект hs.eventtap.event
Примечания
  • это пустое событие, для которого вы должны задать тип и любые другие соответствующие свойства перед публикацией.
Источник extensions/eventtap/libeventtap_event.m строка 41
END_OF_DOCUMENT_MARKER
newEventFromData
Signature hs.eventtap.event.newEventFromData(data) -> event
Type Constructor
Description

Создаёт событие из данных, закодированных в предоставленной строке.

Parameters
  • data - строка, содержащая двоичные данные, предоставленные методом hs.eventtap.event:asData, представляющие событие.
Returns
  • новый объект hs.eventtap.event или nil, если строка не представляла собой действительное событие
Source extensions/eventtap/libeventtap_event.m строка 60
newGesture
Signature hs.eventtap.event.newGesture(gestureType[, gestureValue]) -> event
Type Constructor
Description

Создаёт событие жеста.

Parameters
  • gestureType - тип жеста в виде строки (см. примечания ниже).
  • [gestureValue] - необязательное значение для конкретного жеста (например, величина масштабирования или угол поворота в градусах).
Returns
  • новый объект hs.eventtap.event или nil, если gestureType недействителен.
Notes
  • Допустимые значения gestureType:
  • beginMagnify - Инициализирует событие масштабирования с необязательным значением масштабирования в виде числа (по умолчанию 0). Точная единица измерения неизвестна.
  • endMagnify - Инициализирует событие масштабирования с необязательным значением масштабирования в виде числа (по умолчанию 0.1). Точная единица измерения неизвестна.
  • beginRotate - Инициализирует событие поворота со значением поворота в градусах (например, значение 45 поворачивает влево на 45 градусов — по умолчанию 0).
  • endRotate - Инициализирует событие поворота со значением поворота в градусах (например, значение 45 поворачивает влево на 45 градусов — по умолчанию 45).
  • beginSwipeLeft - Начало свайпа влево.
  • endSwipeLeft - Конец свайпа влево.
  • beginSwipeRight - Начало свайпа вправо.
  • endSwipeRight - Конец свайпа вправо.
  • beginSwipeUp - Начало свайпа вверх.
  • endSwipeUp - Конец свайпа вверх.
  • beginSwipeDown - Начало свайпа вниз.
  • endSwipeDown - Конец свайпа вниз.
Examples
Source extensions/eventtap/libeventtap_event.m строка 84
newKeyEvent
Signature hs.eventtap.event.newKeyEvent([mods], key, isdown) -> event
Type Constructor
Description

Создаёт событие нажатия клавиши.

Parameters
  • mods - Необязательная таблица, содержащая ноль или более из следующих элементов:
    • cmd
    • alt
    • shift
    • ctrl
    • fn
  • key - Строка, содержащая имя клавиши (см. hs.hotkey для получения дополнительной информации) или целое число, определяющее виртуальный код клавиши.
  • isdown - Булево значение, true, если событие является нажатием клавиши, false, если это отпускание клавиши.
Returns
  • Объект hs.eventtap.event
Notes
  • Оригинальная версия этого конструктора использовала сокращение, которое объединяло flagsChanged и keyUp/keyDown события в одно. Этот подход по-прежнему поддерживается для обратной совместимости и потому, что он действительно работает в большинстве случаев.
  • Согласно документации Apple, правильный способ выполнения нажатия клавиши с модификаторами — это использование нескольких событий клавиш; например, чтобы сгенерировать 'Å', необходимо выполнить следующие действия:
hs.eventtap.event.newKeyEvent(hs.keycodes.map.shift, true):post()
   hs.eventtap.event.newKeyEvent(hs.keycodes.map.alt, true):post()
   hs.eventtap.event.newKeyEvent("a", true):post()
   hs.eventtap.event.newKeyEvent("a", false):post()
   hs.eventtap.event.newKeyEvent(hs.keycodes.map.alt, false):post()
   hs.eventtap.event.newKeyEvent(hs.keycodes.map.shift, false):post()
  • Сокращённый метод по-прежнему поддерживается, однако если вы столкнётесь с необычным поведением или вам необходимо сгенерировать события flagsChanged без соответствующих keyUp или keyDown, пожалуйста, ознакомьтесь со синтаксисом, показанным выше.
hs.eventtap.event.newKeyEvent({"shift", "alt"}, "a", true):post()
   hs.eventtap.event.newKeyEvent({"shift", "alt"}, "a", false):post()
  • Подход со сокращениями по-прежнему ограничен генерацией только левых версий модификаторов.
Source extensions/eventtap/libeventtap_event.m строка 826
newMouseEvent
Signature hs.eventtap.event.newMouseEvent(eventtype, point[, modifiers) -> event
Type Constructor
Description

Создаёт новое событие мыши.

Parameters
  • eventtype - Одно из значений, связанных с мышью, из hs.eventtap.event.types
  • point - таблица hs.geometry point (например, в форме {x=123, y=456}) указывающая место, где должно произойти событие мыши.
  • modifiers - необязательная таблица (например, {"cmd", "alt"}) содержащая ноль или более из следующих клавиш:
    • cmd
    • alt
    • shift
    • ctrl
    • fn
Returns
  • Объект hs.eventtap
Source extensions/eventtap/eventtap.lua строка 113
newScrollEvent
Signature hs.eventtap.event.newScrollEvent(offsets, mods, unit) -> event
Type Constructor
Description

Создаёт событие прокрутки колёсика мыши.

Parameters
  • offsets - таблица, содержащая значения {горизонтальное, вертикальное} прокрутки. Положительные значения прокручивают вверх или влево, отрицательные значения — вниз или вправо.
  • mods - таблица, содержащая ноль или более из следующих элементов:
    • cmd
    • alt
    • shift
    • ctrl
    • fn
  • unit - необязательная строка, содержащая имя единицы измерения для прокрутки. Либо "line" (по умолчанию), либо "pixel"
Returns
  • Объект hs.eventtap.event
Source extensions/eventtap/libeventtap_event.m строка 1004
newSystemKeyEvent
Signature hs.eventtap.event.newSystemKeyEvent(key, isdown) -> event
Type Constructor
Description

Создаёт событие нажатия специальной клавиши (например, для управления воспроизведением медиа).

Parameters
  • key - Строка, содержащая имя специальной клавиши. Возможные имена:
    • SOUND_UP
    • SOUND_DOWN
    • MUTE
    • BRIGHTNESS_UP
    • BRIGHTNESS_DOWN
    • CONTRAST_UP
    • CONTRAST_DOWN
    • POWER
    • LAUNCH_PANEL
    • VIDMIRROR
    • PLAY
    • EJECT
    • NEXT
    • PREVIOUS
    • FAST
    • REWIND
    • ILLUMINATION_UP
    • ILLUMINATION_DOWN
    • ILLUMINATION_TOGGLE
    • CAPS_LOCK
    • HELP
    • NUM_LOCK
  • isdown - Булево значение, true, если событие является нажатием клавиши, false, если это отпускание клавиши.
Returns
  • Объект hs.eventtap.event
Notes
  • Чтобы установить модификаторы на событие системной клавиши (например, cmd/ctrl и т.д.), см. метод hs.eventtap.event:setFlags()
  • Имена событий чувствительны к регистру.
Source extensions/eventtap/libeventtap_event.m строка 904

Методы

asData
Signature hs.eventtap.event:asData() -> string
Type Метод
Description

Возвращает строку, содержащую двоичные данные, представляющие событие. Это можно использовать для записи событий для последующего использования.

Parameters
  • Нет
Returns
  • строка, представляющая событие, или nil, если событие не может быть представлено в виде строки
Notes
  • Вы можете воссоздать событие для последующей публикации с помощью hs.eventtap.event.newEventFromData
Source extensions/eventtap/libeventtap_event.m строка 264
getButtonState
Signature hs.eventtap.event:getButtonState(button) -> bool
Type Метод
Description

Получает состояние клавиши мыши в событии.

Parameters
  • button - Число от 0 до 31. Левая кнопка мыши — 0, правая — 1, средняя — 2. Значение остальных кнопок зависит от аппаратного обеспечения и их функциональности в приложении (обычно их нет на мыши и они не имеют эффекта в приложении).
Returns
  • Булево значение, true, если указанная кнопка мыши должна быть нажата событием.
Notes
  • Этот метод следует вызывать только для событий мыши.
Source extensions/eventtap/libeventtap_event.m строка 767
END_OF_DOCUMENT_MARKER
getCharacters
Signature hs.eventtap.event:getCharacters([clean]) -> string or nil
Type Method
Description

Возвращает символ Unicode, если таковой имеется, представленный событием keyDown или keyUp.

Parameters
  • clean -- необязательный параметр, по умолчанию false, который указывает, следует ли удалять модификаторы клавиш, отличные от Shift, из нажатия клавиши перед преобразованием в Unicode.
Returns
  • Строка, содержащая символ Unicode, представленный событием keyDown или keyUp, или nil, если событие не является keyUp или keyDown.
Notes
  • Этот метод следует использовать только для событий клавиатуры
  • Если clean истинно, все модификаторы, кроме Shift, удаляются из символа перед преобразованием в символ Unicode, представленный нажатием клавиши.
  • Если нажатие клавиши не соответствует допустимому символу Unicode, возвращается пустая строка (например, если clean ложно, то Opt-E вернёт пустую строку, а Opt-Shift-E вернёт диакритический знак).
Source extensions/eventtap/libeventtap_event.m строка 511
getFlags
Signature hs.eventtap.event:getFlags() -> table
Type Method
Description

Получает модификаторы клавиатуры события.

Parameters
  • None
Returns
  • Таблица, содержащая модификаторы клавиатуры, присутствующие в событии — нуль или более из следующих клавиш, каждая со значением true:
  • cmd
  • alt
  • shift
  • ctrl
  • fn
  • Таблица реагирует на следующие методы:
  • contain(mods) -> boolean
  • Возвращает true, если модификаторы содержат все указанные модификаторы.
  • containExactly(mods) -> boolean
  • Возвращает true, если модификаторы содержат все указанные модификаторы точно и ничего больше.
  • Параметр mods — таблица, содержащая нуль или более из следующего:
  • cmd или ⌘
  • alt или ⌥
  • shift или ⇧
  • ctrl или ⌃
  • fn
Source extensions/eventtap/libeventtap_event.m строка 385
getKeyCode
Signature hs.eventtap.event:getKeyCode() -> keycode
Type Method
Description

Получает исходный код клавиши для события.

Parameters
  • None
Returns
  • Число, содержащее исходный код клавиши, взятое из hs.keycodes.map
Notes
  • Этот метод следует использовать только для событий клавиатуры
Source extensions/eventtap/libeventtap_event.m строка 541
getProperty
Signature hs.eventtap.event:getProperty(prop) -> number
Type Method
Description

Получает свойство события.

Parameters
  • prop - Значение, взятое из hs.eventtap.event.properties
Returns
  • Число, содержащее значение запрошенного свойства
Notes
  • Свойства — значения CGEventField , как документировано на https://developer.apple.com/library/mac/documentation/Carbon/Reference/QuartzEventServicesRef/index.html#//apple_ref/c/tdef/CGEventField
Source extensions/eventtap/libeventtap_event.m строка 735
getRawEventData
Signature hs.eventtap.event:getRawEventData() -> table
Type Method
Description

Возвращает исходные данные о событии.

Parameters
  • None
Returns
  • Таблица с двумя ключами:
    • CGEventData — таблица с ключами, содержащими данные CGEvent о событии.
    • NSEventData — таблица с ключами, содержащими данные NSEvent о событии.
Notes
  • Большая часть данных в CGEventData уже доступна через другие методы, но здесь представлена без какой-либо очистки или разбора.
  • Ожидается, что этот метод будет использоваться в основном для тестирования и расширения возможностей модуля hs.eventtap. Если вы обнаруживаете, что регулярно используете определённые данные из этого метода для общих или многократно используемых целей, рассмотрите возможность запросить добавление более целевого метода в hs.eventtap или hs.eventtap.event — это, вероятно, будет более эффективным и быстрым для распространенных задач, что необходимо для eventtap, чтобы минимизировать воздействие на отзывчивость системы.
Source extensions/eventtap/libeventtap_event.m строка 458
getTouchDetails
Signature hs.eventtap.event:getTouchDetails() -> table | nil
Type Method
Description

Возвращает таблицу, содержащую дополнительную информацию о некоторых событиях, связанных с касанием.

Parameters
  • None
Returns
  • Если событие является событием касания (т. е. является событием типа hs.eventtap.event.types.gesture), то этот метод возвращает таблицу с нулём или более следующими парами ключ-значение:
    • Если жестикуляция относится к событию давления:
      • pressure - число от 0,0 до 1,0 включительно, указывающее на относительное количество давления, приложенного касанием; трекпады, которые нечувствительны к давлению, будут сообщать только дискретные значения 0,0 и 1,0.
      • stage - целое число от 0 до 2, определяющее этап. 0 обозначает переход касания в состояние, слишком лёгкое для того, чтобы считаться касанием, обычно в конце щелчка; 1 обозначает касание с достаточным давлением, чтобы считаться событием mouseDown; 2 обозначает дополнительное давление, обычно то, что вызовет «глубокое» или «сильное» касание.
      • stageTransition - число от 0,0 до 1,0. По мере увеличения давления и начала перехода между этапами это значение будет увеличиваться от 0,0 до 1,0; по мере уменьшения давления и начала перехода между этапами это значение будет уменьшаться от 0,0 до -1,0. Когда давление находится устойчиво на определённом этапе, это значение останется 0,0.
      • pressureBehavior - строка, определяющая эффект или назначение давления. Обратите внимание, что точное значение (с точки зрения тактильной обратной связи или выполняемого действия) каждой метки зависит от целевого приложения или элемента интерфейса. Допустимые значения для этого ключа:
        • "unknown", "default", "click", "generic", "accelerator", "deepClick", "deepDrag"
    • Если жестикуляция относится к событию масштабирования:
      • magnification - число, определяющее изменение масштаба, которое следует добавить к текущему масштабированию элемента, чтобы получить новый коэффициент масштабирования.
    • Если жестикуляция относится к событию вращения:
      • rotation - число, определяющее в градусах изменение поворота, которое следует добавить, как указано в этом событии. Повороты по часовой стрелке обозначаются отрицательным числом, а против часовой стрелки — положительным.
Source extensions/eventtap/libeventtap_event.m строка 1239
getTouches
Signature hs.eventtap.event:getTouches() -> table | nil
Type Method
Description

Возвращает таблицу деталей, содержащую информацию о касаниях трекпада, связанного с этим событием, если событие имеет тип hs.eventtap.event.types.gesture.

Parameters
  • None
Returns
  • Если событие имеет тип gesture, возвращает таблицу; в противном случае возвращает nil.
Notes
  • Если событие имеет тип gesture, таблица будет содержать один или несколько таблиц в массиве. Каждая таблица-элемент массива будет содержать следующие пары ключ-значение:
    • device - строка, содержащая уникальный идентификатор устройства, на котором произошло касание. В настоящее время у нас нет способа сопоставить идентификатор с конкретным устройством касания, но если к компьютеру подключено несколько таких устройств, это значение будет отличаться между ними.
    • deviceSize - таблица размеров, содержащая ключи h и w для высоты и ширины устройства касания в пунктах (разрешение 72 PPI).
    • force - число, представляющее меру силы касания, когда устройство является трекпадом с функцией forcetouch. Будет равно 0.0 для трекпадов без forcetouch и сенсорной панели.
    • identity - строка, определяющая уникальный идентификатор касания, гарантированно уникальный на протяжении всего времени существования касания. Этот идентификатор можно использовать для отслеживания перемещения конкретного касания (например, пальца) по мере его перемещения через последовательные обратные вызовы.
    • phase - строка, определяющая текущую фазу, в которой находится касание. Возможные значения: "began", "moved", "stationary", "ended" или "cancelled".
    • resting - касания в состоянии покоя происходят, когда пользователь просто кладёт палец на устройство трекпада. Требуется, чтобы фоновое окно имело представления, принимающие касания в состоянии покоя.
    • timestamp - число, представляющее время обнаружения касания. Это число соответствует секундам с момента последней загрузки системы, не включая время, когда компьютер был в спящем режиме. Аналогично hs.timer.absoluteTime() / 1000000000.
    • touching - логическое значение, указывающее, находится ли фаза касания в состоянии "began", "moved" или "stationary" (т.е. не является "ended" или "cancelled").
    • type - строка, определяющая тип касания. "direct" указывает на сенсорную панель, а трекпад сообщает "indirect".
  • Следующие поля будут присутствовать, когда касание происходит с трекпада (type == "indirect")`
  • normalizedPosition - таблица точек, определяющая координаты x и y касания, каждое из которых нормировано в значение от 0,0 до 1,0. { x = 0, y = 0 } - это нижний левый угол устройства касания.
  • previousNormalizedPosition - таблица точек, определяющая координаты x и y предыдущего положения для этого конкретного касания (связанного через identity) с нормализованными значениями от 0,0 до 1,0.
  • Следующие поля будут присутствовать, когда касание происходит с сенсорной панели (type == "direct")`
  • location - таблица точек, определяющая координаты x и y местоположения касания на сенсорной панели.
  • previousLocation - таблица точек, определяющая координаты x и y предыдущего местоположения для этого конкретного касания (связанного через identity) на сенсорной панели.
Source extensions/eventtap/libeventtap_event.m line 1197
getType
Signature hs.eventtap.event:getType([nsSpecificType]) -> number
Type Method
Description

Получает тип события

Parameters
  • nsSpecificType - необязательное логическое значение, по умолчанию false, указывающее, следует ли возвращать более специфический тип события Cocoa NSEvent, если он доступен.
Returns
  • Число, содержащее тип события, взятое из hs.eventtap.event.types
Notes
  • Некоторые более новые события сгруппированы в более общее событие для целей наблюдения, и конкретный тип события определяется путем проверки события через API Cocoa. Основным примером этого являются жесты на трекпаде или касания сенсорной панели, поскольку все они сгруппированы под событием hs.eventtap.event.types.gesture. Например:
    myTap = hs.eventtap.new( { hs.eventtap.event.types.gesture }, function(e)
        local gestureType = e:getType(true)
        if gestureType == hs.eventtap.types.directTouch then
            -- they touched the touch bar
        elseif gestureType == hs.eventtap.types.gesture then
            -- they are touching the trackpad, but it's not for a gesture
        elseif gestureType == hs.eventtap.types.magnify then
            -- they're preforming a magnify gesture
        -- etc -- see hs.eventtap.event.types for more
        endif
    end
    
Source extensions/eventtap/libeventtap_event.m line 694
getUnicodeString
Signature hs.eventtap.event:getUnicodeString()
Type Method
Description

Получает единственный символ Юникода события

Parameters
  • None
Returns
  • Строка, содержащая символ Юникода
Source extensions/eventtap/libeventtap_event.m line 580
location
Signature hs.eventtap.event:location([pointTable]) -> event | table
Type Method
Description

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

Parameters
  • pointTable - необязательная таблица точек, определяющая координаты x и y положения указателя мыши для события
Returns
  • Если pointTable предоставлен, возвращает объект hs.eventtap.event; в противном случае возвращает таблицу точек, содержащую пары ключ-значение x и y, определяющие положение указателя мыши, как указано для этого события.
Notes
  • Использование или эффект этого метода не определены, если событие не является событием типа мыши.
Source extensions/eventtap/libeventtap_event.m line 288
post
Signature hs.eventtap.event:post([app])
Type Method
Description

Отправляет событие в ОС - т.е. генерирует ввод клавиатуры/мыши, определенный событием

Parameters
  • app - Необязательный объект hs.application. Если указано, событие будет отправлено только этому приложению
Returns
  • Объект hs.eventtap.event
Source extensions/eventtap/libeventtap_event.m line 652
rawFlags
Signature hs.eventtap.event:rawFlags([flags]) -> event | integer
Type Method
Description

Экспериментальный метод для получения или установки флагов модификаторов для события напрямую.

Parameters
  • flags - необязательное целое число, полученное логическим объединением значений из hs.eventtap.event.rawFlagMasks, указывающее клавиши модификаторов, которые должны быть установлены для этого события
Returns
  • Если flags предоставлен, возвращает объект hs.eventtap.event; в противном случае возвращает текущие установленные флаги как целое число
Notes
  • Этот метод является экспериментальным и может подвергнуться изменениям или даже удалению в будущем
  • См. hs.eventtap.event.rawFlagMasks для получения дополнительной информации
Source extensions/eventtap/libeventtap_event.m line 359
setFlags
Signature hs.eventtap.event:setFlags(table) -> event
Type Method
Description

Устанавливает модификаторы клавиатуры события

Parameters
  • Таблица, содержащая модификаторы клавиатуры, которые должны быть отправлены вместе с событием - т.е. ноль или более из следующих клавиш, каждая с значением true:
    • cmd
    • alt
    • shift
    • ctrl
    • fn
Returns
  • Объект hs.eventap.event.
Source extensions/eventtap/libeventtap_event.m line 426
setKeyCode
Signature hs.eventtap.event:setKeyCode(keycode)
Type Method
Description

Устанавливает исходный код клавиши для события

Parameters
  • keycode - Число, содержащее исходный код клавиши, взятое из hs.keycodes.map
Returns
  • Объект hs.eventtap.event
Notes
  • Этот метод следует использовать только для событий клавиатуры
Source extensions/eventtap/libeventtap_event.m line 559
END_OF_DOCUMENT_MARKER
setProperty
Signature hs.eventtap.event:setProperty(prop, value)
Type Method
Description

Устанавливает свойство события

Parameters
  • prop - Значение из hs.eventtap.event.properties
  • value - Числовое значение заданного свойства
Returns
  • Объект hs.eventtap.event.
Notes
  • Свойства представляют собой значения CGEventField, как документировано на https://developer.apple.com/library/mac/documentation/Carbon/Reference/QuartzEventServicesRef/index.html#//apple_ref/c/tdef/CGEventField
Source extensions/eventtap/libeventtap_event.m строка 790
setType
Signature hs.eventtap.event:setType(type) -> event
Type Method
Description

Устанавливает тип этого события.

Parameters
  • type - Целое число, соответствующее одному из типов событий, описанных в hs.eventtap.event.types
Returns
  • объект hs.eventtap.event
Source extensions/eventtap/libeventtap_event.m строка 341
setUnicodeString
Signature hs.eventtap.event:setUnicodeString(string)
Type Method
Description

Устанавливает строку Юникод в качестве выходных данных события

Parameters
  • string - Строка, содержащая символы Юникод, которые будут применены к событию
Returns
  • Объект hs.eventtap.event
Notes
  • Вызов этого метода сбросит любые флаги, ранее установленные для события (потому что они не имеют смысла, и вы не должны пытаться устанавливать флаги снова)
  • Вероятно, это будет работать только с короткими строками Юникод, которые разрешаются в один символ
Source extensions/eventtap/libeventtap_event.m строка 609
systemKey
Signature hs.eventtap.event:systemKey() -> table
Type Method
Description

Возвращает специальный ключ и его состояние, если событие является событием NSSystemDefined типа AUX_CONTROL_BUTTONS (нажата специальная клавиша)

Parameters
  • None
Returns
  • Если событие является событием NSSystemDefined типа AUX_CONTROL_BUTTONS, возвращается таблица со следующими ключами:
    • key -- строка, содержащая одно из следующих значений, указывающих на задействованный ключ:
      • SOUND_UP
      • SOUND_DOWN
      • MUTE
      • BRIGHTNESS_UP
      • BRIGHTNESS_DOWN
      • CONTRAST_UP
      • CONTRAST_DOWN
      • POWER
      • LAUNCH_PANEL
      • VIDMIRROR
      • PLAY
      • EJECT
      • NEXT
      • PREVIOUS
      • FAST
      • REWIND
      • ILLUMINATION_UP
      • ILLUMINATION_DOWN
      • ILLUMINATION_TOGGLE
      • CAPS_LOCK
      • HELP
      • NUM_LOCK
      или "undefined", если обнаруженный ключ не распознан.
    • keyCode -- числовое значение keyCode, соответствующее ключу, указанному в key.
    • down -- логическое значение, указывающее, нажата ли клавиша (true) или только отпущена (false)
    • repeat -- логическое значение, указывающее, повторяется ли нажатие клавиши. Для отпускания клавиши всегда будет false.
  • Если событие не соответствует событию NSSystemDefined типа AUX_CONTROL_BUTTONS, возвращается пустая таблица.
Notes
  • CAPS_LOCK, кажется, иногда генерирует 0 или 2 события отпускания клавиши (down == false), особенно на встроенных клавиатурах ноутбуков, поэтому, вероятно, безопаснее (надёжнее) искать только случаи, когда down == true.
  • Если поле key содержит "undefined", вы можете использовать число в keyCode, чтобы найти его в /System/Library/Frameworks/IOKit.framework/Headers/hidsystem/ev_keymap.h. Если вы считаете, что числовое значение является частью новой версии системы или было ошибочно пропущено, отправьте метку (она будет определена в заголовочном файле как NX_KEYTYPE_something) и число разработчикам Hammerspoon по адресу https://github.com/Hammerspoon/hammerspoon с просьбой включить её в следующую версию Hammerspoon.
Source extensions/eventtap/libeventtap_event.m строка 1103
timestamp
Signature hs.eventtap.event:timestamp([absolutetime]) -> event | integer
Type Method
Description

Получение или установка отметки времени события.

Parameters
  • absolutetime - необязательное целое число, задающее отметку времени события.
Returns
  • если absolutetime указан, возвращает объект hs.eventtap.event; в противном случае возвращает текущую отметку времени события.
Notes
  • Сгенерированные события по умолчанию имеют отметку времени 0.
  • Отметка времени, если указана, выражается как целое число, представляющее количество наносекунд, прошедших с момента последней загрузки системы. См. hs.timer.absoluteTime.
  • Это поле, похоже, только информационное и не требуется при создании собственных событий с помощью этого модуля.
Source extensions/eventtap/libeventtap_event.m строка 314

© 2014–2017 Hammerspoon contributors
Licensed under the MIT License.
https://www.hammerspoon.org/docs/hs.eventtap.event.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API