ปิดใช้งานแป้นพิมพ์ลัดทั้งหมดของ Unity โดยใช้บรรทัดคำสั่ง


8

ฉันต้องการทราบวิธีปิดใช้งานแป้นพิมพ์ลัดทั้งหมดผ่านเทอร์มินัล ฉันรู้ว่าคุณสามารถปิดการใช้งานได้โดยไปที่:

การตั้งค่าระบบ> คีย์บอร์ด> ทางลัด

แต่ฉันต้องการปิดการใช้งานผ่านทางสถานี ไม่มีใครรู้ว่าสิ่งนี้สามารถทำได้?


แป้นพิมพ์ลัดใดที่คุณกำลังพูดถึง มีฉากต่าง ๆ มากมาย คุณมีบางอย่างที่ทำงานในบรรทัดคำสั่งบางอย่างที่เปิดใช้งานสิ่ง GUI ฯลฯ พวกเขาจะแยกจากกันโดยสิ้นเชิง
terdon

หากคุณไปที่การตั้งค่าระบบ> แป้นพิมพ์> ทางลัดมีทางลัดทั้งหมดใน Ubuntu และฉันต้องการปิดการใช้งานทั้งหมด
user278551

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

ใช่ว่าถูกต้อง
user278551

คำตอบ:


11

ฉันไม่รู้ว่าทำไมคุณถึงต้องการทำเช่นนี้และฉันควรเตือนคุณว่ามันอาจซับซ้อนในการเรียกใช้ทางลัดกลับมา หากนี่คือสิ่งที่คุณต้องการจริงๆคำสั่งด้านล่างจะปิดใช้งานแป้นพิมพ์ลัดทั้งหมด ทั้งที่ตั้งค่าผ่าน Unity ของ GUI และสิ่งที่คุณอาจตั้งค่าโดยใช้ccsm

A. ปิดการใช้งานคีย์ข้อมูล Unity

  1. ก่อนทำการสำรองข้อมูลของการผูกปัจจุบันเพื่อให้คุณสามารถเปิดใช้งานได้ในภายหลัง

    gsettings list-recursively org.gnome.desktop.wm.keybindings | 
       perl -pe 's/(.*)\s*(\[.*?\])\s*$/$1\t$2\n/' | 
        while IFS=$'\t' read -r key val; do echo -e "$key\t$val"; done > old_settings
    

    สิ่งนี้จะสร้างไฟล์ที่เรียกว่าold_settingsในรูปแบบต่อไปนี้:

    schema key <TAB> value
    

    ตัวอย่างเช่น:

    org.gnome.desktop.wm.keybindings unmaximize <TAB> ['<Control><Super>Down']
    
  2. ตอนนี้ปิดการใช้งานทางลัด

    gsettings list-recursively org.gnome.desktop.wm.keybindings | 
        perl -pe 's/(.*)\s*(\[.*?\])\s*$/$1\t$2\n/' | 
            while IFS=$'\t' read -r key val; do gsettings set $key ['']; done
    

    คำอธิบาย

    • gsettings list-recursively org.gnome.desktop.wm.keybindings : นี่แสดงรายการการโยงคีย์ทั้งหมดและค่าปัจจุบัน
    • perl -pe 's/(.*)\s*(\[.*?\])\s*$/$1\t$2\n/': เพียงเพิ่มอักขระ TAB ( \t) เพื่อแยกค่าออกจากคีย์ ขั้นตอนนี้จำเป็นเพื่อให้สามารถอ่านได้อย่างถูกต้องในขั้นตอนถัดไป
    • while IFS=$'\t' read -r key val: ผ่านไปแต่ละบรรทัดและอ่านที่สำคัญลงและความคุ้มค่าของมันเข้าไป$k หมายถึงแยกบนแท็บเพื่อให้อ่านคีย์และค่าอย่างถูกต้อง$val$IFS=$'\t'
    • gsettings set $key [''] : นี่เป็นการตั้งค่าว่างเปล่าและปิดการใช้งานทางลัดอย่างมีประสิทธิภาพ

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

  3. รับ (บางส่วน) ทางลัดกลับมา

    while IFS=$'\t' read -r key val; do 
        gsettings set "$key" "$val"
    done < old_settings 
    

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

B. ปิดการใช้งานทางลัดที่กำหนดเองของคุณ ccsm

gsettings set org.gnome.settings-daemon.plugins.media-keys active false

คราวนี้การทำให้พวกมันกลับมาเป็นเรื่องง่าย สิ่งที่คุณต้องทำคือเรียกใช้

gsettings set org.gnome.settings-daemon.plugins.media-keys active true

ขอบคุณมากฉันคิดว่ายังมีทางลัด Compiz อยู่หรือเปล่า
user.dz

@Sneetsher ส่วน B. ควรจัดการกับทางลัด compiz ที่ผู้ใช้กำหนด ไม่แน่ใจเกี่ยวกับค่าเริ่มต้น ขอตรวจสอบดูก่อน.
terdon

เพิ่มสคริปต์ให้เป็น front-end ที่สามารถใช้งานได้มากขึ้นในการทำข้างต้น: github.com/fatso83/dotfiles/blob/master/utils/scripts/ …
oligofren

เกี่ยวกับ "ฉันไม่รู้ว่าทำไมคุณต้องการทำสิ่งนี้" กรณีการใช้งานสำหรับทุกคนในทีม dev ของฉันคือทางลัดเริ่มต้นซ้อนทับกับการผูกคีย์ที่รู้จักในโปรแกรมยอดนิยม ในกรณีของเราทางลัด IntelliJ ส่วนใหญ่ใช้งานไม่ได้และเราทุกคนต้องใช้ทางลัด Gnome จำนวนหนึ่ง (เช่น Alt-Tab และการปรับขนาดหน้าต่าง)
oligofren

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

3

ฉันสร้างคำตอบของ @ terdon และสร้างสคริปต์ให้ทำแบบเดียวกันแต่ทำในลักษณะที่เป็นมิตรกับผู้ใช้มากกว่า

คุณสามารถใช้สิ่งนี้:

gnome-key-bindings --unset-all --except 'close|switch-applications'

ตามที่ฉันชอบใช้การกดปุ่มลัดเริ่มต้น Alt-F4 และ Alt-Tab (และการย้อนกลับโดยใช้กะ) นี่จะเป็นการลบปุ่มลัดทั้งหมดยกเว้นปุ่มเหล่านี้

นอกจากนี้ยังมีเมนูช่วยเหลือที่ดี:

List/disable/enable/set gnome-key-bindings

gnome-key-bindings [-h | option] [value]

Options
   --list              Lists all the current keybindings
   --set=key           Set a specific keybinding
   --unset=key         Unsets a specific keybinding
   --unset-all         Unsets all keybindings
   --except=REGEX      Filter out keys matching REGEX from being unset
   --print-default     Prints the default shortcuts per Ubuntu 18.04

Examples:

     Clearing all keys except a few:
       gnome-key-bindings --unset-all --except "close|switch-applications|switch-input-source|show-desktop"

     Setting a shortcut
       gnome-key-bindings --set=maximize "<Super>Up"    

เพื่อใช้กับเครื่องของคุณเอง

curl -s https://raw.githubusercontent.com/fatso83/dotfiles/master/utils/scripts/gnome-key-bindings -o gnome-key-bindings
curl -s https://raw.githubusercontent.com/fatso83/dotfiles/master/utils/scripts/easyoptions.sh -o easyoptions.sh
curl -s https://raw.githubusercontent.com/fatso83/dotfiles/master/utils/scripts/easyoptions.rb -o easyoptions.rb
chmod +x ./gnome-key-bindings
sudo mv ./gnome-key-bindings easyoptions.* /usr/local/bin/

0

สำหรับ gnome บน Ubuntu 18.04 ฉันพบว่าใช้งานได้:

gsettings list-keys org.gnome.shell.keybindings | xargs -I@ gsettings set org.gnome.shell.keybindings @ ['']
gsettings list-keys org.gnome.mutter.keybindings | xargs -I@ gsettings set org.gnome.mutter.keybindings @ ['']
gsettings list-keys org.gnome.settings-daemon.plugins.media-keys | xargs -I@ gsettings set org.gnome.settings-daemon.plugins.media-keys @ ['']
gsettings set org.gnome.mutter overlay-key ''

ฉันไม่แน่ใจว่าเป็นปุ่มลัดทั้งหมดหรือไม่ แต่ดูเหมือนว่าจะเป็นปุ่มลัดจำนวนมาก

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