Taste deaktivieren, wenn das Programm läuft

Taste deaktivieren, wenn das Programm läuft

Doppelte Frage anWie kann ich eine Taste deaktivieren, während ein bestimmtes Programm ausgeführt wird?, die nie beantwortet wurde. (Welche Option ist schlimmer: dass ich die gleiche Frage erneut poste oder dass ich den alten Beitrag wieder aufleben lasse?)

Gibt es jedenfalls eine Möglichkeit, bestimmte Tasten zu deaktivieren, wenn bestimmte Programme ausgeführt werden? Oder alternativ Dash zu deaktivieren, wenn ein bestimmtes Programm ausgeführt wird?

Antwort1

Einfache Lösung

Erstellen Sie zwei Verknüpfungen: eine zum Deaktivieren des SuperSchlüssels und eine zum gewünschten Wiederherstellen.

Gehen Sie zu Systemeinstellungen -> Tastatur -> Tastenkombinationen -> Benutzerdefiniert und klicken Sie auf +die Schaltfläche. Nennen Sie die neue Tastenkombination „Dash deaktivieren“. Der Befehl lautet

 gsettings set org.compiz.unityshell:/org/compiz/profiles/unity/plugins/unityshell/ show-launcher 'Disabled'

Um eine Verknüpfung zum erneuten Aktivieren des Skripts zu erstellen, wiederholen Sie die obigen Schritte, aber der Befehl sollte sein

 gsettings set org.compiz.unityshell:/org/compiz/profiles/unity/plugins/unityshell/ show-launcher '<Super>'

Eine Skriptlösung

Das folgende Skript deaktiviert die SuperTaste, wenn das vom Benutzer angegebene Programm den Fokus hat. Beachten Sie, dass der Benutzer immer noch mit der Maus auf das Strichsymbol klicken kann, um das Strichsymbol aufzurufen. Der Programmname muss in einfache Anführungszeichen gesetzt werden und genau dem Namen entsprechen, der im Unity Launcher angezeigt wird. Mehrere Fenster können im gleichen Format angegeben werden, getrennt durch Leerzeichen.

Bildbeschreibung hier eingeben

Um beispielsweise die Super-Taste jedes Mal zu deaktivieren, wenn das Firefox-Fenster den Fokus hat, muss das Skript wie folgt aufgerufen werden:

disable_super_key.sh 'Firefox Web Browser'

Um beides zu deaktivieren firefoxundgnome-terminal

disable_super_key.sh 'Firefox Web Browser' 'Terminal'

So erhalten Sie das Skript

Benutzer können den Quellcode entweder hier kopieren oder ihn alternativ von GitHub beziehen, indem sie den folgenden Anweisungen folgen:

  1. sudo apt-get install git
  2. cd /opt ; sudo git clone https://github.com/SergKolo/sergrep.git
  3. sudo chmod -R +x sergrep

Das Skript befindet sich in/opt/sergrep/disable_super_key.sh

Um das Skript bei jeder Anmeldung automatisch zu starten, lesen SieWie starte ich Anwendungen automatisch beim Anmelden?. Geben Sie /opt/sergrep/disable_super_key.sh(vollständigen Pfad) als Befehl ein

Skriptquelle

#!/usr/bin/env bash
#
###########################################################
# Author: Serg Kolo , contact: [email protected] 
# Date: April 12 , 2016
# Purpose: Disable super key that brings up Unity Dash
#          per specific application
# 
# Written for: https://askubuntu.com/q/754884/295286
# Tested on: Ubuntu 14.04 LTS
###########################################################
# Copyright: Serg Kolo , 2016
#    
#     Permission to use, copy, modify, and distribute this software is hereby granted
#     without fee, provided that  the copyright notice above and this permission statement
#     appear in all copies.
#
#     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
#     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
#     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
#     THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
#     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
#     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
#     DEALINGS IN THE SOFTWARE.

ARGV0="$0"
ARGC=$#
enable_dash_key()
{
  gsettings set org.compiz.unityshell:/org/compiz/profiles/unity/plugins/unityshell/ show-launcher '<Super>'
}

disable_dash_key()
{
gsettings set org.compiz.unityshell:/org/compiz/profiles/unity/plugins/unityshell/ show-launcher 'Disabled'
}



get_active_app()
{
   qdbus org.ayatana.bamf \
        /org/ayatana/bamf/matcher \
        org.ayatana.bamf.matcher.ActiveApplication
}

get_active_app_name()
{
  qdbus org.ayatana.bamf \
   $(get_active_app)   \
   org.ayatana.bamf.view.Name
}

check_active_app()
{
  active_name=$(get_active_app_name)
  local is_found
  for win in  "${windows_list[@]}"
  do
    if [ "$active_name" = "$win" ] ; then
      is_found=true
      break
    else
      is_found=false
    fi
  done

  if $is_found ; then
     disable_dash_key
  else
     enable_dash_key
  fi
}


print_usage()
{
cat << EOF
Copyright Serg Kolo , 2016

Usage: disable_super_key.sh 'App Name 1' [ 'App Name 2' 'App Name 3' ...  ]

The script disables the Super key for the specified set of applications
under Ubuntu's Unity environment. The list of windows must be space
separated, each app name single quoted and exactly as it appears on the
launcher (or as it appears in the .desktop file of that app), so spelling
and spacing matter.

Note that the script only disables the Super key as shortcut for Dash.
The user still will be able to invoke Dash by manually clicking on the 
Ubuntu icon in the launcher
EOF
}

main()
{

  if [ $ARGC -eq 0   ]; then
     print_usage
     exit
  fi

  local windows_list
  windows_list=( "$@" )
  dbus-monitor --profile "type='signal',member='FocusedWindowChanged'" |\
  while read line
  do
     case "$line" in
       *FocusedWindowChanged*) check_active_app ;;
     esac         
  done
}

main "$@"

verwandte Informationen