Arhn - архитектура программирования

Воспроизведение поведения курсора из инструмента для создания скриншотов macOS.

Отказ от ответственности; едва новичок, когда дело доходит до разработки Swift/macOS.


Инструмент для создания снимков экрана Ctrl+Shift+4 в macOS имеет сопровождающее изменение курсора, которое я искал способ воспроизвести.

В исходном состоянии запуска это перекрестие с координатами пикселей, а переключение на захват окна нажатием пробела меняет курсор на камеру.

Независимо от того, переходите ли вы к другим приложениям, курсор остается измененным глобально.

Я попытался воспроизвести это поведение, создав прозрачный полноэкранный NSWindow с уровнем .floating и изменив курсор для представления содержимого.

Это вроде как работает... Но имеет некоторые раздражающие причуды.

Во-первых, кажется, что непрозрачность вида не может быть строгим нулем, а хотя бы какой-то дробью >= 0,01. Я не нашел упоминания об этом в документации NSView, но это упоминается для UIView здесь. Для встроенного инструмента для скриншотов, похоже, нет наложения альфа-канала 0,01.

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

Я использую совершенно неправильный подход, или мне просто нужно покрутить некоторые кнопки и циферблаты, чтобы это сработало?

Любые указатели очень ценятся!


  • Я не уверен, что это будет возможно. Оконный сервер может просто делать то, чего не могут пользовательские приложения. В принципе, каждое приложение управляет формой курсора, когда это приложение активно. Представьте себе хаос, который возник бы, если бы любое приложение могло изменить курсор для вашего приложения. Так что нет, я не думаю, что пользовательское приложение может заставить курсор измениться глобально. 23.04.2019
  • Я не думаю, что это поможет вам, но кто знает: вам не нужно устанавливать alpha вида/окна почти на 0,0. Просто сделайте фон окна и содержимое окна прозрачным (NSColor.clearColor). Не забудьте установить/вернуть NO из isOpaque. 23.04.2019
  • Mareks-MacBook-Pro-2: Downloads xhruso00$ где находится скриншот /usr/sbin/screencapture => Используйте Хоппер (тропа) для раскрытия кода. Если вы можете заполучить версию 10.10, то разборку кода на Objective-C очень легко прочитать, чем разборку кода на Swift imgur.com /a/yfyFFyS 24.04.2019
  • @JamesBucanek Я могу понять, почему что-то подобное может быть ограничено, я просто не встречал никакой документации, что это явно невозможно. Возможно, мне нужно изучить API доступности и расширенные возможности. 25.04.2019
  • Этот грязный хак поможет вам сохранить форму курсора, несмотря на то, что ваше окно теряет фокус. 26.04.2019

Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..