• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[GELÖST] Windows-Taste --> Meta oder Super?

Moinsen!!

Gerade versuche ich, einige neue Tastenkürzel für KDE 4.4.4 zu definieren...und bin ein wenig verwundert, wie KDE die Windows-Taste nennt: Erst heißt sie «Super», dann «Meta» (heißt die Alt-Taste unter X11 nicht so??), dann wieder «Super», dann wieder «Meta». Und dann wären noch die geheimnisvollen Hotkeys auf meiner Cherry CyMotion Master Linux, die unter KDE meist mit «Starten (1)» tituliert werden, von X11 (via xev) nach dem Schema «XF86Launch***» und in einer Gtk#-Anwendung nur unverständliche numerische Codes von sich geben.

Nun meine Fragen: Hat das negative Auswirkungen, wenn die Windows-Taste mal so genannt wird und mal so? Und: Eine der Spezialtaste würde ich gerne zur Hyper-Taste erküren /* bin Tastenkürzel-Fetischist :D */. Dazu habe ich meine Xmodmap-Datei um folgende Zeilen ergänzt:

Code:
!! Fifth example: Make one of these lousy hotkeys on a Cherry CyMotion Master
!! Linux doing Hyper.
keysym XF86Launch3 = Hyper_R
add    Hyper       = Hyper_R

Nur zeigt die Maßnahme keine Wirkung: «Launch irgendwas» bleibt «Launch irgendwas» und mutiert nicht zur Hyper-Taste. :(

Was mache ich da...?
 

whois

Ultimate Guru
Strate doch mal xev.
Hier wird die Taste als diese erkannt.

Code:
KeyRelease event, serial 34, synthetic NO, window 0x3600001,
    root 0x13b, subw 0x0, time 893750, (279,805), root:(283,829),
    state 0x50, keycode 115 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False
 
OP
generalmajor

generalmajor

Hacker
OK, bei mir sagt xev deutlich mehr, nämlich:

Code:
KeyRelease event, serial 34, synthetic NO, window 0x7000001,
    root 0x13c, subw 0x0, time 1249319, (548,742), root:(552,765),
    state 0x50, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes:                                      
    XFilterEvent returns: False                                       

KeyPress event, serial 34, synthetic YES, window 0x7000001,
    root 0x13c, subw 0x0, time 1460586740, (257,0), root:(1,0),
    state 0x0, keycode 37 (keysym 0xffe3, Control_L), same_screen NO,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyPress event, serial 34, synthetic YES, window 0x7000001,
    root 0x13c, subw 0x0, time 1460586740, (257,0), root:(1,0),
    state 0x4, keycode 50 (keysym 0xffe1, Shift_L), same_screen NO,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyPress event, serial 34, synthetic YES, window 0x7000001,
    root 0x13c, subw 0x0, time 1460586740, (257,0), root:(1,0),
    state 0x5, keycode 29 (keysym 0x5a, Z), same_screen NO,
    XLookupString gives 1 bytes: (1a) "▒"
    XmbLookupString gives 1 bytes: (1a) "▒"
    XFilterEvent returns: False

KeyRelease event, serial 34, synthetic YES, window 0x7000001,
    root 0x13c, subw 0x0, time 1460586740, (257,0), root:(1,0),
    state 0x5, keycode 29 (keysym 0x5a, Z), same_screen NO,
    XLookupString gives 1 bytes: (1a) "▒"
    XFilterEvent returns: False

KeyRelease event, serial 34, synthetic YES, window 0x7000001,
    root 0x13c, subw 0x0, time 1460586740, (257,0), root:(1,0),
    state 0x5, keycode 37 (keysym 0xffe3, Control_L), same_screen NO,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyRelease event, serial 34, synthetic YES, window 0x7000001,
    root 0x13c, subw 0x0, time 1460586740, (257,0), root:(1,0),
    state 0x1, keycode 50 (keysym 0xffe1, Shift_L), same_screen NO,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False

Gehe ich aber in systemsettings und hämmere dort ein Tastenkürzel ein, beginnt es mit META und nicht mit SUPER. Das wird wohl auch der Grund sein, warum bei mir die Compose-Taste eine Zeit lang nicht gefunzt hat, bis ich «Multi_key» auf «Meta_R» und «Super_R» mappte. :D

Bleibt noch die Sache mit der Hyper-Taste /* Nö, ich bin kein EMACSer, bin aber trotzdem auf Tastaturkürzel scharf!! */: Wie schon erwähnt, hat mein Xmodmap-Eintrag nicht zum Erfolg geführt. Irgendwelche Tipps?
 
OP
generalmajor

generalmajor

Hacker
Nach ein paar Versuchen und Updates wird's ganz prickelnd: Meine linke Windows-Taste wird jetzt von xev als META erkannt, die rechte als SUPER. Die Menü-Taste ist jetzt ein MULTI_KEY und funzt als ganz normale Compose-Taste. Also ist jetzt wenigstens Problem #1 gelöst. :D

Einen Hinweis, wie ich eine Hyper-Taste einrichte, fand ich in den Systemeinstellungen, wo eine Option namens «Hyper-Taste den Windows-Tasten zuordnen» existiert. Wenn es jetzt eine Option gäbe, Hyper irgendeinem Hotkey zuzuordnen, wäre ich richtig happy. 8)
 
OP
generalmajor

generalmajor

Hacker
Ich exhumier mal diesen Uralt-Thread, denn nach zahlreichen Irrungen und Wirrungen habe ich es tatsächlich geschafft, zwei Multimediatasten zu Hyper-Tasten zu machen. Hyper ist ein Modifier, von denen Linux 8 Stück hat:

Code:
jacek@veteran:~> xmodmap -pm
xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3        
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xd2)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

Meta und Alt mappen beide auf Mod1, lösen also die gleichen Tastenkürzel aus.

Mod3 war in grauer Vorzeit Rollen ↑, wird aber nicht mehr benützt. Also wird es für Hyper requiriert. Mit xev werden die Keycodes der künftigen Hyper-Tasten ermittelt.

Hernach muss die Datei /usr/share/X11/xkb/symbols/inet editiert werden: Man sucht einen Eintrag namens <Ixxx> (xxx = Keycode der künftigen Hyper-Taste) und schreibt in die eckige Klammer dahinter:

Code:
Hyper_R, Hyper_R, Hyper_R, Hyper_R
(bzw. Hyper_L für eine allfällige linke Hyper-Taste)

Dazu kommen noch zwei Zeilen dieser Machart, welche die beiden Hyper-Tasten zu Mod3-Tasten erklären:

Code:
  modifier_map Mod3   { Hyper_L };
  modifier_map Mod3   { Hyper_R };

Nun sollte xmodmap -pm Folgendes ausgeben:

Code:
jacek@veteran:~> xmodmap -pm
xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3        Hyper_R (0x9c),  Hyper_L (0xb9)
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xd2)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

Problematisch ist, dass Hyper_L nach wie vor an mod4 gebunden ist wie die Windows-Tasten auch, doch dafür gibt es:

Code:
jacek@veteran:~> xmodmap -e "remove Mod4 = Hyper_L"

Ich würde nur gerne wissen, wie man diesen Einzeiler automatisch beim grafischen Login (xdm) abarbeiten kann…

Nach diesem Parcours steht mit der Hyper-Taste eine weitere Quelle für Tastenkombinationen zur Verfügung. Im Anpassen-Dialog seiner Anwendung (und natürlich von GNOME oder KDE) kann man nun passende Shortcuts erstellen.
 
Oben