Я хочу сделать скриншот окна на Mac.
В настоящее время я использую shift+ cmd+ 4, затем spaceщелкаю мышью.
Процесс очень неудобный, вы должны делать это в таком порядке, иначе вам придется повторить это снова..
Мне нужно простое сочетание клавиш, чтобы делать то, что shift+ cmd+ 3.
Я хочу использовать как простой ярлык для создания снимка экрана окна.
Является ли это возможным?
Вот мое решение, которое я назвал Window-Snapshot , основанное на очень простом AppleScript , либо сохраненном как приложение из редактора сценариев , либо используемом как часть службы Automator с назначенным сочетанием клавиш . Хотя в качестве службы он использует стороннюю утилиту, используемую в приложении Window-Snapshot AppleScript с одним * щелчком мыши, подробно описанным ниже.
Это может быть либо решение с двумя щелчками мыши ( по умолчанию ), либо решение с одним* щелчком мыши .
В качестве решения AppleScript с двумя щелчками мыши он сохраняется как приложение, я сохранил его как Window-Snapshot в Applications , а затем поместил его в Dock , перетащив пакет приложений в Dock , где я хотел, чтобы это было.
delay
команда в качестве таймера, позволяющая позиционировать указатель мыши до истечения времени ожидания, и автоматически делает снимок, используемый в решении с одним* щелчком мыши . Само по себе решение с двумя щелчками мыши является самым простым из представленных здесь решений.В качестве решения одним* щелчком мыши AppleScript сохраняется как приложение, а сторонняя утилита CLICLICK добавляется в комплект приложения, а соответствующий код раскомментирован в сценарии .
delay
команду, чтобы дать время на позиционирование указателя мыши в любом месте над целевым окном, которое необходимо захватить, и не имеет значения, является ли окно самым верхним окном, когда вторая delay
команда тайм-аут в зависимости от окна, над которым находится мышь, которое захвачено в моментальном снимке. Захват можно прервать, нажав клавишу до истечения времени ожиданияesc второй delay
команды .Как служба Automator, она создается с использованием кода ApplesScript , немного изменена, и для службы назначается сочетание клавиш в: «Системные настройки» > «Сочетания клавиш» > «Службы».
tell application "System Events"
(* Note: If used as the default two mouse-click solution then use as is, nothing else needs to be done. *)
keystroke "$" using {command down}
delay 0.25
keystroke space
(* Note: If using as the one mouse-click solution or Automator Service, uncomment the
two lines below having double-dashes in front by removing the double-dashes.
Also when using as the one mouse-click solution, set a value on the 'delay' command
below to an appropriate value which allows you the time necessary to move the mouse
over the target window before that delay command times out and the snapshot is taken.
The default of '1.5' is in this use case is a somewhat arbitrary value, set it to suite.
Note: When using as an Automator Service set the 'delay' command below to '0.25',
the same as in the first 'delay' command. *)
-- delay 1.5
-- do shell script "/Applications/Window-Snapshot.app/Contents/Resources/cliclick c:."
end tell
0.25
второе значение , эта короткая задержка необходима, поскольку между двумя командами должна быть задержка. При использовании решения с одним* щелчком мыши вторая команда должна быть более реалистичной. Установите значение, которое позволяет вам перемещать мышь по целевому окну до истечения срока действия команды задержки, например и т. д.delay 0.25
delay
keystroke
delay
1.5
Откройте редактор сценариев (или редактор AppleScript, если применимо).
Скопируйте и вставьте код AppleScript Window-Snapshot сверху в окно документа Untitled , а затем нажмите Compile .
Нажмите ⌘S, чтобы сохранить и установить формат файла: для приложения , сохраняя его в папке «Приложения» .
Дайте пакету приложений Window-Snapshot собственный значок. Я использовал значок камеры, найденный в Find Icons , и использовал его, в частности , нажав кнопку «Загрузить ICNS». Я открыл загруженный файл «scanners_cameras.icns» в режиме предварительного просмотра , скопировал его, а затем вставил на лист «Информация» в Window-Snapshot.app , сначала выбрав маленький значок в верхнем левом углу листа «Информация об Window-Snapshot» . (В приложениях выберите Window-Snapshot.app и нажмите: ⌘I)
Теперь перетащите пакет приложений Window-Snapshot из папки «Приложения» в Dock , где вы хотите, чтобы он был.
Теперь он готов к использованию, щелкните плитку док-станции Window-Snapshot , а затем щелкните целевое окно, которое нужно захватить.
Screen Shot yyyy-mm-dd at hh.mm.ss AM|PM
или, если значение по умолчанию было изменено, оно будет таким, какое оно установлено в настоящее время.Настройка Window-Snapshot.app для решения одним* щелчком мыши с помощью CLICLICK
Загрузите CLICLICK , смонтируйте файл cliclick.dmg и поместите копию исполняемого файла cliclick
в пакет приложения Window-Snapshot.app по пути, указанному в сценарии. Удерживая нажатой клавишу Ctrl, щелкните приложение Window-Snapshot, выбрав «Показать содержимое пакета» , и перейдите в папку «Ресурсы» , поместив туда копию cliclick
исполняемого файла.
Раскомментируйте две строки под (* Note: If using as the one mouse-click solution or Automator Service,
комментариями, удалив двойные тире --
перед кодом.
Сохраните изменения, внесенные в AppleScript .
Теперь его можно использовать в качестве решения одним* щелчком мыши .
Откройте Automator , выбрав Service .
Установить , что выбранная служба не принимает никаких входных данных , оставляя их в любом приложении как есть. Добавьте « Выполнить AppleScript» , а затем скопируйте и вставьте приведенный выше код AppleScript Window-Snapshot в окно «Выполнить AppleScript» , перезаписав код по умолчанию.
Раскомментируйте две строки под (* Note: If using as the one mouse-click solution or Automator Service,
комментариями, удалив двойные тире --
перед кодом, и задайте для второй delay
команды значение 0.25
.
Сохраните службу , ⌘Sназвав ее Window-Snapshot .
Откройте «Системные настройки» и перейдите в «Клавиатура»> «Сочетания клавиш»> «Службы» и прокрутите вниз, затем в разделе « Общие» вы увидите «Снимок окна» и выберите его. Теперь нажмите добавить ярлык и нажмите shift- command- 5или: ⇧⌘5
Теперь он готов к использованию в качестве службы с помощью сочетания клавиш : ⇧⌘5.
cliclick
исполняемому файлу, где бы вы его ни установили. Вы можете попробовать поместить его в пакет услуг, например /Users/$USER/Library/Services/Window-Snapshot.workflow/Contents
, хотя я не пробовал этого, поскольку мне нравится использовать его как приложение AppleScript , используя его как решение с двумя щелчками мыши , так и службу Automator с назначенным сочетанием клавиш .В заключение я хотел бы сказать, что этот очень простой AppleScript, безусловно, может быть разъяснен для добавления дополнительных функций как в качестве приложения, так и в качестве службы, то есть добавления кода для сохранения моментального снимка с другими именами и местоположениями и т. д., однако я оставьте это вам, чтобы изменить, если вы того пожелаете.
Одним из подходов было бы использование screencapture
команды:
screencapture -w window.png
который захватит первое окно, которое вы щелкнете после запуска команды, и сохраните его как window.png
.
Есть несколько способов привязать эту команду к сочетанию клавиш, например, создав службу Automator, которая запускает ее как сценарий оболочки , или используя сторонний лаунчер, такой как Alfred . В любом случае, вы, вероятно, также захотите добавить немного ума в процесс, который каждый раз выбирал другое имя файла, чтобы вы не перезаписывали свой предыдущий снимок экрана.
Я не знаю простого способа всегда просто захватывать самое переднее окно ... возможно, гуру AppleScript может помочь с этим?
Павел
пользователь3439894
checkModifierKeys
и делает то, что следует из названия, и я закодировал его так, что если я нажимаю клавишу Shift, когда я нажимаю плитку док-станции, он переключает ключdisable-shadow
в файле .plist снимка экрана, поэтому я могу легко делать снимки без тени. . Оба исполняемых файла я создал из исходного кода, предоставленного авторами, хотя они оба предоставляют двоичные файлы. Если вам интересно, дайте мне знать, я обновлю ответ.