diff options
| author | hans-christoph <hans-christoph@b9310e46-f624-0410-8ea1-cfbb3a30dc96> | 2008-08-08 14:17:44 +0000 | 
|---|---|---|
| committer | hans-christoph <hans-christoph@b9310e46-f624-0410-8ea1-cfbb3a30dc96> | 2008-08-08 14:17:44 +0000 | 
| commit | d19546d9c4ea5f2e7ec2ed35d5bb4e4c92f27503 (patch) | |
| tree | f652e442895f36e07d3bd725377869d24b326a4e | |
| parent | 9e47282fa70b939d5ddbcfa54cddd80ac093b457 (diff) | |
| download | neo-layout-d19546d9c4ea5f2e7ec2ed35d5bb4e4c92f27503.tar.gz neo-layout-d19546d9c4ea5f2e7ec2ed35d5bb4e4c92f27503.tar.bz2 neo-layout-d19546d9c4ea5f2e7ec2ed35d5bb4e4c92f27503.zip | |
Treiber für PLUM-Tastatur hinzugefügt (Linux)
git-svn-id: https://svn.neo-layout.org@732 b9310e46-f624-0410-8ea1-cfbb3a30dc96
| -rw-r--r-- | plum-tastatur/INSTALL.txt | 26 | ||||
| -rw-r--r-- | plum-tastatur/README.txt | 75 | ||||
| -rwxr-xr-x | plum-tastatur/enable-plum | 236 | 
3 files changed, 337 insertions, 0 deletions
| diff --git a/plum-tastatur/INSTALL.txt b/plum-tastatur/INSTALL.txt new file mode 100644 index 0000000..5efe8fd --- /dev/null +++ b/plum-tastatur/INSTALL.txt @@ -0,0 +1,26 @@ + +     Treiber zur Benutzung einer PLUM-Tastatur als Matrixtastatur +	       Hans-Christoph Wirth <hcw*at*gmx*dot*de> + +* Installation unter Linux + +  Der Treiber besteht aus einem Perlskript, welches die gerade aktive +  Belegung mittels xmodmap ausliest und verdreht wieder setzt.  Es +  gibt keine (zuverlässige) Methode zu verhindern, dass dieser Vorgang +  zweimal ausgeführt wird; das Ergebnis wäre eine unbenutzbare +  Tastatureingabe.  Daher sind Vorkehrungen zu treffen, im Fehlerfall +  eine nutzbare Tastaturbelegung etwa mit der Maus wiederherstellbar +  zu machen; ein Icon auf dem Desktop, welches einen Befehl der Art +  "xmodmap $HOME/.xmodmap" zur Ausführung bringt, ist dafür +  ausreichend. + +  1. Einstellen des gewünschten Layouts für die QWERT-Tastatur (mit +     xmodmap o.ä.) + +  2. Gemäß obiger Anleitung eine Strategie zum Zurückschalten +     zurechtlegen. + +  3. Das Skript "enable-plum" ohne Parameter aufrufen. + +  Zu Testzwecken kann "enable-plum -n" aufgerufen werden, was die +  Befehle nur anzeigt, aber nicht ausführt. diff --git a/plum-tastatur/README.txt b/plum-tastatur/README.txt new file mode 100644 index 0000000..37c005b --- /dev/null +++ b/plum-tastatur/README.txt @@ -0,0 +1,75 @@ + +     Treiber zur Benutzung einer PLUM-Tastatur als Matrixtastatur +	       Hans-Christoph Wirth <hcw*at*gmx*dot*de> + +* Was ist eine PLUM-Tastatur? + +  Der interessante Aspekt ist die physikalische Anordnung der Tasten. +  Während bei einer herkömmlichen Tastatur die Reihen horizontal +  gegeneinander versetzt liegen, bildet die PLUM-Tastatur eine Matrix, +  d.h. die Tastenspalten liegen streng gerade untereinander. + +  Für uns an der PLUM-Tastatur weniger interessant ist die Belegung +  der Tasten, die in der oberen Reihe das Wort PLUM und auf der +  Grundlinie die Wörter READONTHIS bildet. + +  Die Tastatur ist günstig und preiswert bei www.plum.bz zu beziehen +  und wird per USB-Kabel angeschlossen. + +* Wofür brauche ich einen Treiber? + +  Das PLUM-Layout ist fest verdrahtet, d.h. die Tastatur sendet +  verdrehte Scancodes.  Um ein Layout, welches auf einer herkömmlichen +  105-Tasten-PC-Tastatur läuft, mit der Plum-Tastatur zu nutzen, +  müssen die verdrehten Scancodes angepasst werden. + +* Kann ich PLUM nur mit NEO nutzen? + +  Die Nutzung ist völlig unabhängig von dem gewählten Layout.  Der +  Treiber sorgt nur dafür, dass sich die PLUM-Tastatur möglichst so +  verhält wie eine klassische QWERT-Tastatur. + +* Welche Einschränkungen bestehen? + +  Die PLUM-Tastatur hat weniger Tasten, und manche müssen umgeordnet +  werden, damit das Blindschreiben im Zentralen weiterhin ermöglicht +  wird.  Im Einzelnen: + +  - die Taste '^' links von der '1' wandert neben die rechte +    Shifttaste +  - die Taste '<' zwischen Shift und 'y' wandert nach unten +  - es gibt keine linke Windowstaste und keine Menü-Taste mehr +  - die Taste 'return' nimmt die linke Hälfte der Leertaste ein + +  Herkömmliche Tastatur + +     +---+   +---+---+---+---+ +---+---+---+---+ +---+---+---+---+ +     |esc|   |f1 |f2 |f3 |f4 | |f5 |f6 |f7 |f8 | |f9 |f10|f11|f12| +     +---+---+---+---+---+---+-+-+-+-+-+-+-+-+-+-+---+---+---+---+ +     | ^ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | ß | ' |  bsp  | +     +---+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---+ +     | tab | q | w | e | r | t | z | u | i | o | p | ü | + | ret | +     +-----++--++--++--++--++--++--++--++--++--++--++--++--++    | +     | lock | a | s | d | f | g | h | j | k | l | ö | ä | # |    | +     +----+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+----+ +     |shf | < | y | x | c | v | b | n | m | , | . | - |    shf   | +     +----+---++--+-+-+---+---+---+---+---+--++---+---++----+----+ +     |ctrl| win| alt|           spc          |agr | win|menu|ctrl| +     +----+----+----+------------------------+----+----+----+----+ + + +  PLUM-Belegung nach Installation des Treibers + +     +---+---+---+---+---+---+---+---+---+---+---+---+---+ +     |esc|f1 |f2 |f3 |f4 |f5 |f6 |f7 |f8 |f9 |f10|f11|f12| +     +---+---+---+---+---+---+---+---+---+---+---+---+---+ +     | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | ß | ' |bsp| +     +---+---+---+---+---+---+---+---+---+---+---+---+---+ +     |tab| q | w | e | r | t | z | u | i | o | p | ü | + | +     +---+---+---+---+---+---+---+---+---+---+---+---+---+ +     |lck| a | s | d | f | g | h | j | k | l | ö | ä | # | +     +---+---+---+---+---+---+---+---+---+---+---+---+---+ +     |shf| y | x | c | v | b | n | m | , | . | - |shf| ^ | +     +---+---+---+---+---+---+---+---+---+---+---+---+---+ +     |ctr| < |alt|    ret    |    spc    |agr|win|ctl| +     +---+---+---+-----------+-----------+---+---+---+     diff --git a/plum-tastatur/enable-plum b/plum-tastatur/enable-plum new file mode 100755 index 0000000..35de3af --- /dev/null +++ b/plum-tastatur/enable-plum @@ -0,0 +1,236 @@ +#!/usr/bin/perl -w + +# Enable PLUM to work as a standard pc keyboard +# Written 2008 by Hans-Christoph Wirth <hcw@at@gmx@dot@de> +# $Revision: $ +# $Date: $ +# +# This command modifies any current X keymap (which is assumed to be +# designed for use with an ordinary 105 key PC keyboard) so that it +# can be used (almost) identically on a connected PLUM keyboard (see +# www.plum.bz for information on that matrix-like keyboard). +# +# Usage:  +# +# 1. Setup your keyboard layout for your standard keyboard using xmodmap. +# 2. Read the warning below and prepare a recovery mechanism. +# 3. Run this script without any parameters. +# +#    Run with option "-n" to print the commands without executing them. +# +# Warning: +# +# There is no reliable way (that I am aware of) to determine the type +# of the currently active keyboard.  Hence we cannot prevent that you +# call this script twice, which will instantaneously switch keyboard +# input into a completely useless state.  To recover from that, you +# should prepare your desktop to run a recovery command (like 'xmodmap +# $HOME/your-standard.modmap') on a mouse click. +# +###################################################################### + +$XMODMAP = "/usr/bin/xmodmap"; + +# +# Options +# +$opt = shift || ""; +$noexec = $opt eq "-n" ? 1 : 0; +$P = $noexec ? "! " : ""; + +# +# Read transformation matrix +# +while (<DATA>) { +    ($plum, $pc) = split; +    $plum[$pc] = 0+ $plum; +} + +# +# Read and parse existing map +# +print "${P}reading existing keymap\n"; + +open (IN, "$XMODMAP -pke |") or die "read keyboard mapping failed\n"; +while (<IN>) { +    /^keycode\s+(\d+)\s+=\s+(.*)$/o or die "error: malformed line: $_\n"; + +    if ($plum[$1]) { +	push @clearkeys, "keycode $plum[$1] =\n"; +	push @setkeys, "keycode $plum[$1] = $2\n"; + +	push @report_keys, (split( ' ', $2, 2 ))[0]; +    } +} +close (IN); + +# +# Read and parse existing modifiers +# +print "${P}reading existing modifiers\n"; + +open (IN, "$XMODMAP -pm |") or die "read modifier list failed\n"; +while (<IN>) { +    unless (/^(shift|lock|control|mod\d)\s*(.*)$/) { +	next; +    } + +    ($mod, $info) = ($1, $2); + +    @infos = (); +    for (split( /,/, $info )) { +	s/\(\S*\)//; +	next if /^\s*$/; +	push @infos, $_; +    } + +    push @clearmodifiers, "clear $mod\n"; +    push @report_clearmodifiers, "$mod "; + +    if (@infos) { +	push @setmodifiers, "add $mod = @infos\n"; +	push @report_setmodifiers, "$mod "; +    } +} +close (IN); + +# +# Now perform the changes using two external calls. +# + +print "${P}clearing " . @report_keys . " keys... @report_keys\n"; +print "${P}clearing " . @report_clearmodifiers .  +    " modifiers... @report_clearmodifiers\n"; + +if ($noexec) { +    open (OUT, "| cat") or die "clear map failed\n"; +} else { +    open (OUT, "| $XMODMAP -") or die "clear map failed\n"; +} + +print OUT @clearkeys; +print OUT @clearmodifiers; + +close (OUT) or die "clear map failed\n"; + +print "${P}setting all keys and modifiers @report_setmodifiers\n"; + +if ($noexec) { +    open (OUT, "| cat") or die "set new map failed\n"; +} else { +    open (OUT, "| $XMODMAP -") or die "set new map failed\n"; +} + +print OUT @setkeys; +print OUT @setmodifiers; + +close (OUT) or die "set new map failed\n"; + +# The data section lists the plum keyboard scancodes ordered from left +# to right and top to bottom.  Each line describes one key position in +# the form 'plum code' 'pc code'.  Since the keyboard is short of a +# few keys we have to move some keys in the periphery: this affects in +# particular +# +# - the key to the left of '1' moves down next to right shift +# - the key to the right of left shift moves down; there is no longer  +#   a left windows key +# - return key moves down to space key, obviously +# +# As an example, the standard German 105 key layout is mapped as +# follows: +# +# +# regular pc layout +# +#     esc     f1  f2  f3  f4    f5  f6  f7  f8    f9  f10 f11 f12 +#      ^   1   2   3   4   5   6   7   8   9   0   ß   '   -bsp- +#      tab   q   w   e   r   t   z   u   i   o   p   ü   +   ret +#      lock   a   s   d   f   g   h   j   k   l   ö   ä   # +#     shf   <   y   x   c   v   b   n   m   ,   .   -   ---shf--- +#     ctr   win   alt  ---------spc---------  agr   win  men  ctr +# +# +# plum mapping +# +#     esc f1  f2  f3  f4  f5  f6  f7  f8  f9  f10 f11 f12 +#      1   2   3   4   5   6   7   8   9   0   ß   '  bsp +#     tab  q   w   e   r   t   z   u   i   o   p   ü   + +#     lck  a   s   d   f   g   h   j   k   l   ö   ä   # +#     shf  y   x   c   v   b   n   m   ,   .   -  shf  ^ +#     ctr  <  alt  ---ret---   ---spc---  agr win ctr + +__DATA__ +9 9 +67 67 +68 68 +69 69 +70 70 +71 71 +72 72 +73 73 +74 74 +75 75 +76 76 +95 95 +96 96 +49 10 +10 11 +11 12 +12 13 +13 14 +14 15 +15 16 +16 17 +17 18 +18 19 +19 20 +20 21 +21 22 +47 23 +33 24 +46 25 +30 26 +58 27 +23 28 +22 29 +54 30 +41 31 +42 32 +24 33 +48 34 +51 35 +36 36 +50 66 +27 38 +26 39 +38 40 +40 41 +32 42 +57 43 +28 44 +43 45 +31 46 +39 47 +62 48 +61 51 +66 50 +45 52 +44 53 +55 54 +56 55 +59 56 +60 57 +25 58 +53 59 +29 60 +52 61 +34 62 +35 49 +37 37 +115 94 +64 64 +65 65 +113 113 +116 116 +109 109 | 
