Создать, изменить и просмотреть события для 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
Константы - Полезные значения, которые нельзя изменить
Таблица, содержащая типы свойств для использования с hs.eventtap.event:getProperty() и hs.eventtap.event:setProperty(). Таблица поддерживает прямой (метка к числу) и обратный (число к метке) поиск для повышения гибкости.
Примечания
Константы, определенные в этой таблице, представлены следующим образом: (I) в описании указывает, что это свойство возвращается или устанавливается как целое число (N) в описании указывает, что это свойство возвращается или устанавливается как число (с плавающей точкой)
eventSourceGroupID -- (I) Эффективный GID процесса источника события Unix.
eventSourceStateID -- (I) Идентификатор состояния источника события, используемый для создания этого события.
eventSourceUnixProcessID -- (I) Идентификатор процесса источника события Unix.
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 соответствует поднятой мыши. Это значение обычно устанавливается планшетными ручками, имитирующими мышь.
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) Количество жестов прокрутки, которые начались до того, как закончилась фаза импульса начального жеста (не проверено, это выводится из комментариев в сети).
tabletEventPointButtons -- (I) Состояние кнопок планшета. Бит 0 — первая кнопка, и установленный бит обозначает закрытую или нажатую кнопку. Поддерживается до 16 кнопок.
tabletEventPointPressure -- (N) Давление на стилус планшета. Значение 0.0 соответствует отсутствию давления, а 1.0 — максимальному давлению.
tabletEventPointX -- (I) Абсолютная координата X в пространстве планшета с полным разрешением планшета.
tabletEventPointY -- (I) Абсолютная координата Y в пространстве планшета с полным разрешением планшета.
tabletEventPointZ -- (I) Абсолютная координата Z в пространстве планшета с полным разрешением планшета.
tabletEventTangentialPressure -- (N) Касательное давление на устройстве. Значение 0.0 соответствует отсутствию давления, а 1.0 — максимальному давлению.
tabletEventTiltX -- (N) Горизонтальный наклон стилуса планшета. Значение 0.0 соответствует отсутствию наклона, а 1.0 — максимальному наклону.
tabletEventTiltY -- (N) Вертикальный наклон стилуса планшета. Значение 0.0 соответствует отсутствию наклона, а 1.0 — максимальному наклону.
tabletProximityEventEnterProximity -- (I) Указывает, находится ли стилус вблизи планшета. Значение не равно нулю, если стилус находится вблизи планшета, и равно нулю при выходе из зоны планшета.
Таблица, содержащая пары ключ-значение, описывающие сырые флаги модификаторов, которые можно изменять с помощью 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 группу.
Таблица, содержащая типы событий, которые необходимо использовать с 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 -- Давление на сенсорную панель с силой нажатия изменилось.
Генерирует таблицу, содержащую события нажатия и отпускания клавиш для генерации нажатия клавиши со заданными модификаторами.
Параметры
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.
gestureType - тип жеста в виде строки (см. примечания ниже).
[gestureValue] - необязательное значение для конкретного жеста (например, величина масштабирования или угол поворота в градусах).
Returns
новый объект hs.eventtap.event или nil, если gestureType недействителен.
Notes
Допустимые значения gestureType:
beginMagnify - Инициализирует событие масштабирования с необязательным значением масштабирования в виде числа (по умолчанию 0). Точная единица измерения неизвестна.
endMagnify - Инициализирует событие масштабирования с необязательным значением масштабирования в виде числа (по умолчанию 0.1). Точная единица измерения неизвестна.
beginRotate - Инициализирует событие поворота со значением поворота в градусах (например, значение 45 поворачивает влево на 45 градусов — по умолчанию 0).
endRotate - Инициализирует событие поворота со значением поворота в градусах (например, значение 45 поворачивает влево на 45 градусов — по умолчанию 45).
mods - Необязательная таблица, содержащая ноль или более из следующих элементов:
cmd
alt
shift
ctrl
fn
key - Строка, содержащая имя клавиши (см. hs.hotkey для получения дополнительной информации) или целое число, определяющее виртуальный код клавиши.
isdown - Булево значение, true, если событие является нажатием клавиши, false, если это отпускание клавиши.
Returns
Объект hs.eventtap.event
Notes
Оригинальная версия этого конструктора использовала сокращение, которое объединяло flagsChanged и keyUp/keyDown события в одно. Этот подход по-прежнему поддерживается для обратной совместимости и потому, что он действительно работает в большинстве случаев.
Согласно документации Apple, правильный способ выполнения нажатия клавиши с модификаторами — это использование нескольких событий клавиш; например, чтобы сгенерировать 'Å', необходимо выполнить следующие действия:
Сокращённый метод по-прежнему поддерживается, однако если вы столкнётесь с необычным поведением или вам необходимо сгенерировать события flagsChanged без соответствующих keyUp или keyDown, пожалуйста, ознакомьтесь со синтаксисом, показанным выше.
offsets - таблица, содержащая значения {горизонтальное, вертикальное} прокрутки. Положительные значения прокручивают вверх или влево, отрицательные значения — вниз или вправо.
mods - таблица, содержащая ноль или более из следующих элементов:
cmd
alt
shift
ctrl
fn
unit - необязательная строка, содержащая имя единицы измерения для прокрутки. Либо "line" (по умолчанию), либо "pixel"
button - Число от 0 до 31. Левая кнопка мыши — 0, правая — 1, средняя — 2. Значение остальных кнопок зависит от аппаратного обеспечения и их функциональности в приложении (обычно их нет на мыши и они не имеют эффекта в приложении).
Returns
Булево значение, true, если указанная кнопка мыши должна быть нажата событием.
Notes
Этот метод следует вызывать только для событий мыши.
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 вернёт диакритический знак).
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
CGEventData — таблица с ключами, содержащими данные CGEvent о событии.
NSEventData — таблица с ключами, содержащими данные NSEvent о событии.
Notes
Большая часть данных в CGEventData уже доступна через другие методы, но здесь представлена без какой-либо очистки или разбора.
Ожидается, что этот метод будет использоваться в основном для тестирования и расширения возможностей модуля hs.eventtap. Если вы обнаруживаете, что регулярно используете определённые данные из этого метода для общих или многократно используемых целей, рассмотрите возможность запросить добавление более целевого метода в hs.eventtap или hs.eventtap.event — это, вероятно, будет более эффективным и быстрым для распространенных задач, что необходимо для eventtap, чтобы минимизировать воздействие на отзывчивость системы.
Возвращает таблицу, содержащую дополнительную информацию о некоторых событиях, связанных с касанием.
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 - строка, определяющая эффект или назначение давления. Обратите внимание, что точное значение (с точки зрения тактильной обратной связи или выполняемого действия) каждой метки зависит от целевого приложения или элемента интерфейса. Допустимые значения для этого ключа:
Если жестикуляция относится к событию масштабирования:
magnification - число, определяющее изменение масштаба, которое следует добавить к текущему масштабированию элемента, чтобы получить новый коэффициент масштабирования.
Если жестикуляция относится к событию вращения:
rotation - число, определяющее в градусах изменение поворота, которое следует добавить, как указано в этом событии. Повороты по часовой стрелке обозначаются отрицательным числом, а против часовой стрелки — положительным.
Возвращает таблицу деталей, содержащую информацию о касаниях трекпада, связанного с этим событием, если событие имеет тип 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) на сенсорной панели.
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)localgestureType=e:getType(true)ifgestureType==hs.eventtap.types.directTouchthen-- they touched the touch barelseifgestureType==hs.eventtap.types.gesturethen-- they are touching the trackpad, but it's not for a gestureelseifgestureType==hs.eventtap.types.magnifythen-- they're preforming a magnify gesture-- etc -- see hs.eventtap.event.types for moreendifend
Получить или установить текущее положение указателя мыши, как определено для события.
Parameters
pointTable - необязательная таблица точек, определяющая координаты x и y положения указателя мыши для события
Returns
Если pointTable предоставлен, возвращает объект hs.eventtap.event; в противном случае возвращает таблицу точек, содержащую пары ключ-значение x и y, определяющие положение указателя мыши, как указано для этого события.
Notes
Использование или эффект этого метода не определены, если событие не является событием типа мыши.
Экспериментальный метод для получения или установки флагов модификаторов для события напрямую.
Parameters
flags - необязательное целое число, полученное логическим объединением значений из hs.eventtap.event.rawFlagMasks, указывающее клавиши модификаторов, которые должны быть установлены для этого события
Returns
Если flags предоставлен, возвращает объект hs.eventtap.event; в противном случае возвращает текущие установленные флаги как целое число
Notes
Этот метод является экспериментальным и может подвергнуться изменениям или даже удалению в будущем
Таблица, содержащая модификаторы клавиатуры, которые должны быть отправлены вместе с событием - т.е. ноль или более из следующих клавиш, каждая с значением true:
Свойства представляют собой значения CGEventField, как документировано на https://developer.apple.com/library/mac/documentation/Carbon/Reference/QuartzEventServicesRef/index.html#//apple_ref/c/tdef/CGEventField
Устанавливает строку Юникод в качестве выходных данных события
Parameters
string - Строка, содержащая символы Юникод, которые будут применены к событию
Returns
Объект hs.eventtap.event
Notes
Вызов этого метода сбросит любые флаги, ранее установленные для события (потому что они не имеют смысла, и вы не должны пытаться устанавливать флаги снова)
Вероятно, это будет работать только с короткими строками Юникод, которые разрешаются в один символ
Возвращает специальный ключ и его состояние, если событие является событием 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.
absolutetime - необязательное целое число, задающее отметку времени события.
Returns
если absolutetime указан, возвращает объект hs.eventtap.event; в противном случае возвращает текущую отметку времени события.
Notes
Сгенерированные события по умолчанию имеют отметку времени 0.
Отметка времени, если указана, выражается как целое число, представляющее количество наносекунд, прошедших с момента последней загрузки системы. См. hs.timer.absoluteTime.
Это поле, похоже, только информационное и не требуется при создании собственных событий с помощью этого модуля.