Nie wychodź z pełnego ekranu po naciśnięciu klawisza Escape w aplikacjach takich jak Safari na Lionie


45

W OS X Lion naciśnięcie ESCklawisza powoduje wyjście z trybu pełnoekranowego. Niestety, a zwłaszcza podczas korzystania z Safari, ESCjest używany do innych funkcji, takich jak obsługa zdarzeń klawiszy JavaScript. Nie chcę, aby Lion wychodził z trybu pełnoekranowego po naciśnięciu klawisza Escape, ale nie mogę znaleźć miejsca, aby wyłączyć tę funkcję.

Znam już skrót klawiaturowy do wejścia / wyjścia z trybu pełnoekranowego ( Cmd- Ctrl- F). Chcę wyłączyć ESCskrót. Byłem w Google, ale nie mogę znaleźć odpowiedzi.


2
Naciśnięcie Escw innym miejscu (np. Przerwanie wczytywania strony) nie powoduje wyjścia z pełnego ekranu.
Daniel Beck

@Daniel: Ale to niekoniecznie dotyczy innych funkcji. Czy to rzeczywiście szeroko rozpowszechniony problem z OS X Lion? Dlaczego tak mało osób doświadcza tego?
Tamara Wijsman

1
@Tom Takie jak? Użytkownik nie mówi ani ty. Mogę sobie wyobrazić, że wszystkie te funkcje zastępują skrót do trybu pełnoekranowego, gdy są używane np. Przez zebranie zdarzenia, ale bez większej liczby przykładów nie jestem pewien.
Daniel Beck

10
Przypadkowo naciśnij Enter. Istnieje wiele stron internetowych, na których ESC służy do zamykania okna modalnego, na przykład: ericmmartin.com/projects/simplemodal-demos Kliknij Demo na stronie, aby wyświetlić okno modalne. Naciśnij ESC, aby zamknąć modal. Safari ma świadomość, że istnieje okno modalne i nie wychodzi z pełnego ekranu. Naciśnij ESC ponownie, a Safari wyjdzie z trybu pełnoekranowego. Często naciskam ESC kilka razy, aby upewnić się, że coś się zamknie. Nie chcę, aby Safari wychodziło z trybu pełnoekranowego, kiedy to się stanie. Istnieje już klawisz, aby wyjść z trybu pełnoekranowego. ESC nie powinien być używany.
Fadi

1
@dpk Poproś o link do strony demonstracyjnej. Ponieważ żaden z przytoczonych przykładów nie ma tego problemu podczas ich testowania, nie wierzę w to bez podjęcia kroków w celu odtworzenia problemu. W rzeczywistości powyższy przykład Fadi jest sprzeczny z twoim komentarzem.
Daniel Beck

Odpowiedzi:


6

W przypadku przeglądarek internetowych, a zwłaszcza witryn, których zachowanie umożliwia użycie Escapeklucza lub wymaga go , nie zapobiegając jednocześnie zamykaniu pełnego ekranu (np. Witryny Stack Exchange ), można użyć następującego skryptu użytkownika:

// ==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();
}

Aby uruchomić to w przeglądarkach, użyj dowolnego silnika skryptów użytkownika dla przeglądarki.

  • W przeglądarce Safari 5 można użyć rozszerzenia Safari NinjaKit (na GitHub ). Tego używam.
  • W przypadku Chrome możesz użyć jego wariantu NinjaKit .
  • W każdym innym Safari na OS X możesz użyć wtyczki SIMBL GreaseKit . Nie jestem jednak pewien, jak aktualne.

dla wygody przesłałem to do skryptów użytkowników: userscripts.org/scripts/review/178642
coffeejunk 26.09.2013

Czy masz jakieś doświadczenia związane z instalacją tego w Safari dla Mavericks?
Holene

2
Tak, to nie działa dla mnie, jestem w Yosemite Beta 5 z Safari 8.0 (10600.1.25) w momencie pisania i używam NinjaKit w Safari jako silnika skryptów użytkownika. Klawisz Escape ciągle pęka na pełnym ekranie, a dla mnie dzieje się to, gdy jestem na pasku adresu i naciskam klawisz Esc, gdy jest w nim. (ma kilka przydatnych funkcji podczas edycji tekstu ...) Zakładam, że GreaseKit już nie działa, biorąc pod uwagę, że jest datowany na 2009 rok, a szybkie google wydaje się wskazywać, że już nie działa. Jakieś pomysły? Tak frustrujące, nic dziwnego, że Chrome jest główną przeglądarką, nawet w systemie operacyjnym Apple ...

@foregon Spodziewałbym się, że obsługa zdarzeń strony nie będzie miała absolutnie żadnego efektu, gdy będziesz w pasku adresu.
Daniel Beck

współpracuje z tampermonkey, edytował skrypt / odpowiedź, aby obsługiwać również https: //.
Toni,

3

Większość sytuacji rodzimych w systemie OS X akceptuje oba te elementy Escapei Cmd-.przerywa je, np. Okna dialogowe plików, ładowanie Safari, przeciąganie elementów itp.

Szczególnie nieobecny na tej liście opuszcza oczywiście tryb pełnoekranowy .


Możesz więc nauczyć się naciskać Cmd-.zamiast Escapecałkowicie unikać tej sytuacji. Czy można nauczyć komputer zrobi to za ciebie: AN przynajmniej rozwiązanie nieco sane jest użycie np Butler „s naciśnięcia klawiszy przedmiot do map Escapedo Cmd-.:

  • Otwórz stronę konfiguracji Butlera
  • Wybierz dowolny pojemnik, np. Ukryty , kliknij + »Inteligentny element» Klawisze
  • Na karcie Klawisze naciśnij, Cmd-.aby użyć tego jako wynikowego klawisza podczas aktywacji tego elementu
  • Na karcie Wyzwalacze wybierz pole wprowadzania Skrót klawiszowy i naciśnij Escape. Zignoruj ​​ostrzeżenie, które zasadniczo mówi, że jesteś szalony.
  • Pamiętaj, aby dodać np. Terminal do listy wyjątków - całkowicie ignoruje Escapeopuszczanie pełnego ekranu, ale naciśnięcie Ctrl-.powoduje tłumaczenie Ctrl-C!

W niektórych sytuacjach rzeczy będą się źle zachowywać. Ponowne przypisanie klawisza do tego, co zwykle jest równoważnym skrótem klawiaturowym, to rozwiązanie młota. Na przykład Quick Look nie obsługuje Cmd-.(i dlatego jest mapowany Escapedo zamykania podglądów plików); zmiana nazwy plików w Finderze nie może być już przerwana przy użyciu Escape, ani nie można usunąć zaznaczeń, np. w Finderze.

W ograniczonych testach nie znalazłem sytuacji, w której naciskanie Cmd-.faktycznie prowadzi do niepożądanych działań, ale należy pamiętać, że prawdopodobnie one również istnieją.


Oczywiście możesz całkowicie zignorować wszystkie naciśnięcia klawisza Escape, ale spowoduje to utratę dużej części funkcjonalności ...
Daniel Beck

⌘ +. wychodzi z trybu pełnoekranowego dla mnie w Operze, więc nie ma mowy :(
Andy E

2

Dostępne opcje obejmują:

  1. Ustaw alternatywne skróty dla innych funkcji, ponieważ ESCsą zarezerwowane przez system operacyjny i przeglądarkę.

  2. Dostosuj kod maszynowy źródła / asemblera, aby ponownie powiązać ESCklucz systemu operacyjnego i przeglądarki.

  3. Zgłoś prośbę o błąd / funkcję do dewelopera aplikacji (tj. Arkuszy kalkulacyjnych Google), aby wykorzystać zdarzenie ESC zamiast przepuścić go.

  4. Zgłoś błąd w Apple, ponieważ aplikacje były tutaj jako pierwsze, a Apple ponownie zastosował klucz bez przyczyny.


3
# 1 Mogę się wycofać. # 2 śmieje się niemal z przymrużeniem oka.
peelman

Twój przebieg może się różnić.
Tamara Wijsman,

Użyte funkcje Escapezwykle nie są dostępne z paska menu i Escapenie wyzwalają elementów menu, co wynika z brakującego „flashowania” podświetlającego element paska menu zawierający element wyzwalany.
Daniel Beck

# 4 Zgłoś błąd w Apple, ponieważ aplikacje były tutaj pierwsze, a Apple ponownie zastosował klucz bez przyczyny.
dpk

2

Nie znalazłem odpowiedzi na MacOs Sierra i wyższe. W ten sposób rozwiązałem ten problem.

Jak już sugerowano, zmieniłem mapę ESC na ⌥ + ESC. Wykonuje zadanie, a nawet niektóre inne funkcje przypisane do klawisza działają. W niektórych witrynach możesz wyjść z filmów pełnoekranowych, ale nie spowoduje to przerwania ładowania strony.

Najpierw musisz zainstalować elementy Karabiner, aby móc mapować klucze

  1. Zainstaluj napar /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  2. Zainstaluj beczkę brew tap caskroom/cask
  3. Zainstaluj elementy karabińczyka brew cask install karabiner-elements

Specjalnie dla tego problemu stworzyłem niestandardową „Złożoną modyfikację”. Aby zainstalować tę modyfikację, musisz:

  1. Otwórz karabińczyk i przejdź do zakładki „Złożone modyfikacje”
  2. Kliknij przycisk „Dodaj regułę”, a następnie „Importuj więcej reguł z Internetu”
  3. Importuj modyfikację „Nie zamykaj pełnego ekranu po naciśnięciu ESC w Safari”

1

Żeby jeszcze bardziej rozwinąć opis.

ESC służy do anulowania przeciągania, esc służy do anulowania okna dialogowego, esc służy do przeciągania w celu anulowania przenoszenia / kopiowania, esc jest używany w terminalu VI do anulowania polecenia edycji

Istnieje więc wiele zastosowań. Dziwne jest to, że Apple ma ten tryb anulowania pełnego ekranu, gdy jest to możliwe przez ctrl-cmd-F i ikonę w prawym górnym rogu.

Wydaje się, że jest to aplikacja dla poszczególnych aplikacji Poczta i Safari, a inne elementy iLife zostaną zamknięte na pełnym ekranie. iTunes pozostaje na pełnym ekranie.

Reeder ignoruje esc dla celów kontroli pełnego okna i robi inne odpowiednie rzeczy dla programu. Evernote nie ma nawet cmd-F lub ctrl-cmd-F do sterowania oknem, jest to ikona i klawisz esc.

Wydaje się, że nie można samemu przypisać esc do jakiejś nieszkodliwej akcji nonsensownej w panelu sterowania klawiatury.


1
W Safari mapowanie klawisza Escape na łagodną funkcję nie wydaje się rozwiązaniem. Niezależnie od akcji, nadal wypada z trybu pełnoekranowego.
peelman

I ponownie, naciśnięcie, Escapeaby anulować okna dialogowe , nie powoduje wyjścia z pełnego ekranu .
Daniel Beck

Naciśnięcie Escapew terminalu nie powoduje wyjścia z pełnego ekranu .
Daniel Beck

Używanie Escapedo anulowania przeciągania nie powoduje wyjścia z pełnego ekranu . Czy próbowałeś nawet przed opublikowaniem tych roszczeń?
Daniel Beck

Użycie Escapew aplikacji Reeder np. Powrotu ze strony internetowej artykułu do pozycji RSS nie powoduje wyjścia z pełnego ekranu . Jeśli Escapenie jest używany do takiej akcji, wychodzi z pełnego ekranu. Jak we WSZYSTKICH INNYCH PROGRAMACH .
Daniel Beck

1

Wygląda na to, że używasz JQuery. W tym wypadku:

Nasłuchuj zdarzeń keydown (naciśnięcie i naciśnięcie klawisza nie będzie działać) w dokumencie za pomocą keyCode 27 , a gdy zadziała zdarzenie, wywołaj e.preventDefault () .

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

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

});


1

Spróbuj OptionEsc, co zadziałało dla mnie.


1
Nie wyzwala też działań związanych z klawiszem Escape, np. Przerywa ładowanie strony Safari.
Daniel Beck

1

Jest to to samo, co odpowiedź @ aditya-srinivasan na Operę

<?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>

Zobacz @ aditya-srinivasan odpowiedzi na temat pobierania https://pqrs.org/osx/karabiner/index.html.en


0

Zdecydowałem się na escrouting do alt/option+ esc. W większości przypadków pozwala mi to wyjść z filmów z YouTube'a, a jeśli masz konto Squarespace, możesz się zalogować bez wychodzenia z pełnego ekranu.

  • Pobierz i zainstaluj Karabiner .
  • Przejdź do najbardziej prawej karty „Różne i odinstaluj”.
  • Kliknij przycisk z napisem „Otwórz plik private.xml”.
  • Pobierz plik private.xml stąd
  • Zastąp oryginalny plik „private.xml” w Finderze pobranym plikiem. Voila!


0

Po desperackim poszukiwaniu rozwiązania wysyłam Safari na osobny wirtualny pulpit z kontrolą misji. Zmniejsza to problem ESC i jest zdecydowanie najlepszym przybliżeniem do pełnoekranowego okna Safari.

Dodatkowe miejsce, jeśli ukryjesz Dock.


0

ŁATWO, znalazłem to! KeyboardMaestro z 2 akcjami

Po naciśnięciu „ ESC” Symuluj naciśnięcie (zamiast tego): - „ CMD+”. - NASTĘPNIE także „ ALT+ ESC

Potrzebujesz obu, ponieważ niektóre aplikacje reagują tylko na jedno lub drugie zamówienie (czasami na żadne, a potem nic niemożliwego) -> w ten sposób większość aplikacji zrobi „ ESC” w ich kontekście, ale nigdy nie wyjdziesz z pełnego tryb ekranowy

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.