O que é <Primary> para uma chave?

18

Acabei de ver um atalho estranho no dconf-editor:

<Primary><Alt>KP_End

O que é <Primary>?

Eu também vi uma Above-Tabchave. Entendo completamente a que isso se refere, mas foram esses nomes de chave definidos?

Robert Siemer
fonte

Respostas:

16

<Primary>é uma gtk+coisa.
gtk+ 2.24.7e gtk+ 3.2.1introduzimos o conceito de um modificador acelerador independente de plataforma <Primary>, que pode ser usado em vez de <Control>:

um novo recurso é fornecido no Gtk + (no momento em que este artigo está escrito no Git for Gtk + -2.24 e lançado no Gtk + -3.2.0) para usar o <Primary> descritor no lugar de <Control>aceleradores e ligações. Isso mapeará o acelerador para Command no OSX e Control para qualquer outra coisa. 1

De acordo com este commit :

gtk: permite especificar aceleradores de forma independente da plataforma. Introduzir <Primary>nas seqüências de aceleração, que são resolvidas para GDK_CONTROL_MASK no X11 / Win23 e GDK_META_MASK no quartzo.

é definido (junto com outros aceleradores) em 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>é uma coisa do gerenciador de janelas.
De acordo com este commit em metacity:

Queremos que a troca entre as janelas de um aplicativo seja uma operação facilmente acessível. A combinação de teclas conveniente e memorável é a tecla acima da tecla tab, mas o timbre dessa tecla não é consistente em diferentes layouts de teclado. Adicione um código que identifique a chave da geometria XKB e um nome mágico de chave "Above_Tab" que se refere a essa chave e alterne a ligação padrão do cycle_group para Above_Tab

Veja também este commit nos mutterarquivos de origem meta-accel-parse.cemeta-accel-parse.h

don_crissti
fonte
Puxa, que confuso. Você quer dizer que normalmente é uma coisa do GNOME, exceto que o Acima-Tab e o Primário são apenas para murmurar? (Ou seja, apenas mutter pode compreender descrições de atalho contendo esses?)
Robert Siemer
5

<Primary>normalmente significa (também conhecido como botão do Windows), mas pode ser redefinido (eu já o vi mapeado em alguns lugares). O wiki do GNOME diz :Ctrl SuperCtrlShift

A chave modificadora do sistema principal deve ser (Super / Windows / tecla Command).

Argh. Há alguma confusão aqui. Embora o Wiki do GNOME diga a "chave primária do modificador do sistema", isso pode ser de fato diferente da "chave primária". Duas postagens no fórum observam que a Primária é , como eu pensava originalmente. Há um bug (corrigido) de dois anos sobre confusão e o Primary arquivado no Ubuntu, que diz:CtrlCtrlcompiz

Anteriormente, costumávamos chamar a tecla de controle, <Control>mas isso agora foi alterado no GNOME; portanto, quando a tecla de controle é pressionada, <primary>é retornada. No compiz, definimos os atalhos de teclado como (por exemplo) <Control><Alt><Left>.

Fico com tentativa e erro: tente Ctrlprimeiro e depois Super.

muru
fonte
2
<Primary>não é Super, como você percebeu; infelizmente, isso é apenas uma expressão ambígua. Ainda assim, é muito é não definido como Ctrl- ou seja, não é no Mac OS X. O seu propósito é mapear a principal tecla modificadora do sistema host, que no OS X é Command. Isso permite que os aplicativos que usam GTK + obtenham automaticamente atalhos que correspondem aos aplicativos nativos do OS X (por exemplo, Command+ Zpara desfazer) e não são incomuns / dissonantes (como Ctrlé usado para coisas diferentes).
underscore_d
Esta resposta é muito confusa! <Primary>certamente significa <Control>( Ctrl) no contexto Gtk em não Macs e Command( ) em máquinas Mac. Por exemplo, sair Ctrl+qagora é mapeado automaticamente para ⌘+q. Além disso, a página wiki que você citou está falando apenas sobre <Super>nada a ver <Primary>.
Cas
@Cas bem, é bom saber que eles atualizaram o wiki.
Muru
Seria possível remapear Primário para Super em não quartzo (sem reconstrução)?
Edoardo Vacchi