summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/keystroke
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/keystroke
Initial commit
Diffstat (limited to 'macros/latex/contrib/keystroke')
-rw-r--r--macros/latex/contrib/keystroke/README13
-rw-r--r--macros/latex/contrib/keystroke/key-test.pdfbin0 -> 38874 bytes
-rw-r--r--macros/latex/contrib/keystroke/key-test.tex57
-rw-r--r--macros/latex/contrib/keystroke/keystroke.sty200
-rw-r--r--macros/latex/contrib/keystroke/keystroke_left.eps169
-rw-r--r--macros/latex/contrib/keystroke/keystroke_left.pdfbin0 -> 1372 bytes
-rw-r--r--macros/latex/contrib/keystroke/keystroke_middle.eps113
-rw-r--r--macros/latex/contrib/keystroke/keystroke_middle.pdf47
-rw-r--r--macros/latex/contrib/keystroke/keystroke_right.eps179
-rw-r--r--macros/latex/contrib/keystroke/keystroke_right.pdfbin0 -> 1390 bytes
10 files changed, 778 insertions, 0 deletions
diff --git a/macros/latex/contrib/keystroke/README b/macros/latex/contrib/keystroke/README
new file mode 100644
index 0000000000..70d6df45cd
--- /dev/null
+++ b/macros/latex/contrib/keystroke/README
@@ -0,0 +1,13 @@
+
+The LaTeX package `keystroke' provides macros for the graphical
+representation of the keys on a computer keyboard. `keystroke' is
+based on macros which were used in a previous edition of the Linux
+manual published by the SuSE G.m.b.H. distributor, and is licensed
+under the GPL.
+
+Please send enhancements and corrections to:
+
+Rolf Niepraschk, niepraschk@ptb.de
+
+2000/11/09
+
diff --git a/macros/latex/contrib/keystroke/key-test.pdf b/macros/latex/contrib/keystroke/key-test.pdf
new file mode 100644
index 0000000000..4eec0e5b08
--- /dev/null
+++ b/macros/latex/contrib/keystroke/key-test.pdf
Binary files differ
diff --git a/macros/latex/contrib/keystroke/key-test.tex b/macros/latex/contrib/keystroke/key-test.tex
new file mode 100644
index 0000000000..5c892738cd
--- /dev/null
+++ b/macros/latex/contrib/keystroke/key-test.tex
@@ -0,0 +1,57 @@
+
+% Rolf Niepraschk, niepraschk@ptb.de, 2000/10/29
+
+\documentclass{article}
+\usepackage{array}
+
+\usepackage{keystroke}
+%\usepackage[french]{keystroke}
+%\usepackage[spanish]{keystroke}
+%\usepackage[german]{keystroke}
+
+\listfiles
+
+\setlength\extrarowheight{.5ex}
+
+\newcommand*{\BSL}{\symbol{`\\}}
+\newcommand*{\LB}{\symbol{`\{}}
+\newcommand*{\RB}{\symbol{`\}}}
+
+\begin{document}
+
+\begin{center}
+
+ \textbf{\Large The keystroke macros} \bigskip
+
+ \begin{tabular}{@{} >{\ttfamily\BSL}c c >{\ttfamily\BSL}c c @{}}
+
+ \multicolumn{1}{@{} c}{\textbf{macro}} &
+ \multicolumn{1}{c}{\textbf{result}} &
+ \multicolumn{1}{c}{\textbf{macro}} &
+ \multicolumn{1}{c @{}}{\textbf{result}}\\ \hline
+
+ Spacebar & \Spacebar & Enter & \Enter \\
+ Return & \Return & Esc & \Esc \\
+ BSpace & \BSpace & Tab & \Tab \\
+ Alt & \Alt & AltGr & \AltGr \\
+ Del & \Del & Shift & \Shift \\
+ PgUp & \PgUp & PgDown & \PgDown \\
+ End & \End & Ctrl & \Ctrl \\
+ Home & \Home & Ins & \Ins \\
+ UArrow & \UArrow & DArrow & \DArrow \\
+ LArrow & \LArrow & RArrow & \RArrow \\
+ PrtSc & \PrtSc & Scroll & \Scroll \\
+ Break & \Break & NumLock & \NumLock \\[1ex]
+
+ \hline
+
+ keystroke\LB A\RB & \keystroke{A} & keystroke\LB Z\RB & \keystroke{Z} \\
+ keystroke\LB F1\RB & \keystroke{F1} & keystroke\LB F10\RB & \keystroke{F10}
+
+ \end{tabular}
+
+\end{center}
+
+\end{document}
+
+
diff --git a/macros/latex/contrib/keystroke/keystroke.sty b/macros/latex/contrib/keystroke/keystroke.sty
new file mode 100644
index 0000000000..9f2d525750
--- /dev/null
+++ b/macros/latex/contrib/keystroke/keystroke.sty
@@ -0,0 +1,200 @@
+%%
+%%% Author 1997 Werner Fink <werner@suse.de>
+%%% Copyright (c) 1997 SuSE GmbH Nuernberg, Germany.
+%%
+%% Based on `susemac.sty' v 1.30 1997/10/14
+%% Some modifications by Rolf Niepraschk <niepraschk@ptb.de>, 2000/10/29
+%%
+%% keystroke.sty is free software; you can redistribute it and/or modify
+%% it under the terms of the GNU General Public License as published by
+%% the Free Software Foundation; either version 2, or (at your option)
+%% any later version.
+%%
+%% keystroke.sty is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%% GNU General Public License for more details.
+%%
+%% You should have received a copy of the GNU General Public License
+%% along with keystroke.sty; see the file COPYING; if not, write to
+%% the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+%% Boston, MA 02111-1307 USA.
+%%
+
+% Please send corrections and enhancements
+% to Rolf Niepraschk <Rolf.Niepraschk@gmx.de>.
+
+% Changes:
+% v1.3, 2001/10/27; Loading the graphics package only if needed.
+% All unknown options are options for `graphics'.
+% v1.4, 2001/12/14; New and corrected definitions for spanish.
+% v1.5, 2003/08/15; Fix a bug with the global option "english".
+% New optin "ngerman". RN
+% v1.6, 2010/04/23; New and corrected definitions for french.
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{keystroke}[2010/04/23 v1.6 3D keystrokes (SuSE GmbH/RN)]
+
+\RequirePackage{graphics}
+
+\newcommand*{\Enter}{}
+\newcommand*{\Del}{}
+\newcommand*{\Ins}{}
+\newcommand*{\Esc}{}
+\newcommand*{\Shift}{}
+\newcommand*{\Ctrl}{}
+\newcommand*{\Home}{}
+\newcommand*{\End}{}
+\newcommand*{\PgUp}{}
+\newcommand*{\PgDown}{}
+\newcommand*{\PrtSc}{}
+\newcommand*{\Scroll}{}
+\newcommand*{\Break}{}
+
+
+\DeclareOption{english}{%
+ \def\Enter{\keystroke{Enter}}
+ \def\Del{\keystroke{Del}}
+ \def\Ins{\keystroke{Ins}}
+ \def\Esc{\keystroke{Esc}}
+ \def\Shift{\keystroke{Shift $\Uparrow$}}
+ \def\Ctrl{\keystroke{Ctrl}}
+ \def\Home{\keystroke{Home}}
+ \def\End{\keystroke{End}}
+ \def\PgUp{\keystroke{Page $\uparrow$}}
+ \def\PgDown{\keystroke{Page $\downarrow$}}
+ \def\PrtSc{\keystroke{PrtSc}}
+ \def\Scroll{\keystroke{Scroll}}
+ \def\Break{\keystroke{Break}}
+}
+
+\DeclareOption{american}{\ExecuteOptions{english}}
+
+\DeclareOption{german}{%
+ \def\Del{\keystroke{Entf}}
+ \def\Ins{\keystroke{Einfg}}
+ \def\Esc{\keystroke{Esc}}
+ \def\Shift{\keystroke{$\Uparrow$~~}}
+ \def\Ctrl{\keystroke{Strg}}
+ \def\Home{\keystroke{Pos~1}}
+ \def\End{\keystroke{Ende}}
+ \def\PgUp{\keystroke{Bild $\uparrow$}}
+ \def\PgDown{\keystroke{Bild $\downarrow$}}
+ \def\PrtSc{\keystroke{Druck}}
+ \def\Scroll{\keystroke{Rollen}}
+ \def\Break{\keystroke{Pause}}
+}
+
+\DeclareOption{germanb}{%
+ \typeout{******Please use `german' instead of `germanb'******}%
+ \ExecuteOptions{german}
+}
+
+\DeclareOption{ngerman}{%
+ \ExecuteOptions{german}
+}
+
+% Contributed by Denis Bitouz\'e <dbitouze@wanadoo.fr>
+\DeclareOption{french}{%
+ \def\Enter{\keystroke{entr\'ee}}
+ \def\Del{\keystroke{suppr}}
+ \def\Ins{\keystroke{insert}}
+ \def\Esc{\keystroke{\'echap}}
+ \def\Shift{\keystroke{$\Uparrow$}}
+ \def\Ctrl{\keystroke{ctrl}}
+ \def\Home{\keystroke{home}}
+ % or \def\Home{\keystroke{$nwarrow$}} but
+ % in fact should be something % like $\Nwarrow$ from txfonts/pxfonts
+ % arrows
+ \def\End{\keystroke{fin}}
+ \def\PgUp{\keystroke{page $\uparrow$}}
+ \def\PgDown{\keystroke{page $\downarrow$}}
+ \def\PrtSc{\keystroke{impr}}
+ \def\Scroll{\keystroke{d\'efil}}
+ \def\Break{\keystroke{pause}}
+}
+
+\DeclareOption{francais}{%
+ \typeout{******Please use `french' instead of `francais'*****}%
+ \ExecuteOptions{french}
+}
+
+% Contributed by Arndt Mehlhorn <mehlhorn@Techno-Sol.com>
+\DeclareOption{spanish}{%
+ \def\Enter{\keystroke{Enter}}
+ \def\Esc{\keystroke{Esc}}
+ \def\Del{\keystroke{Supr}}
+ \def\Ins{\keystroke{Insert}}
+ \def\End{\keystroke{Fin}}
+ \def\PgUp{\keystroke{Re P\'ag}}
+ \def\PgDown{\keystroke{Av P\'ag}}
+ \def\PrtSc{\keystroke{Impr Pant}}
+ \def\Scroll{\keystroke{Bloq Despl}}
+ \def\Break{\keystroke{Pausa}}
+ \def\End{\keystroke{Fin}}
+ \def\Home{\keystroke{Inicio}}
+}
+
+\DeclareOption*{%
+ \PassOptionsToPackage{\CurrentOption}{graphics}%
+}
+
+\ExecuteOptions{english}
+
+\ProcessOptions\relax
+
+\newcommand*{\suse@tab}{%
+ \raisebox{-.5ex}{\shortstack{\reflectbox{\suse@@tab}\\[-1ex]\suse@@tab}}%
+}
+\newcommand*{\suse@@tab}{%
+ {{\makebox[2em]{\small\rightarrowfill}}}%
+}
+
+\newcommand*{\Spacebar}{\keystroke{\hspace{3.5em}}}
+\newcommand*{\Return}{\keystroke{$\hookleftarrow$}}
+\newcommand*{\BSpace}{\keystroke{\reflectbox{$\longmapsto$}}}
+%\newcommand*{\Tab}{\keystroke{$\longmapsto$}}
+\newcommand*{\Tab}{\keystroke{\suse@tab}}
+\newcommand*{\Alt}{\keystroke{Alt}}
+\newcommand*{\AltGr}{\keystroke{AltGr}}
+\newcommand*{\NumLock}{\keystroke{Num}}
+\newcommand*{\UArrow}{\keystroke{$\,\uparrow\!$}}
+\newcommand*{\DArrow}{\keystroke{$\,\downarrow\!$}}
+\newcommand*{\LArrow}{\keystroke{$\leftarrow$}}
+\newcommand*{\RArrow}{\keystroke{$\rightarrow$}}
+
+%%
+\newbox\suse@key
+\newbox\keystroke@left
+\newbox\keystroke@right
+\newbox\keystroke@middle
+\setbox\keystroke@left =\hbox{\includegraphics{keystroke_left}}
+\setbox\keystroke@middle=\hbox{\includegraphics{keystroke_middle}}
+\setbox\keystroke@right =\hbox{\includegraphics{keystroke_right}}
+%
+\def\suse@keystr@ke#1{\ %
+ \ifvmode\leavevmode\fi{\obeyspaces%
+ \global\setbox\suse@key=\hbox{{\keystroke@font\strut#1}}%
+ \@tempdima=0.35ex%
+ \advance\@tempdima by \dp\suse@key%
+ \@tempdimb=\wd\suse@key%
+ \@tempdimc=\ht\suse@key%
+ \ifdim\@tempdimb<\@tempdimc\@tempdimb=\@tempdimc\fi
+ \advance\@tempdimc by 1.16ex%
+ \lower\@tempdima\hbox{\resizebox*{!}{\@tempdimc}{\copy\keystroke@left}}%
+ \ignorespaces%
+ \hbox to 0pt{\unhbox\suse@key\hss}%
+ \ignorespaces%
+ \lower\@tempdima\hbox to \@tempdimb{\hss%
+ \resizebox*{\@tempdimb}{\@tempdimc}{\copy\keystroke@middle}}%
+ \ignorespaces%
+ \lower\@tempdima\hbox{\resizebox*{!}{\@tempdimc}{\copy\keystroke@right}}%
+}\ }
+%
+\DeclareRobustCommand*\keystroke{\suse@keystr@ke}
+
+\newcommand*\keystroke@font{\normalfont\sffamily\footnotesize}
+
+%%
+
+\endinput
diff --git a/macros/latex/contrib/keystroke/keystroke_left.eps b/macros/latex/contrib/keystroke/keystroke_left.eps
new file mode 100644
index 0000000000..b3d274f237
--- /dev/null
+++ b/macros/latex/contrib/keystroke/keystroke_left.eps
@@ -0,0 +1,169 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: keystroke_left.fig
+%%Creator: fig2dev Version 3.1 Patchlevel 2
+%%CreationDate: Wed Mar 19 22:08:38 1997
+%%For: werner@suse.de (Dr. Werner Fink)
+%Magnification: 1.05
+%%Orientation: Portrait
+%%BoundingBox: 0 0 42 195
+%%Pages: 0
+%%BeginSetup
+%%IncludeFeature: *PageSize A4
+%%EndSetup
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+-35.0 230.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+%%EndProlog
+
+$F2psBegin
+10 setmiterlimit
+n 0 842 m 0 0 l 595 0 l 595 842 l cp clip
+ 0.06300 0.06300 sc
+2 slj
+2 slc
+45.000 slw
+% Polyline
+n 700 3602 m 1209 3602 l gs col-1 s gr
+% Polyline
+n 600 716 m 600 3491 l gs col-1 s gr
+% Polyline
+n 717 602 m 1215 602 l gs col-1 s gr
+% Interp Spline
+gs n 597 3497 m
+ 601.6 3519.7 603.8 3529.4 606 3536 curveto
+ 608.2 3542.4 614.0 3557.2 618 3563 curveto
+ 621.4 3568.0 631.1 3577.5 636 3581 curveto
+ 641.1 3584.7 654.4 3590.5 660 3593 curveto
+ 663.4 3594.5 671.2 3598.3 675 3599 curveto
+ 679.2 3599.8 685.2 3599.8 699 3599 curveto
+ gs col-1 s gr
+ gr
+
+% Interp Spline
+gs n 600 711 m
+ 602.1 686.6 603.6 676.1 606 669 curveto
+ 608.8 660.6 618.7 643.0 624 636 curveto
+ 627.6 631.2 637.5 621.7 642 618 curveto
+ 645.9 614.8 655.4 608.1 660 606 curveto
+ 664.6 603.9 676.0 600.7 681 600 curveto
+ 685.2 599.4 691.2 599.4 705 600 curveto
+ gs col-1 s gr
+ gr
+
+60.000 slw
+% Polyline
+n 900 1125 m 900 2850 l gs col-1 s gr
+% Polyline
+n 1068 900 m 1200 900 l gs col-1 s gr
+% Polyline
+n 1071 3076 m 1200 3075 l gs col-1 s gr
+45.000 slw
+% Polyline
+n 637 3472 m 847 3000 l gs col-1 s gr
+% Polyline
+n 727 3540 m 1042 3165 l gs col-1 s gr
+% Polyline
+n 660 742 m 840 1035 l gs col-1 s gr
+% Polyline
+n 735 652 m 1035 855 l gs col-1 s gr
+0 slj
+0 slc
+0.000 slw
+% Polyline
+n 815 3537 m 1130 3137 l 1235 3137 l 1235 3567 l 785 3572 l cp gs col7 0.80 shd ef gr
+2 slc
+60.000 slw
+% Interp Spline
+gs n 900 1095 m
+ 908.7 1044.3 913.9 1022.5 921 1008 curveto
+ 928.6 992.3 953.4 962.5 966 951 curveto
+ 976.6 941.4 1004.6 924.5 1017 918 curveto
+ 1023.0 914.9 1032.0 911.1 1053 903 curveto
+ gs col-1 s gr
+ gr
+
+% Interp Spline
+gs n 900 2893 m
+ 907.1 2926.3 910.8 2940.5 915 2950 curveto
+ 920.8 2963.0 939.4 2990.0 948 3001 curveto
+ 955.5 3010.6 974.0 3032.4 984 3040 curveto
+ 991.6 3045.7 1011.6 3054.2 1020 3058 curveto
+ 1026.1 3060.8 1035.1 3064.5 1056 3073 curveto
+ gs col-1 s gr
+ gr
+
+$F2psEnd
+rs
diff --git a/macros/latex/contrib/keystroke/keystroke_left.pdf b/macros/latex/contrib/keystroke/keystroke_left.pdf
new file mode 100644
index 0000000000..08f0ef3054
--- /dev/null
+++ b/macros/latex/contrib/keystroke/keystroke_left.pdf
Binary files differ
diff --git a/macros/latex/contrib/keystroke/keystroke_middle.eps b/macros/latex/contrib/keystroke/keystroke_middle.eps
new file mode 100644
index 0000000000..c86c32aff1
--- /dev/null
+++ b/macros/latex/contrib/keystroke/keystroke_middle.eps
@@ -0,0 +1,113 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: keystroke_middle.fig
+%%Creator: fig2dev Version 3.1 Patchlevel 2
+%%CreationDate: Wed Mar 19 22:16:15 1997
+%%For: werner@suse.de (Dr. Werner Fink)
+%Magnification: 1.05
+%%Orientation: Portrait
+%%BoundingBox: 2 0 118 195
+%%Pages: 0
+%%BeginSetup
+%%IncludeFeature: *PageSize A4
+%%EndSetup
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+-72.0 230.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+%%EndProlog
+
+$F2psBegin
+10 setmiterlimit
+n 0 842 m 0 0 l 595 0 l 595 842 l cp clip
+ 0.06300 0.06300 sc
+2 slj
+2 slc
+45.000 slw
+% Polyline
+n 1200 3600 m 3000 3600 l gs col-1 s gr
+% Polyline
+n 1200 600 m 3000 600 l gs col-1 s gr
+60.000 slw
+% Polyline
+n 1200 3075 m 3000 3075 l gs col-1 s gr
+% Polyline
+n 1200 900 m 3000 900 l gs col-1 s gr
+0 slj
+0 slc
+0.000 slw
+% Polyline
+n 1162 3139 m 3034 3139 l 3034 3559 l 1162 3559 l cp gs col7 0.80 shd ef gr
+$F2psEnd
+rs
diff --git a/macros/latex/contrib/keystroke/keystroke_middle.pdf b/macros/latex/contrib/keystroke/keystroke_middle.pdf
new file mode 100644
index 0000000000..8ef44caafa
--- /dev/null
+++ b/macros/latex/contrib/keystroke/keystroke_middle.pdf
@@ -0,0 +1,47 @@
+%PDF-1.3
+%Çì¢
+5 0 obj
+<</Length 6 0 R/Filter /FlateDecode>>
+stream
+xœUŒK
+A D÷uŠ¬]„|&ý¹‚;ñ2Šâ,tãõíV H©â…'¬$s~÷´á¥+¬±½`´{ƒ÷Þ¹±ˆmP ÉzÇ1_´[òOžÐ+·¡KM1®‘–oû“T÷”Ì<¡ ÇB1d.JªEÈÊÂ…ž+Î;ð‚.(}endstream
+endobj
+6 0 obj
+124
+endobj
+4 0 obj
+<</Type/Page/MediaBox [0 0 116 195]
+/Parent 3 0 R
+/Resources<</ProcSet[/PDF]
+>>
+/Contents 5 0 R
+>>
+endobj
+3 0 obj
+<< /Type /Pages /Kids [
+4 0 R
+] /Count 1
+>>
+endobj
+1 0 obj
+<</Type /Catalog /Pages 3 0 R
+>>
+endobj
+2 0 obj
+<</Producer (Aladdin Ghostscript 6.01)
+>>endobj
+xref
+0 7
+0000000000 65535 f
+0000000401 00000 n
+0000000449 00000 n
+0000000342 00000 n
+0000000228 00000 n
+0000000015 00000 n
+0000000209 00000 n
+trailer
+<< /Size 7 /Root 1 0 R /Info 2 0 R
+>>
+startxref
+505
+%%EOF
diff --git a/macros/latex/contrib/keystroke/keystroke_right.eps b/macros/latex/contrib/keystroke/keystroke_right.eps
new file mode 100644
index 0000000000..afc905052d
--- /dev/null
+++ b/macros/latex/contrib/keystroke/keystroke_right.eps
@@ -0,0 +1,179 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: keystroke_right.fig
+%%Creator: fig2dev Version 3.1 Patchlevel 2
+%%CreationDate: Wed Mar 19 22:24:09 1997
+%%For: werner@suse.de (Dr. Werner Fink)
+%Magnification: 1.05
+%%Orientation: Portrait
+%%BoundingBox: 3 0 45 195
+%%Pages: 0
+%%BeginSetup
+%%IncludeFeature: *PageSize A4
+%%EndSetup
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+-185.0 230.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+%%EndProlog
+
+$F2psBegin
+10 setmiterlimit
+n 0 842 m 0 0 l 595 0 l 595 842 l cp clip
+ 0.06300 0.06300 sc
+2 slj
+2 slc
+45.000 slw
+% Polyline
+n 3600 692 m 3600 3522 l gs col-1 s gr
+% Polyline
+n 2989 3600 m 3530 3602 l gs col-1 s gr
+% Polyline
+n 2989 608 m 3500 607 l gs col-1 s gr
+% Interp Spline
+gs n 3502 599 m
+ 3526.3 601.1 3536.8 603.1 3544 607 curveto
+ 3549.8 610.2 3557.8 621.7 3562 626 curveto
+ 3565.4 629.5 3573.8 637.4 3577 641 curveto
+ 3579.9 644.3 3586.9 651.9 3589 656 curveto
+ 3591.2 660.3 3592.9 666.8 3596 682 curveto
+ gs col-1 s gr
+ gr
+
+% Interp Spline
+gs n 3536 3590 m
+ 3556.2 3580.9 3564.7 3576.4 3570 3572 curveto
+ 3574.5 3568.3 3581.6 3557.3 3585 3553 curveto
+ 3588.4 3548.7 3597.9 3539.9 3600 3534 curveto
+ 3601.2 3530.5 3601.2 3525.8 3600 3515 curveto
+ gs col-1 s gr
+ gr
+
+0 slj
+0 slc
+7.500 slw
+% Polyline
+n 3525 600 m 3525 600 l gs col-1 s gr
+0.000 slw
+% Polyline
+n 3000 585 m 3000 585 l 3000 577 l 3000 577 l cp gs col7 1.00 shd ef gr
+2 slj
+2 slc
+60.000 slw
+% Polyline
+n 3300 1050 m 3300 2850 l gs col-1 s gr
+% Polyline
+n 3000 900 m 3075 900 l gs col-1 s gr
+% Polyline
+n 3000 3075 m 3150 3075 l gs col-1 s gr
+45.000 slw
+% Polyline
+n 3457 645 m 3187 855 l gs col-1 s gr
+% Polyline
+n 3547 727 m 3352 982 l gs col-1 s gr
+% Polyline
+n 3157 3135 m 3480 3525 l gs col-1 s gr
+% Polyline
+n 3345 3000 m 3547 3420 l gs col-1 s gr
+0 slj
+0 slc
+0.000 slw
+% Polyline
+n 2960 3137 m 3099 3140 l 3451 3572 l 2956 3572 l cp gs col7 0.80 shd ef gr
+% Polyline
+n 3569 802 m 3569 3372 l 3359 2932 l 3359 1062 l 3564 787 l cp gs col7 0.80 shd ef gr
+2 slc
+60.000 slw
+% Interp Spline
+gs n 3120 905 m
+ 3152.1 912.5 3165.8 916.3 3175 920 curveto
+ 3186.1 924.5 3210.1 938.7 3220 945 curveto
+ 3228.3 950.3 3248.3 961.7 3255 970 curveto
+ 3260.9 977.4 3265.9 997.3 3270 1005 curveto
+ 3273.8 1012.2 3280.0 1022.2 3295 1045 curveto
+ gs col-1 s gr
+ gr
+
+% Interp Spline
+gs n 3170 3075 m
+ 3205.2 3052.5 3220.2 3042.5 3230 3035 curveto
+ 3239.7 3027.6 3262.6 3010.7 3270 3000 curveto
+ 3275.9 2991.4 3282.1 2969.3 3285 2960 curveto
+ 3287.8 2951.0 3293.3 2929.3 3295 2920 curveto
+ 3296.3 2913.2 3297.5 2903.2 3300 2880 curveto
+ gs col-1 s gr
+ gr
+
+$F2psEnd
+rs
diff --git a/macros/latex/contrib/keystroke/keystroke_right.pdf b/macros/latex/contrib/keystroke/keystroke_right.pdf
new file mode 100644
index 0000000000..2823f20f71
--- /dev/null
+++ b/macros/latex/contrib/keystroke/keystroke_right.pdf
Binary files differ