Eine ziemlich universelle Tastatur

Wie man sich unter linux leicht eine Tastaturfunktionalität basteln kann, die es einem ermöglicht, geschützte Bindestriche, Leerzeichen, weiche Trenner, deutsche, tschechische, spanische, französische, rumänische, slowakische, ungarische, polnische und anderssprachige Texte ebenso wie etliche mathematische Zeichen direkt einzugeben, ohne über „Sonderzeichen‑Einfügen‑Dialog­fenster“ gehen zu müssen...

Bastelanleitung und Erklärung

Voraussetzung ist nur ein unicode‑fähiges X‑System und das sollte heute eigentlich jedes linux sein (und man muss xmodmap installiert haben). (Unicode ist ein Zeichensystem, welches für fast alle Schriftzeichen und Symbole der Welt eine eindeutige Nummer vergibt. Man kann also so ziemlich alle Texte der Welt als Zahlenfolge abspeichern und – vorausgesetzt, man hat eine Schriftart, für die diese Zeichen definiert sind – auch richtig darstellen.)

Man speichert zunächst seine Standard-Tastaturbelegung mit dem Befehl

xmodmap -pke > ~/.Xmodmap.standard
ab.
Dann speichert man die hier angebotene Datei (utf-8-kodierte Textdatei) im eigenen home-Verzeichnis unter dem Namen .Xmodmap.spezial ab.
Nun kann man jederzeit die gewünschte Tastaturbelegung mit den Befehlen
xmodmap ~/.Xmodmap.spezial
bzw.
xmodmap ~/.Xmodmap.standard
laden.

Hat man die .Xmodmap.spezial‑Datei geladen, sind den Tasten der Tastatur die Zeichen so zugeordnet, wie es unten dargestellt ist.
Das Schema zeigt für die meisten Tasten der Tastatur vier bis sechs Zeichen. Wenn man einfach die Taste drückt, erscheint das links unten angegebene Zeichen. Das links oben abgebildete erreicht man durch gleichzeitiges Drücken der Umschalttaste (“shift”) und der jeweiligen Taste. Das Zeichen in der Mitte oder rechts unten entspricht der Eingabe [Alt Gr]+[Taste] und rechts oben schließlich [Alt Gr]+[shift]+[Taste].*) Das Zeichen rechts unten entspricht ggf. der Eingabe [rechte Fenstertaste]+[Taste] und rechts oben schließlich [rechte Fenstertaste]+[shift]+[Taste].*)

*) Vorausgesetzt, der Taste [Alt Gr] wurde als Funktion “Mode_switch” und der [rechten Fenstertaste] “ISO_Level3_Shift” zugewiesen.

Zu beachten sind die kombinierenden Zeichen. Es gibt erstens sogenannte „tote Tasten“ (“dead keys”) und zweitens kombinierende unicode‑Zeichen.
Zu Zweitens: Man kann beispielsweise ein c mit Häkchen (č) eingeben, indem man zunächst das c eingibt und dann [rechte Fenstertaste]+[4] drückt. Ein (großes) s mit Cedilla (Ş) erhält man sinngemäß durch Nacheinandereingabe von S (also [shift]+[s]) und [rechte Fenstertaste]+[z]. Gespeichert werden zwei Zeichen die übereinander dargestellt werden müssen.
Zu Erstens: Besser ist die Verwendung der dead keys. hier gibt man zuerst den Akzent, das Cedilla o.ä. ein und dann den Buchstaben, zu dem das diakritische Zeichen treten soll. Es wird dann ‒ falls ein solches Zeichen vorhanden und die Kombination definiert ist ‒ das kombinierte Zeichen gebildet und als ein Zeichen gespeichert und dargestellt.
(Wenn es nicht funktioniert, kann es daran liegen, dass die gewünschte Kombination nicht definiert ist oder dass es kein solches Zeichen gibt. Falls das kombinierte Zeichen nicht vorhanden ist, muss man auf das kombinierende Unicode‑Zeichen ausweichen, welches mit allen Buchstaben/Zeichen kombinierbar sein sollte. Falls die Komposition nicht definiert ist, kann man das ggf. anpassen, siehe: Definieren von Kompositionen.)
In der hier vorgestellten Tastatur sind, falls beides exisitert, die dead keys immer „vor“ den kombinierenden unicode-Zeichen positioniert. (Wenn beides existiert, liegt das Zeichen auf einer Taste und ist als dead key über Alt Gr erreichbar, als kombinierendes Unicode‑Zeichen hingegen über die rechte Fenstertaste. Das Unterkomma ist nur als kombinierendes Unicode‑Zeichen (also nach t,T, s oder S einzugeben) verfügbar.

Man kann das Tastaturlayout über die .Xmodmap‑Datei nahezu beliebig verändern. (Ideen dazu liefert auch http://neo-layout.org/neo_de.xmodmap)

In einer Xmodmap‑Datei werden die Zeichen den Tasten folgendermaßen zugewiesen:

Jede Taste hat eine Nummer, den “keycode”. (Man kann die keycodes seiner Tastatur herausfinden, indem man das Programm xev aufruft, dann der Reihe nach alle Tasten drückt und aus der Ausgabe von xev die keycodes ermittelt.)

Die Xmodmap‑Datei hat nach dem Gleichheitszeichen (=) bis zu acht Spalten. In der ersten Spalte wird das Zeichen (bzw. die Funktion) definiert, welches dem Drücken der Taste mit dem jeweiligen keycode zugewiesen wird. In der zweiten Spalte dasjenige, welches beim Drücken von [shift]+[Taste] erzeugt werden soll. Das Zeichen, welches in der dritten Spalte angegeben wird, erzeugt man, indem die Taste mit der Funktion “Mode_switch” gleichzeitig mit der Taste gedrückt wird. Das in der vierten wird durch die Mode_switch‑Taste, die Umschalttaste und die Taste hervorgerufen.
Die fünfte Spalte ermöglicht die Zuordnung von Zeichen (bzw. Funktionen) zum Drücken der Taste bei gleichzeitigem Drücken der Taste mit der “ISO_Level3_Shift”‑Funktion. Im Beispiel unten ist die “ISO_Level3_Shift”‑Funktion auf die (überflüssige) „rechte Fenster‑Taste“ gelegt.

Manche Zeichen haben einen Namen, über den sie definiert werden können. Man kann aber auch alle Zeichen mit ihrer Nummer aus dem unicode‑System angeben. Das geschieht in der Form 0x01nmijkl, wobei nmijkl die unicode-Zeichennummer (in hexadezimaler Darstellung) ist. (Hexadezimal heißt, dass die Basis des Positionssystems nicht 10, sondern 16 ist. Es gibt also auch 16 Ziffern, auf 0 bis 9 folgen noch a bis f.) Um die unicode‑Nummern von Zeichen herauszufinden, bietet sich das Programm gucharmap an.

Eine gebräuchliche deutsche Tastatur sieht hingegen so aus: Tastaturlayout_de.pdf.
Davon oder von der hier vorgestellten Tastenbelegung ausgehend kann man mit OpenOffice ein der eigenen Xmodmap‑Datei entsprechendes Schema erstellen.

Eine „universelle“ Tastaturbelegung für viele europäische Sprachen (und etwas Mathe)

Eine zu diesem Tastaturlayout passende .Xmodmap‑Datei findet sich hier.

Leider ist die Darstellung hier fehlerhaft. Schicker sieht es im pdf aus und auch zum Ausdrucken ist dieses Format geeigneter.

 Esc

9



 F1

67

 F2

68

 F3

69

 F4

70

 F5

71

 F6

72

 F7

73

 F8

74

 F9

75

 F10

76

 F11

95

 F12

96

 

°

¬

^

°

̊

49

!

¡

1

˘

̆

10

"

 ²


2

"

̈

11

§

 ³

3

`

̀

12

$

¤

4

ˇ

̌

13

%

5

'

́

14

&

6

^

̂

15

/

7

{


16

(

8

[


17

)

9

]


18

=

0

}


19

?

¿

ß

\


20

`

±

´

˝

̋

21

rückwärts löschen/ backspace


22

Tab

 |<---

 --->|

23

Q

Ω


q

@


24

W

Ł

ω

w

ł

25

E

ε

e

η

26

R

®

ρ

r

˛

̨

27

T

τ

t

̦

θ

28

Z

Δ

ζ

z

¸

̧

29

U

 ̸


u

  ̷


30

I

ι

i

ı

\

31

O

Ø

ω

o

ø

ο

32

P

π

p

π

ψ

33

Ü

×


ü

·


34

*

÷


+

~


35

Zeilenende/return

   |

   |

   |

   |

<-

36

Großbuch­staben/

||   caps lock

V

66

A

Α

α

a

α


38

S

σ

s

̦

̦

39

D

δ

δ

d

˙

̇

40

F

φ

f

.

̣

41

G

γ

g

~

̃

42

H

η

h

̱

χ

43

J

ι

j

̕

̕

44

K

κ

k


45

L

λ

l


46

Ö

Œ


ö

œ


47

Ä

Æ


ä

æ


48

'


#


51


Umschalt/

^      shift

||

50

>

¦


<

|


94

Y

γ

υ

y

«

ψ

52

X


ξ

x

»

χ

53

C

©

χ

c

¢


54

V

ν

v


55

B

β

b


56

N

ν

n

η

57

M

µ

m

µ

58

;

,

59

:

.

60

_

­

-

 

61

Umschalt/

^      shift

||

62

 Strg/

 Ctrl


37

Fenster/

windoof

≈H

115

 Alt


64

geschütztes ~/ non breaking ~

nullbreite dehnbare Leere

Leerzeichen/ space

geschütztes ~/ non breaking ~


65

 Alt Gr


113

Fenster/

windoof

≈H

116

Menü/

menu

 E|\

117

 Strg/

 Ctrl


109

 

113: zweite Spalte (mode_switch)

116: dritte Spalte (iso_level3_shift)


61: Minus bzw. Trennstrich,
Unterstrich,
geschützter Bindestrich,
weicher Trennstrich,

57: Gedankenstrich (m Strich)

65: Leerzeichen, geschütztes Leerzeichen / non breaking space und dehn­barer Zwischenraum (zunächst) ohne Breite (für Blocksatz)

59 und 60: deutsche Gänsefüß­chen („99 unten“ und „66 oben“)

60 engl. Gänsefüß­chen („66 und 99 oben“)

55 und 56: einfache deutsche An /Ausführungszeichen („9 unten“ und „6 oben“)

56: einfache englische An /Ausführungszeichen („6 und 9 oben“)


kombinierend:

49: Kringel/ ring above

10: Brevis/ breve

11: Diäresis

12: schwerer Akzent / grave

13: Häkchen / caron

14: akuter/spitzer Akzent / acute

15: Zirkumflex Akzent / circumflex

21: doppelter akuter/spitzer Akzent / double acute

40: Überpunkt / dot above

41: Unterpunkt / dot below


42: Tilde


43: Unterstreichung / low line

44: Oberkomma rechts / comma above right


27: Ogonek

39: Unterkomma / comma below

(28: Unterkomma / comma below)

29: Cedilla


30: kleiner und großer Schrägstrich


31: kleines i ohne Punkt / dotless i

106
107

Einfg
Entf

Insert
Delete

97
103

Pos1
Ende

Home
End

99
106

Bild↑
Bild↓

Prior
Next

98
104


up
down

100
102


left
right


Leider kann es passieren, dass eine Schriftart nicht alle Zeichen enthält. Es gibt auch Programme, die unicode (noch) nicht richtig umsetzen können. (Beispielsweise zeigte mir quanta+ beim Erstellen/Bearbeiten einer html‑Datei statt eines geschützten Bindestrichs nur ein Leerzeichen, firefox zeigte dann aber an dieser Stelle den Bindestrich.)