Qu'est-ce que <Primary> pour une clé?

18

Je viens de voir un raccourci étrange dans dconf-editor:

<Primary><Alt>KP_End

Qu'est-ce que c'est <Primary>?

J'ai aussi vu une Above-Tabclé. Je comprends parfaitement de quoi il s'agit, mais ces noms clés ont-ils été définis?

Robert Siemer
la source

Réponses:

16

<Primary>est une gtk+chose.
gtk+ 2.24.7& a gtk+ 3.2.1introduit le concept d'un modificateur d'accélérateur indépendant de la plate-forme <Primary>, qui peut être utilisé à la place de <Control>:

une nouvelle fonctionnalité est fournie dans Gtk + (au moment de la rédaction de cet article, elle est dans Git pour Gtk + -2.24 et publiée dans Gtk + -3.2.0) pour utiliser le <Primary> descripteur à la place des <Control>accélérateurs et des liaisons. Cela mappera l'accélérateur à Command sur OSX et à Control pour toute autre chose. 1

Selon cet engagement :

gtk: permet de spécifier des accélérateurs d'une manière indépendante de la plateforme. Introduire <Primary>dans les chaînes d'accélérateur, qui se résout en GDK_CONTROL_MASK sur X11 / Win23 et en GDK_META_MASK sur quartz.

il est défini (avec d'autres accélérateurs) dans gtkaccelgroup.c

gtk_accelerator_name (guint accelerator_key,
                     GdkModifierType accelerator_mods)
{
  static const gchar text_release[] = "<Release>";
  static const gchar text_primary[] = "<Primary>";
  static const gchar text_shift[] = "<Shift>";
  static const gchar text_control[] = "<Control>";
  static const gchar text_mod1[] = "<Alt>";
  static const gchar text_mod2[] = "<Mod2>";
  static const gchar text_mod3[] = "<Mod3>";
  static const gchar text_mod4[] = "<Mod4>";
  static const gchar text_mod5[] = "<Mod5>";
  static const gchar text_meta[] = "<Meta>";
  static const gchar text_super[] = "<Super>";
  static const gchar text_hyper[] = "<Hyper>";

<Above_tab>est une chose de gestionnaire de fenêtres.
Selon cet engagement dans metacity:

Nous voulons que la commutation entre les fenêtres d'une application soit une opération facilement accessible. La liaison de touches pratique et mémorable est la touche située au-dessus de la touche de tabulation - mais le clavier de cette touche n'est pas cohérent entre les différentes dispositions de clavier. Ajoutez du code qui représente la clé à partir de la géométrie XKB et un nom de clé magique "Above_Tab" qui fait référence à cette clé et passez la liaison par défaut pour cycle_group à Above_Tab

Voir aussi ce commit dans les mutterfichiers source meta-accel-parse.cetmeta-accel-parse.h

don_crissti
la source
Mon Dieu, comme c'est déroutant. Voulez-vous dire que c'est normalement une chose GNOME, sauf que Above-Tab et Primary ne sont que des murmures ?? (C'est-à-dire que seul le marmonnement peut comprendre les descriptions de raccourcis les contenant?)
Robert Siemer
5

<Primary>signifie généralement (bouton Windows), mais peut être redéfini (je l'ai vu mappé à certains endroits). Le wiki GNOME dit :Ctrl SuperCtrlShift

La clé de modification système principale doit être (Super / Windows / Touche de commande).

Argh. Il y a une certaine confusion ici. Bien que le wiki GNOME dise la "clé de modification du système primaire", cela peut en fait être différent de la "clé primaire". Deux messages du forum notent que Primary est , comme je le pensais à l'origine. Il y a un bogue (corrigé) vieux de deux ans concernant la confusion et le fichier primaire contre dans Ubuntu, qui dit:CtrlCtrlcompiz

Auparavant, nous appelions la touche de contrôle, <Control>mais cela a maintenant été modifié dans GNOME, donc lorsque la touche de contrôle est enfoncée, elle <primary>est renvoyée. Dans compiz, nous définissons les raccourcis clavier comme (par exemple) <Control><Alt><Left>.

Je me retrouve avec essai et erreur: essayez d' Ctrlabord, puis Super.

muru
la source
2
<Primary>n'est pas Super, comme vous l'avez compris; c'est juste une formulation malheureusement ambiguë. Pourtant, il est très bien pas défini comme Ctrl- dire qu'il est pas sur OS X. Son but est de cartographier la principale clé de modification du système hôte, qui , sur OS X est Command. Cela permet aux applications utilisant GTK + d'obtenir automatiquement des raccourcis qui correspondent aux applications OS X natives (par exemple Command+ Zpour annuler) et qui ne sont pas inhabituels / discordants (comme cela Ctrlest utilisé pour différentes choses là-bas).
underscore_d
Cette réponse est très confuse! <Primary>signifie certainement <Control>( Ctrl) dans le contexte Gtk sur les non-Mac et Command( ) sur les machines Mac. Par exemple, quitter Ctrl+qautomatiquement mappé à ⌘+q. De plus, la page wiki que vous avez citée ne parle que de <Super>rien à voir avec <Primary>.
Cas
@Cas bien, bon de savoir qu'ils ont mis à jour le wiki.
muru
Serait-il possible de remapper le primaire au super sur du non-quartz (sans reconstruction)?
Edoardo Vacchi