อย่าออกจากเต็มหน้าจอเมื่อกดปุ่ม Escape ในแอพอย่าง Safari on Lion


45

ใน OS X Lion การกดปุ่มESCจะออกจากโหมดเต็มหน้าจอ น่าเสียดายและโดยเฉพาะอย่างยิ่งเมื่อใช้ Safari ESCใช้สำหรับฟังก์ชั่นอื่น ๆ เช่นในการจัดการเหตุการณ์การกดแป้นพิมพ์ Javascript ฉันไม่ต้องการให้ Lion ออกจากโหมดเต็มหน้าจอเมื่อกดหลบหนี แต่ฉันไม่สามารถหาที่ปิดการทำงานได้

ฉันรู้แป้นพิมพ์ลัดเพื่อเข้า / ออกโหมดเต็มหน้าจอ ( Cmd- Ctrl- F) แล้ว ฉันต้องการปิดการใช้งานESCทางลัด ฉันเป็น Google แต่ไม่สามารถหาคำตอบได้


2
การกดปุ่มEscตรงที่มีเอฟเฟกต์ต่าง ๆ (เช่นการยกเลิกการโหลดหน้ากระดาษ) จะไม่ออกจากเต็มหน้าจอ
Daniel Beck

@Daniel: แต่นั่นไม่ได้นำไปใช้กับฟังก์ชั่นอื่น ๆ นี่เป็นปัญหาที่แพร่หลายของ OS X Lion หรือไม่ ทำไมมีคนน้อยคนที่ประสบปัญหานี้
Tamara Wijsman

1
@Tom เช่น? ผู้ใช้ไม่ได้พูดและไม่ทำเช่นนั้น ฉันนึกภาพฟังก์ชั่นเหล่านั้นทั้งหมดที่มาแทนที่ช็อตคัตโหมดเต็มหน้าจอเมื่อใช้งานโดยใช้เหตุการณ์ดังกล่าว แต่ไม่มีตัวอย่างเพิ่มเติมฉันไม่สามารถพูดได้อย่างแน่นอน
Daniel Beck

10
กดปุ่ม Enter โดยไม่ได้ตั้งใจมีหลายเว็บเพจที่ใช้ ESC เพื่อปิดหน้าต่าง modal ตัวอย่างเช่น: ericmmartin.com/projects/simplemodal-demosคลิก Demo บนหน้าเว็บเพื่อแสดงหน้าต่าง modal กด ESC เพื่อปิด modal Safari ทราบว่ามีหน้าต่างเป็นกิริยาช่วยและไม่ออกจากเต็มหน้าจอ กด ESC อีกครั้งและ Safari ออกจากโหมดเต็มหน้าจอ บ่อยครั้งที่ฉันกด ESC หลายครั้งเพื่อให้แน่ใจว่ามีบางอย่างถูกปิด ฉันไม่ต้องการให้ Safari ออกจากโหมดเต็มหน้าจอเมื่อเป็นเช่นนั้น มีคำสั่งคีย์อยู่แล้วเพื่อออกจากแบบเต็มหน้าจอ ไม่ควรใช้ ESC
Fadi

1
@dpk เชื่อมโยงไปยังหน้าตัวอย่างโปรด เนื่องจากไม่มีตัวอย่างใดที่กล่าวถึงจนถึงตอนนี้เมื่อฉันทดสอบพวกเขาฉันไม่เชื่อว่าหากไม่มีขั้นตอนในการทำให้เกิดปัญหาอีกครั้ง ในความเป็นจริงตัวอย่างของ Fadi ด้านบนขัดแย้งกับความคิดเห็นของคุณ
Daniel Beck

คำตอบ:


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 คุณสามารถใช้ Safari Extension NinjaKit (บนGitHub ) นี่คือสิ่งที่ฉันใช้
  • สำหรับ Chrome คุณสามารถใช้มันNinjaKitตัวแปร
  • สำหรับ Safari อื่น ๆ ใน OS X คุณสามารถใช้ปลั๊กอิน SIMBL GreaseKitได้ ไม่แน่ใจว่ามันเป็นวันที่

เพื่อความสะดวกฉันได้อัปโหลดสิ่งนี้ไปยัง userscripts: userscripts.org/scripts/review/178642
coffeejunk

มีประสบการณ์การติดตั้งสิ่งนี้บน Safari สำหรับ Mavericks หรือไม่?
Holene

2
ใช่สิ่งนี้ไม่ได้ผลสำหรับฉันฉันอยู่ใน Yosemite Beta 5 พร้อม Safari 8.0 (10600.1.25) ในขณะที่เขียนและใช้ NinjaKit ใน Safari เป็นเอ็นจิน userscripts ปุ่ม Escape ยังคงทำงานเต็มหน้าจอและสำหรับฉันมันเกิดขึ้นเมื่อฉันอยู่ในแถบที่อยู่และกด Esc ในขณะที่อยู่ในนั้น (มันมีฟังก์ชั่นที่มีประโยชน์เล็กน้อยเมื่อแก้ไขข้อความในนั้น ... ) ฉันสมมติว่า GreaseKit ไม่ทำงานอีกต่อไปตั้งแต่วันที่จนถึงปี 2009 และดูเหมือนว่า google ฉบับย่อจะไม่ทำงานอีกต่อไป ความคิดใด ๆ ไม่น่าแปลกใจเลยที่ Chrome เป็นเบราว์เซอร์ตัวแรกที่ใช้งานแม้ในระบบปฏิบัติการของ Apple ...

@foregon ฉันคาดว่าการจัดการกิจกรรมบนหน้าเว็บจะไม่มีผลใด ๆ ในขณะที่คุณอยู่ในแถบที่อยู่
Daniel Beck

ทำงานร่วมกับ tampermonkey แก้ไขสคริปต์ / การตอบสนองเพื่อรองรับ https: // เช่นกัน
Toni

3

สถานการณ์ส่วนใหญ่ที่มีถิ่นกำเนิดใน OS X ยอมรับทั้งEscapeและCmd-.ยกเลิกเช่นกล่องโต้ตอบไฟล์, การโหลด Safari, การลากองค์ประกอบไปรอบ ๆ ฯลฯ

สะดุดตาหายไปจากรายการที่เป็นของหลักสูตรออกจากโหมดเต็มหน้าจอ


ดังนั้นคุณสามารถเรียนรู้ที่จะกดCmd-.แทนที่จะEscapeหลีกเลี่ยงสถานการณ์นี้โดยสิ้นเชิง หรือคุณสามารถสอนคอมพิวเตอร์ของคุณที่จะทำเพื่อคุณ: เป็นวิธีการแก้ปัญหาอย่างน้อยค่อนข้างมีสติคือการใช้เช่นบัตเลอร์ 's การกดแป้นพิมพ์รายการที่จะ map Escapeเพื่อCmd-.:

  • เปิดหน้าการกำหนดค่าของ Butler
  • เลือกที่เก็บใด ๆ เช่นซ่อนคลิก+ »รายการอัจฉริยะ» Keystrokes
  • บนแท็บKeysกดCmd-.เพื่อใช้สิ่งนี้เป็นการกดแป้นที่เกิดขึ้นเมื่อเปิดใช้งานรายการนี้
  • ในทริกเกอร์แท็บเลือกฮอตคีย์Escapeข้อมูลเข้าและกด ไม่สนใจคำเตือนที่บอกว่าคุณเป็นบ้า
  • อย่าลืมเพิ่มเช่นเทอร์มินัลในรายการข้อยกเว้น - มันไม่สนใจที่จะEscapeออกจากแบบเต็มหน้าจอ แต่กดCtrl-.แปลเป็นCtrl-C!

ในบางสถานการณ์สิ่งต่าง ๆ จะทำงานผิดปกติ การแมปกุญแจกับสิ่งที่โดยปกติแล้วแป้นพิมพ์ลัดที่เทียบเท่ากันคือโซลูชันค้อนขนาดใหญ่ ตัวอย่างเช่นQuick Lookไม่ได้จัดการCmd-.(ดังนั้น remapped Escapeสำหรับตัวอย่างไฟล์ที่ปิด); การเปลี่ยนชื่อไฟล์ใน Finder ไม่สามารถยกเลิกได้อีกต่อไปโดยใช้Escapeหรือการเลือกเช่นใน Finder จะถูกล้าง

ในการทดสอบที่ จำกัด ฉันไม่พบสถานการณ์ที่การกดCmd-.จริงนำไปสู่การกระทำที่ไม่พึงประสงค์ที่กำลังดำเนินการ แต่โปรดทราบว่าสิ่งเหล่านี้อาจมีอยู่


แน่นอนว่าคุณสามารถเพิกเฉยต่อปุ่มกด Escape ทั้งหมดเช่นนี้ได้ แต่นั่นจะทำให้ฟังก์ชั่นการใช้งานของคุณลดลง ...
Daniel Beck

⌘ + ออกจากโหมดเต็มหน้าจอสำหรับฉันใน Opera ดังนั้นนี่คือไม่ไป :(
Andy E

2

ตัวเลือกที่เป็นไปได้ของคุณรวมถึง:

  1. ตั้งค่าทางลัดอื่นสำหรับฟังก์ชั่นอื่น ๆ เนื่องจากได้ESCรับการสงวนไว้โดยระบบปฏิบัติการและเบราว์เซอร์

  2. ปรับรหัสเครื่องต้นทาง / แอสเซมเบลอร์เพื่อเชื่อมใหม่ESCคีย์ของระบบปฏิบัติการและเบราว์เซอร์

  3. ยื่นคำขอข้อบกพร่อง / คุณสมบัติกับผู้พัฒนาแอปพลิเคชัน (เช่น Google สเปรดชีต) เพื่อใช้งานเหตุการณ์ ESC แทนที่จะปล่อยให้ผ่าน

  4. ยื่นข้อผิดพลาดกับ Apple เพราะแอปพลิเคชั่นอยู่ที่นี่ก่อนและ Apple ทำการคีย์ใหม่โดยไม่มีสาเหตุ


3
# 1 ฉันได้รับข้างหลัง # 2 เกือบลิ้นในแก้มถึงจุดหัวเราะ
peelman

ระยะของคุณอาจแตกต่างกันไป
Tamara Wijsman

ฟังก์ชั่นการใช้งานEscapeมักจะไม่สามารถใช้งานได้จากแถบเมนูและEscapeไม่เรียกใช้เมนูตามที่เห็นได้ชัดจาก "แฟลช" ที่ขาดหายไปซึ่งจะเน้นรายการแถบเมนูที่มีรายการที่ถูกเรียก
Daniel Beck

# 4 ยื่นข้อผิดพลาดกับ Apple เพราะแอปพลิเคชั่นอยู่ที่นี่เป็นครั้งแรกและ Apple ทำการคีย์ใหม่โดยไม่มีสาเหตุ
dpk

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. ติดตั้งองค์ประกอบ karabiner brew cask install karabiner-elements

ฉันได้สร้าง "การแก้ไขที่ซับซ้อน" ที่กำหนดเองโดยเฉพาะสำหรับปัญหานี้ ในการติดตั้งการดัดแปลงนี้คุณต้อง:

  1. เปิดองค์ประกอบ karabiner และไปที่แท็บ "การดัดแปลงที่ซับซ้อน"
  2. คลิกปุ่ม "เพิ่มกฎ" จากนั้นคลิก "นำเข้ากฎเพิ่มเติมจากอินเทอร์เน็ต"
  3. นำเข้าการดัดแปลง "อย่าออกจากเต็มหน้าจอเมื่อกด ESC ใน Safari"

1

เพียงเพื่อขยายคำอธิบายออกไปอีกเล็กน้อย

ESC ใช้ในการยกเลิกการลาก esc ใช้ในการยกเลิกกล่องโต้ตอบ esc จะใช้ในระหว่างการลากเพื่อยกเลิกการย้าย / คัดลอก esc จะใช้ในเทอร์มินัลใน VI เพื่อยกเลิกคำสั่งแก้ไข

ดังนั้นจึงมีประโยชน์หลายอย่าง เป็นเรื่องแปลกที่ Apple มีโหมดยกเลิกแบบเต็มหน้าจอนี้เมื่อเป็นไปได้โดย ctrl-cmd-F และไอคอนบนขวา

ดูเหมือนว่าจะใช้แอปตาม Mail และ Safari และรายการอื่น ๆ ของ iLife จะออกจากเต็มหน้าจอ iTunes ยังคงเต็มหน้าจอ

Reeder จะข้าม esc เพื่อจุดประสงค์ในการควบคุมหน้าต่างแบบเต็มและทำสิ่งที่เหมาะสมอื่น ๆ สำหรับโปรแกรม Evernote ไม่มีแม้แต่ cmd-F หรือ ctrl-cmd-F สำหรับการควบคุมหน้าต่างไอคอนและปุ่ม esc

คุณดูเหมือนจะไม่สามารถแมป esc ด้วยตัวเองกับการกระทำไร้สาระที่ไม่เป็นอันตรายในแผงควบคุมแป้นพิมพ์


1
ใน Safari การทำแผนที่ปุ่ม Escape กับฟังก์ชั่นอ่อนโยนนั้นดูเหมือนจะไม่ใช่วิธีแก้ปัญหา โดยไม่คำนึงถึงการดำเนินการมันจะยังคงออกจากหน้าจอเต็ม
ปอกเปลือก

และอีกครั้งกดEscapeเพื่อยกเลิกกล่องโต้ตอบไม่ได้ออกจากเต็มหน้าจอ
Daniel Beck

กดEscapeในเทอร์มิไม่ได้ออกจากเต็มหน้าจอ
Daniel Beck

ใช้Escapeเพื่อยกเลิกการลากไม่ได้ออกจากเต็มหน้าจอ คุณเคยลองใช้มาก่อนโพสต์การอ้างสิทธิ์เหล่านี้หรือไม่?
Daniel Beck

ใช้Escapeในการรีดเดอร์เช่นกลับมาจากหน้าเว็บบทความไปยังรายการข้อมูล RSS ไม่ได้ออกจากเต็มหน้าจอ หากEscapeไม่ได้ใช้สำหรับการดำเนินการดังกล่าวจะออกจากเต็มหน้าจอ ในขณะที่ทุกโปรแกรมอื่น
Daniel Beck

1

ดูเหมือนว่าคุณกำลังใช้ JQuery ในกรณีนั้น:

ฟังKeyDownเหตุการณ์ (ปุ่มกดและ keyup จะไม่ทำงาน) ในเอกสารที่มีkeyCode 27และเมื่อเหตุการณ์ fires เรียกe.preventDefault ()

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

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

});

คำขอที่เกี่ยวข้องกับ MSOทำงานได้โดยไม่ต้อง jQuery
Daniel Beck

1

ลองใช้OptionEscซึ่งใช้ได้ผลกับฉัน


1
ไม่เรียกการกระทำที่เกี่ยวข้องกับปุ่ม Escape เช่นยกเลิกการโหลดหน้าเว็บ Safari
Daniel Beck

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


0

ฉันตัดสินใจที่จะมีการescส่งไปยัง+alt/option escส่วนใหญ่สิ่งนี้จะช่วยให้ฉันสามารถออกจาก vids ของ YouTube ได้และหากคุณมีบัญชี Squarespace มันจะช่วยให้คุณเข้าสู่ระบบได้โดยไม่ต้องออกจากหน้าจอเต็ม

  • ดาวน์โหลดและติดตั้งKarabiner
  • ไปที่แท็บ "อื่น ๆ & ถอนการติดตั้ง" ที่ถูกต้องที่สุด
  • คลิกที่ปุ่มที่ระบุว่า "Open private.xml"
  • ดาวน์โหลดไฟล์ private.xml จากที่นี่
  • แทนที่ไฟล์ "private.xml" ดั้งเดิมใน Finder ด้วยไฟล์ที่ดาวน์โหลด Voila!


0

หลังจากค้นหาโซลูชันที่หมดหวังแล้วฉันส่ง Safari ไปยังเดสก์ท็อปเสมือนที่แยกต่างหากพร้อมด้วยการควบคุมภารกิจ สิ่งนี้จะช่วยลดปัญหา ESC และเป็นการประมาณที่ดีที่สุดสำหรับหน้าต่าง Safari แบบเต็มหน้าจอ

พื้นที่โบนัสหากคุณซ่อน Dock


0

ง่ายพบ! KeyboardMaestro มี 2 กิจกรรม

เมื่อกด " ESC" จำลองการกด (แทน): - " CMD+." - จากนั้น " ALT+ ESC"

คุณต้องการทั้งคู่เนื่องจากบางแอพตอบสนองต่อคำสั่งเดียวหรืออีกแอปหนึ่ง (บางครั้งก็ไม่มีเลยไม่มีอะไรที่เป็นไปได้) -> วิธีนี้แอปส่วนใหญ่จะทำตัวเหมือน " ESC" ในบริบทของพวกเขา แต่คุณจะไม่ออกจาก โหมดหน้าจอ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.