การแก้ปัญหาด้วยการสลับโดยใช้ alt+shift ใน Linux ในแอปพลิเคชัน Electron

สวัสดีเพื่อนร่วมงาน!

ฉันต้องการแบ่งปันวิธีแก้ปัญหาของฉันตามที่ระบุไว้ในชื่อ ฉันได้รับแรงบันดาลใจในการเขียนบทความนี้โดยเพื่อนร่วมงาน บรนอฟค์ซึ่งไม่ขี้เกียจและเสนอวิธีแก้ไขปัญหาบางส่วน (สำหรับฉัน) ฉันทำ “ไม้ค้ำ” ของตัวเองซึ่งช่วยฉันได้ ฉันแบ่งปันกับคุณ

คำอธิบายของปัญหา

ฉันใช้ Ubuntu 18.04 สำหรับการทำงาน และเมื่อเร็วๆ นี้สังเกตเห็นว่าเมื่อสลับเค้าโครงโดยใช้ alt+shift ในแอปพลิเคชัน เช่น Visual Studio Code, Skype, Slack และอื่นๆ ที่สร้างขึ้นโดยใช้ Electron ปัญหาต่อไปนี้เกิดขึ้น: โฟกัสจากช่องป้อนข้อมูลไปที่ด้านบน แผงหน้าต่าง (เมนู) ด้วยเหตุผลอื่น ฉันจึงย้ายไปที่ Fedora + KDE และพบว่าปัญหาไม่ได้หายไป ในขณะที่มองหาวิธีแก้ปัญหา ฉันพบบทความที่ยอดเยี่ยม วิธีแก้ไข Skype ด้วยตัวเอง. ขอบคุณมากสหาย บรนอฟค์ที่ได้พูดคุยถึงปัญหาโดยละเอียดและแบ่งปันวิธีการแก้ไขของเขา แต่วิธีการที่ระบุในบทความสามารถแก้ไขปัญหาได้ด้วยแอปพลิเคชันเดียวเท่านั้นนั่นคือ Skype สำหรับฉัน การเข้าใจ Visual Studio Code ก็เป็นสิ่งสำคัญเช่นกัน เนื่องจากการเขียนข้อความด้วยเมนูแบบข้าม แม้จะน่ารำคาญ แต่ก็ไม่ได้มากหากคุณมีส่วนร่วมในการพัฒนา นอกจากนี้ เพื่อนร่วมงานยังแนะนำวิธีแก้ปัญหาที่ทำให้เมนูแอปพลิเคชันหายไปโดยสิ้นเชิง และฉันไม่อยากให้เมนูใน VS Code หายไปเลย

พยายามทำความเข้าใจว่ามีอะไรผิดปกติ

ดังนั้นฉันจึงตัดสินใจที่จะใช้เวลาเพื่อดูว่าเกิดอะไรขึ้น ตอนนี้ฉันจะอธิบายเส้นทางที่ฉันเดินไปโดยย่อบางทีคนที่มีความรู้ในเรื่องนี้จะช่วยอธิบายความยากลำบากที่ฉันพบได้

ฉันเปิด Visual Studio Code และเริ่มกดปุ่ม Alt+<%some%> ที่แตกต่างกันเพื่อดูว่าแอปพลิเคชันตอบสนองอย่างไร ในเกือบทุกกรณี การใช้ร่วมกันทั้งหมดยกเว้น Alt+Shift จะทำงานโดยไม่สูญเสียโฟกัส ดูเหมือนว่ามีคนกำลังกินปุ่ม Shift ที่กดไว้ ซึ่งตามมาหลังจากกด Alt ค้างไว้ และแอปพลิเคชันคิดว่าฉันกด Alt แล้วไม่ได้กดอะไรเลย จึงปล่อย Alt แล้วมันก็พุ่งความสนใจของฉันไปที่เมนูของมันอย่างสนุกสนาน ซึ่งดูค่อนข้างสมเหตุสมผล มัน.

ฉันเปิดการตั้งค่าสำหรับการสลับเค้าโครงแป้นพิมพ์ (คุณรู้ไหม รายการยาวนี้มีช่องทำเครื่องหมายและการตั้งค่าปุ่มทุกประเภท) และตั้งค่าให้สลับเค้าโครงโดยใช้ปุ่ม Alt โดยไม่ต้องคลิกเพิ่มเติม

การแก้ปัญหาด้วยการสลับโดยใช้ alt+shift ใน Linux ในแอปพลิเคชัน Electron

หลังจากนั้น Alt+Tab เพื่อสลับหน้าต่างก็หยุดทำงาน มีเพียง Tab เท่านั้นที่ใช้งานได้นั่นคือมีคน "กิน" Alt ของฉันอีกครั้ง ไม่มีคำถามเหลืออยู่ว่า "ใครบางคน" นี้คือใคร แต่ฉันไม่รู้ว่าจะทำอะไรกับเขาได้บ้าง

แต่เนื่องจากปัญหาต้องได้รับการแก้ไขด้วยวิธีใดวิธีหนึ่ง จึงมีวิธีแก้ปัญหาเกิดขึ้น:

  1. ในการตั้งค่า ให้ปิดการใช้งานปุ่มลัดสำหรับการสลับรูปแบบแป้นพิมพ์ (ยกเลิกการเลือกช่องทำเครื่องหมายทั้งหมดในส่วนสลับไปยังรูปแบบอื่น)
  2. สร้างปุ่มลัดของคุณเองที่จะเปลี่ยนเค้าโครงให้ฉัน

คำอธิบายของโซลูชัน

ขั้นแรก มาติดตั้งโปรแกรมที่ให้คุณกำหนดคำสั่งให้กับคีย์ Xbindkeys กันก่อน น่าเสียดายที่เครื่องมือมาตรฐานไม่อนุญาตให้ฉันสร้างปุ่มลัดสำหรับชุดค่าผสมเช่น Alt+Shift ผ่านอินเทอร์เฟซที่สวยงาม สามารถทำได้สำหรับ Alt+S, Alt+1, Alt+shift+Y ฯลฯ ฯลฯ แต่ก็ไม่เหมาะกับงานของเรา

sudo dnf install xbindkeysrc

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

xbindkeys -d > ~/.xbindkeysrc

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


# Examples of commands:
"xbindkeys_show"
  control+shift + q
# set directly keycode (here control + f with my keyboard)
"xterm"
  c:41 + m:0x4

ในฐานะที่เป็นฮอตคีย์ คุณสามารถใช้การเขียนที่มนุษย์อ่านได้หรือใช้รหัสคีย์ มันใช้งานได้สำหรับฉันด้วยรหัสเท่านั้น แต่ไม่มีใครห้ามไม่ให้คุณทดลองเพียงเล็กน้อย

ในการรับรหัสคุณต้องใช้คำสั่ง:

xbindkeys -k

หน้าต่างเล็กๆ “X” จะเปิดขึ้น คุณจะต้องกดปุ่มเมื่อโฟกัสอยู่ที่หน้าต่างนี้เท่านั้น! เฉพาะในกรณีนี้เท่านั้นที่คุณจะเห็นสิ่งนี้ในเทอร์มินัล:


[podkmax@localhost ~]$ xbindkeys -k
Press combination of keys or/and click under the window.
You can use one of the two lines after "NoCommand"
in $HOME/.xbindkeysrc to bind a key.
"(Scheme function)"
    m:0x4 + c:39
    Control + s

ในกรณีของฉัน การกดปุ่ม Alt+Shift ร่วมกันจะมีลักษณะดังนี้:

m:0x8 + c:50

ตอนนี้เราต้องแน่ใจว่าเมื่อคุณคลิกที่ชุดค่าผสมนี้ เค้าโครงจะสลับไป ฉันพบเพียงคำสั่งเดียวที่ใช้งานได้เพื่อระบุเค้าโครง:


setxkbmap ru
setxkbmap us

อย่างที่คุณเห็นจากตัวอย่าง มันสามารถเปิดใช้งานได้เพียงเลย์เอาต์เดียวเท่านั้น ดังนั้นฉันจึงคิดอะไรไม่ออกนอกจากการเขียนสคริปต์


vim ~/layout.sh
#!/bin/bash
LAYOUT=$(setxkbmap -print | awk -F + '/xkb_symbols/ {print $2}')
if [ "$LAYOUT" == "ru" ]
        then `/usr/bin/setxkbmap us`
        else `/usr/bin/setxkbmap ru`
fi

ตอนนี้ หากไฟล์ .xbindkeysrc และlayout.sh อยู่ในไดเร็กทอรีเดียวกัน มุมมองสุดท้ายของไฟล์ .xbindkeysrc จะมีลักษณะดังนี้:


# Examples of commands:

"xbindkeys_show"
  control+shift + q

# set directly keycode (here control + f with my keyboard)
"xterm"
  c:41 + m:0x4

# specify a mouse button
"xterm"
  control + b:2
#А вот то, что добавил я
"./layout.sh"
  m:0x8 + c:50

หลังจากนั้นเราจะทำการเปลี่ยนแปลง:


xbindkeys -p

และคุณสามารถตรวจสอบได้ อย่าลืมปิดการใช้งานตัวเลือกใดๆ สำหรับการสลับเค้าโครงในการตั้งค่ามาตรฐาน

ทั้งหมด

เพื่อนร่วมงานฉันหวังว่าบทความนี้จะช่วยให้ใครบางคนกำจัดปัญหาที่น่ารำคาญได้อย่างรวดเร็ว โดยส่วนตัวแล้ว ฉันใช้เวลาทั้งวันไปกับการพยายามคิดหาคำตอบและแก้ไขปัญหา เพื่อที่ฉันจะไม่วอกแวกกับมันในช่วงเวลาทำงานอีกต่อไป ฉันเขียนบทความนี้เพื่อประหยัดเวลาและความเครียดของใครบางคน หลายท่านใช้วิธีอื่นในการสลับเค้าโครงและไม่เข้าใจว่าปัญหาคืออะไร โดยส่วนตัวแล้วฉันชอบสลับด้วย Alt+Shift และนั่นคือสิ่งที่ฉันต้องการให้มันทำงาน หากคุณแบ่งปันความคิดเห็นของฉันและประสบปัญหานี้ บทความนี้จะช่วยคุณได้

ที่มา: will.com

เพิ่มความคิดเห็น