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

rechte Win- Taste als 2. Alttaste belegen

anduna

Member
Hi,
habe mich pflichtgemäß durch die Artikel zum Thema gewühlt, bin aber noch nicht ganz schlau geworden:
Wie gesagt möchte ich gerne aus der rechten Win- Taste eine zusätzliche Alttaste machen. Wäre für mich als Linkshänderin eine echte Erleichterung. Möglichst so, dass ich sie auch auf der Konsole nutzen kann, nicht bloß im KDE.
Ich arbeite mit Suse 10. 0.
Kann mir da jemand sagen, wie ich vorgehen muß? Danke i.V.
 

regexer

Advanced Hacker
Tastaturbelegung war bei mir noch nie ein Problem. Ich würde mit
Code:
man termcap
anfangen, da dort meines Wissens nach bei allen Unixen die Tastenbelegungen festgelegt werden. Ob das bei den aktuelleren SuSE-Distris immer noch so ist, weiß ich nicht mit Sicherheit. Einfach mal versuchen...
 
Hatte mir mal das folgende aufgeschrieben. Übersetze es mal nicht.
Hatte damals allerdings "Funktionen" über unbelegte Tasten
gestartet.

Ciao,

Haveaniceday



I like to use my special keys under Linux. The new internet keyboards
have some spare keys, e.g. to start applications faster.

How to install/use:
  • Check if the key is recognized by the OS
    -log in as root
    -tail -f /var/log/messages
    -press the keys an look for "special" keys/messages like:
    Code:
    May 11 15:19:27 xxx kernel: atkbd.c: Unknown key pressed (translated set 2, code 0x9b on isa0060/serio0).
    May 11 15:19:27 xxx kernel: atkbd.c: Use 'setkeycodes e01b <keycode>' to make it known.
    May 11 15:19:28 xxx kernel: atkbd.c: Unknown key pressed (translated set 2, code 0x95 on isa0060/serio0).
    May 11 15:19:28 xxx kernel: atkbd.c: Use 'setkeycodes e015 <keycode>' to make it known.
  • Add the keys to the setup at system start. I did for the keys:
    /etc/init.d/kbd section start schrieb:
    setkeycodes e023 140
    setkeycodes e01f 141
    setkeycodes e01a 142
    setkeycodes e01e 143
    setkeycodes e013 144
    setkeycodes e014 145
    setkeycodes e015 146
    setkeycodes e01b 147
    Hints: dumpkeys shows some "free keycodes".
    These keycodes are not used lateron. "X" is using different one.
  • Run the setkeycodes manual if you do not want to restart.
  • Look for the detected keyboard: my keyboard is detected as "hpi6"
    /etc/X11/XF86Config section InputDevice kbd schrieb:
    Section "InputDevice"
    Driver "kbd"
    Identifier "Keyboard[0]"
    Option "Protocol" "Standard"
    Option "XkbLayout" "de"
    Option "XkbModel" "hpi6"
    Option "XkbRules" "xfree86"
    Option "XkbVariant" "nodeadkeys"
    EndSection
  • run "xev" to find the X11 keycodes. This key got e.g. "keycode 161"
    Code:
    KeyRelease event, serial 30, synthetic NO, window 0x2c00001,
        root 0x3f, subw 0x0, time 9835279, (-539,223), root:(139,247),
        state 0x10, keycode 161 (keysym 0xff6a, none), same_screen YES,
        XLookupString gives 0 bytes:
  • Look for the X11-mapping "standard code => keycode"
    Found e.g. for my keycode 161: I21
    /etc/X11/xkb/keycodes/xfree86 schrieb:
    ...
    <I20> = 160;
    <I21> = 161;
    <I22> = 162;
    ...
  • Add your settings your personal settings to the XkbModel section, hpi6 in my case.
    /etc/X11/xkb/symbols/inet schrieb:
    partial alphanumeric_keys
    xkb_symbols "hpi6" {
    name[Group1]= "Hewlett-Packard Internet Keyboard";
    key <I21> { [ Help ] };
    key <K66> { [ XF86HomePage ] };
    key <I5F> { [ XF86Search ] };
    key <I63> { [ XF86Forward ] };
    key <K67> { [ XF86Launch2 ] };
    key <K68> { [ XF86Launch3 ] };
    key <K69> { [ XF86Launch4 ] };
    key <I13> { [ XF86WWW ] };
    };
    I took some "unused codes" from other section, e.g. XF86Launch2 , Help and assigned them to my "unsued" keys
  • After a X-Server restart you are able to assign these keys to e.g. KDE-Menu action like "xterm on od-linux", "start mailer",...

Best regards,

Haveaniceday
 
OP
A

anduna

Member
[*]run "xev" to find the X11 keycodes.

Hi, habe den keycode herausgefunden (116) und versucht, ihn in eine DAtei
/usr/share/kbd/keymaps/i386/qwertz/meinemap.gz
einzutragen:

keycode 116 = F100
string F100 = "Alt"
und dann loadkeys meinemap.gz ausgeführt.
Aber dann meldet er: syntax error in meinemap.gz

und ich weiß nicht, wo dieser liegen kann. Die linke Alttaste ist als Alt_L geführt. Also habe ich "Alt_R" versucht, geht aber auch nicht.
 
".gz" ist eine gezippte Datei. Da geht das laden nicht mit.

Die Taste sollte schon belegt sein.

KeyRelease event, serial 31, synthetic NO, window 0x3e00002,
root 0x1e6, subw 0x0, time 20686938, (958,500), root:(962,520),
state 0x50, keycode 116 (keysym 0xffec, Super_R), same_screen YES,
XLookupString gives 0 bytes:

=> grep 116 /etc/defkeymap.map
keycode 116 = Do
shift altgr keycode 116 = VoidSymbol
altgr control keycode 116 = VoidSymbol
shift alt keycode 116 = VoidSymbol
altgr alt keycode 116 = VoidSymbol

=> grep 116 /etc/X11/xkb/keycodes/xfree86
<RWIN> = 116;
 
OP
A

anduna

Member
haveaniceday schrieb:
".gz" ist eine gezippte Datei. Da geht das laden nicht mit.

Die Taste sollte schon belegt sein.
Ist sie auch, so wie du geschrieben hast als Super_R:

KeyRelease event, serial 31, synthetic NO, window 0x3e00002,
root 0x1e6, subw 0x0, time 20686938, (958,500), root:(962,520),
state 0x50, keycode 116 (keysym 0xffec, Super_R), same_screen YES, XLookupString gives 0 bytes:

Dann habe ich wohl an der falschen Stelle gesucht? Im Verzeichnis /usr/share/kbd/keymaps/i386/qwertz sind alle dateien gezippt.

Die etc/X11/xkb/keycodes/xfree86 ist sicher für den graphischen Modus zuständig. Ich möchte die Taste natürlich auch auf der Konsole nutzen können.

Ist dann wohl /etc/defkeymap.map die richtige Datei, um die Veränderung einzugeben?

In dieser steht es so wie du geschrieben hast für die rechte Win Taste:
keycode 116 = Do
shift altgr keycode 116 = VoidSymbol
altgr control keycode 116 = VoidSymbol
shift alt keycode 116 = VoidSymbol
altgr alt keycode 116 = VoidSymbol

Ich wollte ihr einen Namen zuweisen, also:

keycode 116 = F100
string F100 = "Alt_R" ?
 
Oben