Не выходите из полноэкранного режима при нажатии клавиши escape в приложениях, таких как Safari на Lion

45

В OS X Lion нажатие ESCклавиши выходит из полноэкранного режима. К сожалению, и особенно при использовании Safari, ESCиспользуется для других функций, таких как обработка событий нажатия клавиш Javascript. Я не хочу, чтобы Lion выходил из полноэкранного режима при нажатии клавиши escape, но я не могу найти место, чтобы отключить эту функцию.

Я уже знаю сочетание клавиш для входа / выхода из полноэкранного режима ( Cmd- Ctrl- F). Я хочу отключить ESCярлык. Я гуглил, но не могу найти ответы.

Фади
источник
2
Нажатие, Escкогда оно имеет другой эффект (например, прерывание загрузки страницы), не выходит из полноэкранного режима.
Даниэль Бек
@ Даниель: Но это не обязательно относится к любым другим функциям. Это на самом деле широко распространенная проблема OS X Lion? Почему так мало людей, которые на самом деле испытывают это?
Тамара Вийсман
1
@ Том как? Пользователь не говорит, и вы тоже. Я мог бы представить, что все эти функции переопределяют ярлык в полноэкранном режиме, когда он используется, например, потребляя событие, но без большего количества примеров я не могу сказать наверняка.
Даниэль Бек
10
Случайно нажмите Enter. Есть много веб-страниц, где ESC используется для закрытия модального окна, например: ericmmartin.com/projects/simplemodal-demos Нажмите Demo на странице, чтобы открыть модальное окно. Нажмите ESC, чтобы закрыть модал. Safari знает, что есть модальное окно, и не выходит из полноэкранного режима. Нажмите ESC еще раз, и Safari выйдет из полноэкранного режима. Часто я нажимаю ESC несколько раз, чтобы что-то закрылось. Я не хочу, чтобы Safari выходил из полноэкранного режима, когда это происходит. Уже есть ключевая команда для выхода из полноэкранного режима. ESC не должен использоваться.
Фади
1
@dpk Ссылка на демонстрационную веб-страницу, пожалуйста. Поскольку ни один из упомянутых примеров пока не имеет этой проблемы, когда я их тестировал, я не верю, что без шагов, чтобы воспроизвести проблему. На самом деле, приведенный выше пример Фади противоречит вашему комментарию.
Даниэль Бек

Ответы:

6

Для веб-браузеров и, в частности, для использования сайтов с поведением, которое включает или требует использования Escapeключа, не препятствуя закрытию полноэкранного режима (например, сайты Stack Exchange ), вы можете использовать следующий сценарий пользователя:

// ==UserScript==
// @name           Keep Full Screen
// @namespace     http://superuser.com/q/315949
// @description    Prevents Escape key from leaving full screen.
// @include      http://*
// ==/UserScript==
document.onkeydown = function (evt) {
    if (evt.keyCode == 27) evt.preventDefault();
}

Чтобы запустить это в браузерах, используйте любой движок пользовательских скриптов для вашего браузера.

  • Для Safari 5 вы можете использовать расширение NinjaKit для Safari (на GitHub ). Это то, что я использую.
  • Для Chrome вы можете использовать его вариант NinjaKit .
  • Для любого другого Safari в OS X вы можете использовать плагин SIMBL GreaseKit . Не уверен, насколько он актуален.
Даниэль Бек
источник
для удобства я загрузил это в userscripts: userscripts.org/scripts/review/178642
coffeejunk
Есть ли опыт установки этого на Safari для Mavericks?
Холин
2
Да, это не работает для меня, я нахожусь в Yosemite Beta 5 с Safari 8.0 (10600.1.25) на момент написания и использую NinjaKit в Safari в качестве движка пользовательских скриптов. Клавиша Escape продолжает выходить из полноэкранного режима, и для меня это происходит, когда я нахожусь в адресной строке и нажимаю Esc, находясь в ней. (в нем есть несколько полезных функций для редактирования текста ...) Я предполагаю, что GreaseKit больше не работает, поскольку он датирован 2009 годом, и быстрый Google, похоже, указывает, что он больше не работает. Есть идеи? Неудивительно, что Chrome - основной браузер, даже в собственной операционной системе Apple ...
@foregon Я ожидаю, что обработка событий страницы не будет иметь абсолютно никакого эффекта, пока вы находитесь в адресной строке.
Даниэль Бек
работает с Tampermonkey, отредактировал скрипт / ответ для поддержки https: //.
Тони
3

Большинство ситуаций, родных для OS X, допускают как Escapeи Cmd-.прерывание, например, диалоги файлов, загрузку Safari, перетаскивание элементов вокруг и т. Д.

Примечательно, что в этом списке отсутствует, конечно, выход из полноэкранного режима .


Таким образом, вы можете просто научиться нажимать Cmd-.вместо того, Escapeчтобы вообще избегать этой ситуации. Или вы можете научить свой компьютер делать это за вас: по крайней мере, несколько вменяемое решение состоит в том, чтобы использовать, например, пункт « Нажатие клавиш Батлера » для сопоставления с :EscapeCmd-.

  • Откройте страницу конфигурации Батлера
  • Выберите любой контейнер, например, Скрытый , нажмите + »Смарт-элемент» Клавиши
  • На вкладке « Ключи » нажмите, Cmd-.чтобы использовать его в качестве результирующего нажатия клавиши при активации этого элемента.
  • На вкладке « Триггеры » выберите поле ввода « Горячая клавиша» и нажмите Escape. Не обращайте внимания на предупреждение, в котором говорится, что вы безумны.
  • Не забудьте добавить, например, терминал в список исключений - он полностью игнорирует Escapeвыход из полноэкранного режима, но нажатие Ctrl-.переводит в Ctrl-C!

В некоторых ситуациях все будет плохо себя вести. Переназначение клавиши на то, что обычно является эквивалентным сочетанием клавиш, является решением кувалды. Беглый взгляд , например, не обрабатывает Cmd-.(и поэтому переназначает Escapeдля закрытия предварительного просмотра файла); переименование файлов в Finder больше не может быть прервано с помощью Escape, а выбор, например, в Finder, не может быть очищен.

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

Даниэль Бек
источник
Конечно, вы могли бы полностью игнорировать все нажатия клавиш Escape, как это, но это потеряет большую часть функциональности ...
Даниэль Бек
⌘ +. В Опере у меня выход из полноэкранного режима, так что это не
Энди E
2

Ваши возможные варианты включают в себя:

  1. Установите альтернативные сочетания клавиш для других функций, поскольку они ESCзарезервированы ОС и браузером.

  2. Настройте исходный / ассемблерный машинный код для повторного связывания ESCключа ОС и браузера.

  3. Подайте запрос об ошибке / функции против разработчика приложения (т.е. электронных таблиц Google), чтобы использовать событие ESC вместо того, чтобы пропустить его.

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

Тамара Вийсман
источник
3
# 1 Я могу отстать № 2 почти насмешливо до смеха.
Пилман
Ну, ваш пробег может отличаться.
Тамара Вийсман
Использование функций Escapeобычно недоступно из строки меню и Escapeне вызывает элементы меню, что очевидно из отсутствующей «вспышки», выделяющей элемент строки меню, содержащий запущенный элемент.
Даниэль Бек
# 4 Отправьте сообщение об ошибке в Apple, потому что приложения были здесь первыми, и Apple изменила ключ без причины.
дпк
2

Я не нашел ответа для macOs Sierra и выше. Вот так я решил эту проблему.

Как уже было предложено, я переназначил ESC на ⌥ + ESC. Он выполняет работу и даже некоторые другие функции, назначенные клавише. Вы сможете выйти из полноэкранного видео на некоторых сайтах, но это не прервет загрузку страницы.

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

  1. Установить варку /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  2. Установить бочку brew tap caskroom/cask
  3. Установить карабинер-элементы brew cask install karabiner-elements

Я специально создал «Сложную модификацию» специально для этой проблемы. Для установки этой модификации вам необходимо:

  1. Откройте карабин-элементы и перейдите на вкладку «Сложные модификации»
  2. Нажмите кнопку «Добавить правило», затем «Импортировать дополнительные правила из Интернета».
  3. Импортируйте модификацию «Не выходить из полноэкранного режима при нажатии ESC в Safari»
S3RK
источник
1

Просто, чтобы конкретизировать описание немного больше.

ESC используется для отмены перетаскивания, esc используется для отмены диалогового окна, esc используется во время перетаскивания для отмены перемещения / копирования, esc используется в терминале в VI для отмены команды редактирования

Итак, есть множество применений. Странно странно, что у Apple есть этот полноэкранный режим отмены, когда это возможно с помощью ctrl-cmd-F и правого верхнего значка.

Похоже, что это происходит в зависимости от приложения Mail, Safari и другие элементы iLife выходят из полноэкранного режима. iTunes остается на весь экран.

Ридер игнорирует esc с целью полного управления окнами и выполняет другие соответствующие действия для программы. Evernote даже не имеет cmd-F или ctrl-cmd-F для управления окном, его значок и клавишу esc.

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

AJACs
источник
1
В Safari сопоставление клавиши Escape с доброкачественной функцией не кажется решением. Независимо от действия, оно все равно выпадет из полноэкранного режима.
Пилман
И снова, нажатие Escapeдля отмены диалогов не выходит из полноэкранного режима .
Даниэль Бек
Нажатие Escapeв терминале не приводит к выходу из полноэкранного режима .
Даниэль Бек
Использование Escapeдля отмены перетаскивания не выходит из полноэкранного режима . Вы даже пробовали это до публикации этих утверждений?
Даниэль Бек
Использование Escapeв Reeder, например, для возврата с веб-страницы статьи в элемент RSS не приводит к выходу из полноэкранного режима . Если Escapeдля такого действия не используется, он выходит из полноэкранного режима. Как и во всех других программах .
Даниэль Бек
1

Похоже, вы используете JQuery. В этом случае:

Прислушайтесь KeyDown событий (нажатие клавиши и KeyUp не будет работать) на документе с KEYCODE 27 , а когда срабатывает событие называют e.preventDefault () .

$(document).bind('keydown', function(e) {

    if (e.keyCode === 27) { // Escape key
        e.preventDefault();
        // Other code goes here    
    }

});
Эван Шарп
источник
Похожий запрос на MSO , работает без jQuery.
Даниэль Бек
1

Попробуйте OptionEsc, что сработало для меня.

Майкл
источник
1
Он также не запускает действия, связанные с клавишей Escape, например, прерывает загрузку веб-страницы Safari.
Даниэль Бек
1

Это то же самое, что и ответ @ aditya-srinivasan, нацеленный на Opera.

<?xml version="1.0"?>
<root>
    <item>
  <!-- ============================================================ -->
  <appdef>
    <appname>OPERA</appname>
    <equal>com.operasoftware.Opera</equal>
  </appdef>

    <name>Escape to Option + Escape on Opera</name>
    <identifier>private.Opera_escape</identifier> 
    <only>OPERA</only>
    <autogen>__KeyToKey__ KeyCode::ESCAPE, KeyCode::ESCAPE, ModifierFlag::OPTION_L</autogen>
  </item>
  <!-- ============================================================ -->
</root>

Смотрите @ aditya-srinivasan ответы на загрузку https://pqrs.org/osx/karabiner/index.html.en

Ctrl-Alt-Дилип
источник
0

Я решил escнаправить в alt/option+ esc. По большей части это позволяет мне выходить из видео YouTube, а если у вас есть учетная запись Squarespace, она позволяет вам входить в систему без выхода из полноэкранного режима.

  • Скачайте и установите Карабинер .
  • Перейдите на самую правую вкладку «Разное и удаление».
  • Нажмите на кнопку с надписью «Открыть private.xml».
  • Загрузите файл private.xml отсюда
  • Замените оригинальный файл "private.xml" в Finder на загруженный файл. Вуаля!
Адитья Шринивасан
источник
0

Используйте BetterTouchTool или KeyboardMaestro или что-то похожее на переназначение Escна ⌥ + Esc.

user2664470
источник
0

После некоторого отчаянного поиска решения я отправляю Safari на отдельный виртуальный рабочий стол с контролем миссии. Это смягчает проблему ESC и является наилучшим приближением к полноэкранному окну Safari.

Дополнительное пространство, если вы прячете док.

Fish Monitor
источник
0

ЛЕГКО, нашел это! Клавиатура Маэстро с 2 действиями

При нажатии « ESC» Имитировать нажатие (вместо): - « CMD+». - ТОГДА также " ALT+ ESC"

Вам нужно и то и другое, потому что некоторые приложения реагируют только на один или другой заказ (иногда ни на один, тогда ничего ESCне получается ) -> таким образом, большинство приложений будут работать как " " в своем контексте, но вы никогда не выйдете из полного Режим экрана

user2755736
источник