From 4e123a61f19e7e77432833365c6d635c294250c2 Mon Sep 17 00:00:00 2001 From: Jiri Kalvoda <jirikalvoda@kam.mff.cuni.cz> Date: Mon, 22 Feb 2021 09:06:18 +0100 Subject: [PATCH] KEYMAP Init --- keymap/init.sh | 2 + keymap/keymap-abstract.tex | 48 ++++++++ keymap/keymap-doc-keyboard.tex | 70 +++++++++++ keymap/keymap-doc-nw.tex | 216 +++++++++++++++++++++++++++++++++ keymap/keymap-doc.tex | 208 +++++++++++++++++++++++++++++++ keymap/keymap-i3-keyboard.tex | 59 +++++++++ keymap/keymap-i3.tex | 132 ++++++++++++++++++++ keymap/keymap-utils.tex | 28 +++++ 8 files changed, 763 insertions(+) create mode 100755 keymap/init.sh create mode 100644 keymap/keymap-abstract.tex create mode 100644 keymap/keymap-doc-keyboard.tex create mode 100644 keymap/keymap-doc-nw.tex create mode 100644 keymap/keymap-doc.tex create mode 100644 keymap/keymap-i3-keyboard.tex create mode 100644 keymap/keymap-i3.tex create mode 100644 keymap/keymap-utils.tex diff --git a/keymap/init.sh b/keymap/init.sh new file mode 100755 index 0000000..26a7908 --- /dev/null +++ b/keymap/init.sh @@ -0,0 +1,2 @@ +ln -sr . ~/texmf/tex/keymap +texhash diff --git a/keymap/keymap-abstract.tex b/keymap/keymap-abstract.tex new file mode 100644 index 0000000..d902c4e --- /dev/null +++ b/keymap/keymap-abstract.tex @@ -0,0 +1,48 @@ +%%%%%%%%%%%%%% Mod keys %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\Ctrl{c} +\def\Shift{s} +\def\Super{w} +%%%%%%%%%%%%%% Undef key %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\UndefKey{} +%%%%%%%%%%%%%% general Commands %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\GoMode#1{\UndefKey} +\def\Cmd#1{\UndefKey} +\def\LayoutCont#1{\UndefKey} +\def\ResizeCont#1#2#3{\UndefKey} +\def\FloatingToggleCont{\UndefKey} + +%%%%%%%%%%%%%% WM Commands %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% workspaces +\def\GoWorkspace#1{\UndefKey} +\def\ContWorkspace#1{\UndefKey} +\def\ContGoWorkspace#1{\UndefKey} +\def\MoveWorkspace#1{\UndefKey} +% Container +\def\FocusWind#1{\UndefKey} +\def\MoveCont#1{\UndefKey} +\def\SplitContV{\UndefKey} +\def\SplitContH{\UndefKey} +\def\SplitContT{\UndefKey} +\def\FullscreenContToggle{\UndefKey} +% Restart i3 +\def\RestartProg{\UndefKey} + +%%%%%%%%%%%%%% System modificator %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\ExitProg{\UndefKey} +\def\ExitShutdown{\UndefKey} +\def\ExitSuspend{\UndefKey} +\def\ExitRestart{\UndefKey} +\def\Light#1#2{\Cmd{light #1 #2; lightGUI}} +\catcode37=11 +\def\Volume#1#2{\Cmd{amixer sset Master -q #2%#1; sleep 0.05; volumeGUI}} +\catcode37=14 +\def\CpuFSet#1{\Cmd{cpuF #1; cpuFGUI 'SET TO #1'}} +\def\CpuF{\Cmd{cpuFGUI}} +\def\DiskSleep#1#2{\Cmd{diskSleepGUI #1 #2}} + +%%%%%%%%%%%%%% Not bind commmand %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\And#1#2{#1} +\def\AndII#1#2{#2} +\def\RunCmd#1{} +\def\IiiiLine#1{} +\def\IiiiInline#1{} diff --git a/keymap/keymap-doc-keyboard.tex b/keymap/keymap-doc-keyboard.tex new file mode 100644 index 0000000..017fb80 --- /dev/null +++ b/keymap/keymap-doc-keyboard.tex @@ -0,0 +1,70 @@ +\def\setkeywh#1#2#3#4{% +\defcs{keywK#1}{#2}% +\defcs{keyhK#1}{#3}% +\defcs{skipBeforeK#1}{#4}% +} +\newdimen\standkeyw\standkeyw 100pt\relax% +\newdimen\standkeyh\standkeyh 35pt\relax% +\for i 0 {16}{\for j 0 {13} {\setkeywh{\Key{}{\the\counti}{\the\countj}}{\standkeyw}{\standkeyh}{0pt}}} +\setkeywh{\Key{}{0}{1}}{\standkeyw}{\standkeyh}{\standkeyw} +\setkeywh{\Key{}{0}{5}}{\standkeyw}{\standkeyh}{0.5\standkeyw} +\setkeywh{\Key{}{0}{9}}{\standkeyw}{\standkeyh}{0.5\standkeyw} +\setkeywh{\Key{}{1}{13}}{2\standkeyw}{\standkeyh}{0pt} +\setkeywh{\Key{}{2}{0}}{1.5\standkeyw}{\standkeyh}{0pt} +\setkeywh{\Key{}{2}{13}}{1.5\standkeyw}{\standkeyh}{0pt} +\setkeywh{\Key{}{3}{0}}{2\standkeyw}{\standkeyh}{0pt} +\setkeywh{\Key{}{4}{0}}{1.5\standkeyw}{\standkeyh}{0pt} +\setkeywh{\Key{}{4}{12}}{2.5\standkeyw}{\standkeyh}{0pt} +\setkeywh{\Key{}{5}{0}}{2\standkeyw}{\standkeyh}{0pt} +\setkeywh{\Key{}{5}{1}}{1.5\standkeyw}{\standkeyh}{0pt} +\setkeywh{\Key{}{5}{2}}{1.5\standkeyw}{\standkeyh}{0pt} +\setkeywh{\Key{}{5}{3}}{5\standkeyw}{\standkeyh}{0pt} +\setkeywh{\Key{}{5}{4}}{1.5\standkeyw}{\standkeyh}{0pt} +\setkeywh{\Key{}{5}{5}}{1.5\standkeyw}{\standkeyh}{0pt} +\setkeywh{\Key{}{5}{6}}{2\standkeyw}{\standkeyh}{0pt} +\setkeywh{\Key{}{9}{0}}{\standkeyw}{\standkeyh}{\standkeyw} +\setkeywh{\Key{}{15}{0}}{2\standkeyw}{\standkeyh}{0pt} +\defcs{keyLineLen0}{13} +\defcs{keyLineLen1}{14} +\defcs{keyLineLen2}{14} +\defcs{keyLineLen3}{13} +\defcs{keyLineLen4}{13} +\defcs{keyLineLen5}{07} +\defcs{keyLineLen6}{03} +\defcs{keyLineLen7}{03} +\defcs{keyLineLen8}{03} +\defcs{keyLineLen9}{01} +\defcs{keyLineLen10}{03} +\defcs{keyLineLen11}{04} +\defcs{keyLineLen12}{04} +\defcs{keyLineLen13}{03} +\defcs{keyLineLen14}{04} +\defcs{keyLineLen15}{02} + +\def\setKeyNames#1#2#3{% +\countj#2% +\for{iter}\in{#3}{\ex\edef\csname keyNameK\Key{}{#1}{\the\countj}\endcsname{\iter}\advance\countj1}% +} +\setKeyNames{0}{0}{{Esc}} +\for i 1 {13}{\setKeyNames{0}{\counti}{{F\the\counti}}} +\setKeyNames{1}{0}{`1234567890-={Backspace}} +\setKeyNames{2}{0}{{Tab}qwertyuiop[]{Entr}} +\setKeyNames{3}{0}{{CapsLk}asdfghjkl;'} +\ex\def\csname keyNameK\Key{}{3}{12}\endcsname{\\} +\setKeyNames{4}{0}{{Shift}{NOT}zxcvbnm,./{Shift}} +\setKeyNames{5}{0}{{Ctrl}{Super}{Alt}{Space}{AltGr}{Super}{Ctrl}} +\setKeyNames{6}{0}{{PrtSc}{ScrLock}{Pause}} +\setKeyNames{7}{0}{{Insert}{Home}{PgUp}} +\setKeyNames{8}{0}{{Delete}{End}{PgDown}} +\setKeyNames{9}{0}{{Up}} +\setKeyNames{10}{0}{{Left}{Down}{Right}} +\setKeyNames{11}{0}{{NumLock}/*-} +\setKeyNames{12}{0}{789+} +\setKeyNames{13}{0}{456} +\setKeyNames{14}{0}{123{Enter}} +\setKeyNames{15}{0}{0.} + +\newdimen\afterEscSkip +\afterEscSkip 30pt +\newdimen\afterAlphaSkip +\afterAlphaSkip 30pt diff --git a/keymap/keymap-doc-nw.tex b/keymap/keymap-doc-nw.tex new file mode 100644 index 0000000..3c4b9bc --- /dev/null +++ b/keymap/keymap-doc-nw.tex @@ -0,0 +1,216 @@ +\def\OutputMode{doc} +\input keymap-utils.tex +\input keymap-abstract.tex + +%%%%%%%%%%%%%% Working vars %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcount\counti +\newcount\countj + +%%% Colors %%% (from ucwmac (c) MJ) +\chardef\colorstk=\pdfcolorstackinit page direct{0 g 0 G} +\def\colorset#1{\pdfcolorstack\colorstk set #1} +\def\colorpush#1{\pdfcolorstack\colorstk push #1} +\def\colorpop{\pdfcolorstack\colorstk pop} +\def\colorlocal{\aftergroup\colorpop\colorpush} +\def\rgb#1{{#1 rg #1 RG}} +\def\gray#1{{#1 g #1 G}} +\def\cmyk#1{{#1 k #1 K}} +\def\cwhite{\rgb{1 1 1}} + +%%%%%%%%%%%%%% Output %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\parindent=0pt +\pdfpagewidth=85cm +\pdfpageheight=85cm +\hsize=78cm +\vsize=78cm +\font\hhdfont csbx17 +\font\smallfont cmr8 +\font\basicfont cmr10\basicfont +\font\smallsmallfont cmr5 at 5pt +\newbox\autofontBox +\def\autofont#1{{% +\setbox\autofontBox=\hbox{#1}% +\ifdim\wd\autofontBox<100pt\relax\basicfont\else% +\ifdim\wd\autofontBox<300pt\relax\baselineskip 1pt\smallfont\else% +\fi\baselineskip 1pt\smallsmallfont\fi% +#1% +}} + +%%%%%%%%%%%%%% Chars and catcodes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\\{$\scriptscriptstyle \backslash$} +\def\nl{\par} + + +%%%%%%%%%%%%%% general commands %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\GoMode#1{\printkey{\rgb{0 0 1}}{MODE\nl\smallfont#1}} +\def\Cmd#1{\printkey{\rgb{1 0 1}}{\autofont{#1}}} +\def\UndefKey{\printkey{\rgb{1 0 0}}{UNDEF}} + +%%%%%%%%%%%%%% WM Commands %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% workspaces +\def\GoWorkspace#1{\printkey{\rgb{0 1 1}}{Workspace\nl#1}} +\def\ContWorkspace#1{\printkey{\rgb{0 1 1}}{Move to workspace\nl#1}} +\def\ContGoWorkspace#1{\printkey{\rgb{0 1 1}}{Move and go to wsp.\nl#1}} +\def\MoveWorkspace#1{\printkey{\rgb{0 1 0}}{Move worksp. #1}} +% Container +\def\FocusWind#1{\printkey{\rgb{0 1 0}}{Focus #1}} +\def\MoveCont#1{\printkey{\rgb{0 1 0}}{Move #1}} +\def\SplitContV{\printkey{\rgb{0.85 1 0}}{Split vertical}} +\def\SplitContH{\printkey{\rgb{0.85 1 0}}{Split horizontal}} +\def\SplitContT{\printkey{\rgb{0.85 1 0}}{Split tabbed}} +\def\FullscreenContToggle{\printkey{\rgb{0.85 1 0}}{}} +% Restart i3 +\def\RestartProg{\printkey{\rgb{1 0 0}}{Restart WM}} + +%%%%%%%%%%%%%% System modificator %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\ExitProg{\printkey{\rgb{1 0 0}}{Exit}} +\def\ExitShutdown{\printkey{\rgb{1 0 0}}{Shutdown}} +\def\ExitSuspend{\printkey{\rgb{1 0 0}}{Suspend}} +\def\ExitRestart{\printkey{\rgb{1 0 0}}{Restart}} + +%%%%%%%%%%%%%% Kernel %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newdimen\keyw +\newdimen\keyh +\newdimen\skipBefore +\def\Ctrl{\def\ctrl{1}} +\def\Shift{} +\def\Super{} + +\def\Key#1#2#3{% +\def\ctrl{0}% +#1% +\edef\lastKeyMod{\ctrl}% +\edef\lastKey{}% +} + +\input keyboard-doc-keyboard.tex +\def\BindKey#1#2{#1 +\defcs{keymapK\lastKey}{#2} +} +\def\getkey#1{% +#1\csname keymapK\lastKey\endcsname% +} + +% mods +\def\allmod{{x}}%{x\Shift}{x\Ctrl}{x\Ctrl\Shift}{x\Super}{x\Shift\Super}{x\Ctrl\Super}{x\Ctrl\Shift\Super}} +\Key{ }{}{}\defcs{modNameM\lastKeyMod}{No mod} +\Key{\Shift }{}{}\defcs{modNameM\lastKeyMod}{Shift} +\Key{\Ctrl }{}{}\defcs{modNameM\lastKeyMod}{Ctrl} +\Key{\Ctrl\Shift }{}{}\defcs{modNameM\lastKeyMod}{Ctrl+Shift} +\Key{\Super }{}{}\defcs{modNameM\lastKeyMod}{Super} +\Key{\Shift\Super }{}{}\defcs{modNameM\lastKeyMod}{Shift+Super} +\Key{\Ctrl\Super }{}{}\defcs{modNameM\lastKeyMod}{Ctrl+Super} +\Key{\Ctrl\Shift\Super}{}{}\defcs{modNameM\lastKeyMod}{Ctrl+Shift+Super} + +\def\nullkey{\printkey{\cwhite}{}} +\def\nullkeyin{\nullkey} % For comparing +\def\bindnullkey#1#2{% +\for{iter}\in\allmod{\BindKey{\Key{\ex\eat\iter}{#1}{#2}}{\nullkey}}% +} + +\def\getUsedMod#1#2{ +\for{iter}\in\allmod{\Key{\ex\eat\iter}{#1}{#2}\letcs{tmp}{keymapK\lastKey}\ifx\tmp\nullkeyin\else\defcs{activeModM\lastKeyMod}{1}\fi}% +} + + +\def\printkey#1#2{% +\hrule \hbox{% +\vrule\relax% +\hbox to 0pt{\colorlocal{#1}\vrule width \keyw height \keyh\hskip -\keyw}% +\vbox to \keyh{% +\hsize\keyw% +\leftskip 0pt plus 1fill% +\rightskip 0pt plus 1fill% +\vskip 0pt plus 1fil\relax% +\keyname% +#2% +\hskip 0pt\hbox{}\vskip 0pt plus 1fil\relax\hrule height 0pt +}\vrule% +}\hrule% +} + +\def\printkeybymap#1#2{% +\Key{}{#1}{#2}\skipBefore \csname skipBeforeK\lastKey\endcsname% +\kern \skipBefore\vbox{% +\Key{}{#1}{#2}% +\keyw \csname keywK\lastKey\endcsname% +\keyh \csname keyhK\lastKey\endcsname% +\advance\keyw -0.4pt% +\advance\keyh -0.4pt% +\def\keyname{#1-#2\nl}% +\def\printkeybymapIsFirst{1} +\for{iter}\in\allmod{% +\letcs{tmp}{activeModM\ex\eat\iter} +\if\tmp1% +\getkey{\Key{\ex\eat\iter}{#1}{#2}}% +\if \printkeybymapIsFirst1\relax% +\advance\keyh -10pt% +\vskip-0.4pt% +\def\keyname{}% +\def\printkeybymapIsFirst{0}% +\fi% +\fi% +}% +}% +\hskip -0.4pt +} + + +\def\printline#1{\hbox{\for j 0 {\csname keyLineLen\the\counti\endcsname} {\printkeybymap{#1}{\the\countj}}}\vskip 10pt} + +\long\def\Mode#1#2{ +{ +\let\UpModeName\ModeName +\def\ModeName{#1} +%\for i 0 {16}{\for j 0 {14} {\bindnullkey{\the\counti}{\the\countj}}} +#2 +\for{iter}\in\allmod{\Key{\ex\eat\iter}{}{}\defcs{activeModM\lastKeyMod}{0}}% +\for i 0 {16}{\for j 0 {14} {\getUsedMod{\the\counti}{\the\countj}}}% +{\hhdfont #1 (% +\def\isFirst{1}% +\for{iter}\in\allmod{% +\Key{\ex\eat\iter}{}{}\letcs{tmp}{activeModM\lastKeyMod}% +\if\tmp1% +\if \isFirst1\def\isFirst{0}\else, \fi% +%\csname modNameM\ex\eat\iter\endcsname% +\fi% +})} +\vskip 10pt\relax +\hbox{ +\vbox{ +\for i 0 1{\printline{\the\counti}} +\vskip\afterEscSkip\relax +\for i 1 6{\printline{\the\counti}} +}\hskip \afterAlphaSkip +\vbox{ +\for i 6 7{\printline{\the\counti}} +\vskip\afterEscSkip\relax +\for i 7 9{\printline{\the\counti}} +\vskip \standkeyh +\vskip 1.4pt +\for i 9 {11}{\printline{\the\counti}} +}\hskip \afterAlphaSkip +\vbox{ +\for i {11} {15}{\printline{\the\counti}} +} +} +} +\vfil \break +} + +%%%%%%%%%%%%%% Chars and catcodes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\catcode`&=11 +\catcode`"=11 +\catcode`'=11 +\catcode`_=11 +\catcode`~=11 +\catcode`$=11 %$ + +%%%%%%%%%%%%%% Input %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Mode{default}{ +\input master.tex +} + + +\bye + diff --git a/keymap/keymap-doc.tex b/keymap/keymap-doc.tex new file mode 100644 index 0000000..f6d7582 --- /dev/null +++ b/keymap/keymap-doc.tex @@ -0,0 +1,208 @@ +\def\OutputMode{doc} +\input keymap-utils.tex +\input keymap-abstract.tex + +%%%%%%%%%%%%%% Working vars %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcount\counti +\newcount\countj + +%%% Colors %%% (from ucwmac (c) MJ) +\chardef\colorstk=\pdfcolorstackinit page direct{0 g 0 G} +\def\colorset#1{\pdfcolorstack\colorstk set #1} +\def\colorpush#1{\pdfcolorstack\colorstk push #1} +\def\colorpop{\pdfcolorstack\colorstk pop} +\def\colorlocal{\aftergroup\colorpop\colorpush} +\def\rgb#1{{#1 rg #1 RG}} +\def\gray#1{{#1 g #1 G}} +\def\cmyk#1{{#1 k #1 K}} +\def\cwhite{\rgb{1 1 1}} + +%%%%%%%%%%%%%% Output %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\parindent=0pt +\pdfpagewidth=85cm +\pdfpageheight=85cm +\hsize=78cm +\vsize=78cm +\font\hhdfont csbx17 +\font\smallfont cmr8 +\font\basicfont cmr10\basicfont +\font\smallsmallfont cmr5 at 5pt +\newbox\autofontBox +\def\autofont#1{{% +\setbox\autofontBox=\hbox{#1}% +\ifdim\wd\autofontBox<100pt\relax\basicfont\else% +\ifdim\wd\autofontBox<300pt\relax\baselineskip 1pt\smallfont\else% +\fi\baselineskip 1pt\smallsmallfont\fi% +#1% +}} + +%%%%%%%%%%%%%% Chars and catcodes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\\{$\scriptscriptstyle \backslash$} +\def\nl{\par} + + +%%%%%%%%%%%%%% general commands %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\GoMode#1{\printkey{\rgb{0 0 1}}{MODE\nl\smallfont#1}} +\def\Cmd#1{\printkey{\rgb{1 0 1}}{\autofont{#1}}} +\def\UndefKey{\printkey{\rgb{1 0 0}}{UNDEF}} + +%%%%%%%%%%%%%% WM Commands %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% workspaces +\def\GoWorkspace#1{\printkey{\rgb{0 1 1}}{Workspace\nl#1}} +\def\ContWorkspace#1{\printkey{\rgb{0 1 1}}{Move to workspace\nl#1}} +\def\ContGoWorkspace#1{\printkey{\rgb{0 1 1}}{Move and go to wsp.\nl#1}} +\def\MoveWorkspace#1{\printkey{\rgb{0 1 0}}{Move worksp. #1}} +% Container +\def\FocusWind#1{\printkey{\rgb{0 1 0}}{Focus #1}} +\def\MoveCont#1{\printkey{\rgb{0 1 0}}{Move #1}} +\def\SplitContV{\printkey{\rgb{0.85 1 0}}{Split vertical}} +\def\SplitContH{\printkey{\rgb{0.85 1 0}}{Split horizontal}} +\def\SplitContT{\printkey{\rgb{0.85 1 0}}{Split tabbed}} +\def\FullscreenContToggle{\printkey{\rgb{0.85 1 0}}{}} +% Restart i3 +\def\RestartProg{\printkey{\rgb{1 0 0}}{Restart WM}} + +%%%%%%%%%%%%%% System modificator %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\ExitProg{\printkey{\rgb{1 0 0}}{Exit}} +\def\ExitShutdown{\printkey{\rgb{1 0 0}}{Shutdown}} +\def\ExitSuspend{\printkey{\rgb{1 0 0}}{Suspend}} +\def\ExitRestart{\printkey{\rgb{1 0 0}}{Restart}} + +%%%%%%%%%%%%%% Kernel %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newdimen\keyw +\newdimen\keyh +\newdimen\skipBefore + +\def\Key#1#2#3{% +#1@#2@#3% +} + +\input keymap-doc-keyboard.tex +\def\BindKey#1#2{ +\defcs{keymapK#1}{#2} +} +\def\getkey#1{% +\csname keymapK#1\endcsname% +} + +% mods +\def\allmod{{x}{x\Shift}{x\Ctrl}{x\Ctrl\Shift}{x\Super}{x\Shift\Super}{x\Ctrl\Super}{x\Ctrl\Shift\Super}} +\defcs{modNameM}{No mod} +\defcs{modNameM\Shift}{Shift} +\defcs{modNameM\Ctrl}{Ctrl} +\defcs{modNameM\Ctrl\Shift}{Ctrl+Shift} +\defcs{modNameM\Super}{Super} +\defcs{modNameM\Shift\Super}{Shift+Super} +\defcs{modNameM\Ctrl\Super}{Ctrl+Super} +\defcs{modNameM\Ctrl\Shift\Super}{Ctrl+Shift+Super} + +\def\nullkey{\printkey{\cwhite}{}} +\def\nullkeyin{\nullkey} % For comparing +\def\bindnullkey#1#2{% +\for{iter}\in\allmod{\BindKey{\Key{\ex\eat\iter}{#1}{#2}}{\nullkey}}% +} + +\def\getUsedMod#1#2{ +\for{iter}\in\allmod{\letcs{tmp}{keymapK\Key{\ex\eat\iter}{#1}{#2}}\ifx\tmp\nullkeyin\else\defcs{activeModM\ex\eat\iter}{1}\fi}% +} + + +\def\printkey#1#2{% +\hrule \hbox{% +\vrule\relax% +\hbox to 0pt{\colorlocal{#1}\vrule width \keyw height \keyh\hskip -\keyw}% +\vbox to \keyh{% +\hsize\keyw% +\leftskip 0pt plus 1fill% +\rightskip 0pt plus 1fill% +\vskip 0pt plus 1fil\relax% +\keyname% +#2% +\hskip 0pt\hbox{}\vskip 0pt plus 1fil\relax\hrule height 0pt +}\vrule% +}\hrule% +} + +\def\printkeybymap#1#2{% +\skipBefore \csname skipBeforeK\Key{}{#1}{#2}\endcsname% +\kern \skipBefore\vbox{% +\keyw \csname keywK\Key{}{#1}{#2}\endcsname% +\keyh \csname keyhK\Key{}{#1}{#2}\endcsname% +\advance\keyw -0.4pt% +\advance\keyh -0.4pt% +\def\keyname{\csname keyNameK\Key{}{#1}{#2}\endcsname\nl}% +\def\printkeybymapIsFirst{1} +\for{iter}\in\allmod{% +\letcs{tmp}{activeModM\ex\eat\iter} +\if\tmp1% +\getkey{\Key{\ex\eat\iter}{#1}{#2}}% +\if \printkeybymapIsFirst1\relax% +\advance\keyh -10pt% +\vskip-0.4pt% +\def\keyname{}% +\def\printkeybymapIsFirst{0}% +\fi% +\fi% +}% +}% +\hskip -0.4pt +} + + +\def\printline#1{\hbox{\for j 0 {\csname keyLineLen\the\counti\endcsname} {\printkeybymap{#1}{\the\countj}}}\vskip 10pt} + +\long\def\Mode#1#2{ +{ +\let\UpModeName\ModeName +\def\ModeName{#1} +\for i 0 {16}{\for j 0 {14} {\bindnullkey{\the\counti}{\the\countj}}} +#2 +\for{iter}\in\allmod{\defcs{activeModM\ex\eat\iter}{0}}% +\for i 0 {16}{\for j 0 {14} {\getUsedMod{\the\counti}{\the\countj}}}% +{\hhdfont #1 (% +\def\isFirst{1}% +\for{iter}\in\allmod{% +\letcs{tmp}{activeModM\ex\eat\iter}% +\if\tmp1% +\if \isFirst1\def\isFirst{0}\else, \fi% +\csname modNameM\ex\eat\iter\endcsname% +\fi% +})} +\vskip 10pt\relax +\hbox{ +\vbox{ +\for i 0 1{\printline{\the\counti}} +\vskip\afterEscSkip\relax +\for i 1 6{\printline{\the\counti}} +}\hskip \afterAlphaSkip +\vbox{ +\for i 6 7{\printline{\the\counti}} +\vskip\afterEscSkip\relax +\for i 7 9{\printline{\the\counti}} +{ \setbox5=\vbox{\printkeybymap{0}{0}}\vskip\ht5} +\for i 9 {11}{\printline{\the\counti}} +}\hskip \afterAlphaSkip +\vbox{ +\for i {11} {16}{\printline{\the\counti}} +} +} +} +\vfil \break +} + +%%%%%%%%%%%%%% Chars and catcodes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\catcode`&=11 +\catcode`"=11 +\catcode`'=11 +\catcode`_=11 +\catcode`~=11 +\catcode`$=11 %$ + +%%%%%%%%%%%%%% Input %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Mode{default}{ +\input master.tex +} + + +\bye + diff --git a/keymap/keymap-i3-keyboard.tex b/keymap/keymap-i3-keyboard.tex new file mode 100644 index 0000000..712d2ba --- /dev/null +++ b/keymap/keymap-i3-keyboard.tex @@ -0,0 +1,59 @@ +{ +\newcount\counti +\newcount\countj +\def\defKeyCode#1#2#3{\ex\global\ex\edef\csname keyCodeK#1K#2\endcsname{#3}} +\defKeyCode{0}{0}{9} + %if(row==0 && col==0) return 9; +\for i{11}{13}{\countj 95 \advance\countj\counti \advance\countj -11 \defKeyCode{0}{\the\counti}{\the\countj}} + %if(row==0 && col>=11) return 95+col-11; +\for i{1}{11}{\countj 67 \advance\countj\counti \advance\countj -1 \defKeyCode{0}{\the\counti}{\the\countj}} + %if(row==0) return col+67-1; +\defKeyCode{1}{0}{49} + %if(row==1 && col==0) return 49; +\for i{1}{14}{\countj 10 \advance\countj\counti \advance\countj -1 \defKeyCode{1}{\the\counti}{\the\countj}} + %if(row==1) return col+10-1; +\for i{0}{14}{\countj 23 \advance\countj\counti \advance\countj 0 \defKeyCode{2}{\the\counti}{\the\countj}} + %if(row==2) return col+23; +\defKeyCode{3}{0}{66} + %if(row==3 && col==0) return 66; +\defKeyCode{3}{12}{51} + %if(row==3 && col==12) return 51; +\for i{1}{12}{\countj 38 \advance\countj\counti \advance\countj -1 \defKeyCode{3}{\the\counti}{\the\countj}} + %if(row==3) return col+38-1; +\for i{0}{12}{\countj 50 \advance\countj\counti \advance\countj 0 \defKeyCode{4}{\the\counti}{\the\countj}} + %if(row==4) return col+50; +\defKeyCode{4}{1}{94} + %if(row==4 && col==1) return 94; +\defKeyCode{5}{0}{37} +\defKeyCode{5}{1}{133} +\defKeyCode{5}{2}{64} +\defKeyCode{5}{3}{65} +\defKeyCode{5}{4}{108} +\defKeyCode{5}{5}{105} + %if(row==5) return std::vector<int>{37,133,64,65,108,105}[col]; +% +\defKeyCode{6}{0}{107} +\defKeyCode{6}{1}{78} +\defKeyCode{6}{2}{127} + %if(row==6) return std::vector<int>{107,78,127}[col]; +\defKeyCode{7}{0}{118} +\defKeyCode{7}{1}{110} +\defKeyCode{7}{2}{112} + %if(row==7) return std::vector<int>{118,110,112}[col]; +\defKeyCode{8}{0}{119} +\defKeyCode{8}{1}{115} +\defKeyCode{8}{2}{116} + %if(row==8) return std::vector<int>{119,115,116}[col]; +\defKeyCode{9}{0}{111} + %if(row==9) return std::vector<int>{111}[col]; +\defKeyCode{10}{0}{113} +\defKeyCode{10}{1}{116} +\defKeyCode{10}{2}{114} + %if(row==10) return std::vector<int>{113,116,114}[col]; +% TODO + %if(row==11) return std::vector<int>{77,106,63,82}[col]; + %if(row==12) return std::vector<int>{79,80,81,86}[col]; + %if(row==13) return std::vector<int>{83,84,85}[col]; + %if(row==14) return std::vector<int>{87,88,89,104}[col]; + %if(row==15) return std::vector<int>{90,91}[col]; +} diff --git a/keymap/keymap-i3.tex b/keymap/keymap-i3.tex new file mode 100644 index 0000000..90d4952 --- /dev/null +++ b/keymap/keymap-i3.tex @@ -0,0 +1,132 @@ +\def\OutputMode{i3} +\input keymap-utils.tex +\input keymap-abstract.tex + +\catcode`p=1 +\catcode`q=2 +\catcode`{=11 +\catcode`}=11 +\def\SimLeftCurlip{q +\def\SimRightCurlip}q +\catcode`{=1 +\catcode`}=2 +\catcode`p=11 +\catcode`q=11 + +\catcode113=0 +\catcode92=11 +qdefqSimBackslash{\} +qcatcode92=0 +\catcode113=11 + +\def\SimQuotes{"} + +\catcode`&=11 +\catcode`~=11 +\catcode`$=11 %$ +\catcode`"=13 +\catcode`'=11 +\catcode`_=11 + + +\long\def\nl{^^J} +\newlinechar`^^J % LaTeX already does this + +\def\beginCmdEsc{% +\def"{\SimBackslash\SimBackslash\SimQuotes}% +\def\\{\SimBackslash\SimBackslash\SimBackslash\SimBackslash}% +} +\def\endEsc{ +\def"{\SimQuotes}% +\def\\{\SimBackslash}% +\def\{{\SimLeftCurli}% +\def\}{\SimRightCurli}% +} +\endEsc + +\def\Ctrl{ctrl+} +\def\Shift{shift+} +\def\Super{Mod4+} +\def\Key#1#2#3{% +#1\csname keyCodeK#2K#3\endcsname% +} + +\def\confirmCmd#1#2{\Cmd{i3-nagbar -t warning -m '#1' -b 'Yes' '#2'}} + +%%%%%%%%%%%%%% general Commands %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\GoMode#1{\addoutput{mode "#1"; }\Cmd{i3-mode-log "#1"}} +\def\Cmd#1{\addoutput{exec "}\beginCmdEsc\addoutput{#1}\endEsc\addoutput{"}} +\def\LayoutCont#1{\addoutput{ layout #1 }} +\def\ResizeCont#1#2#3{\addoutput{ resize #1 #2 #3 px or #3 ppt }} +\def\FloatingToggleCont{\addoutput{floating toggle}} + +%%%%%%%%%%%%%% WM Commands %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% workspaces +\def\GoWorkspace#1{\addoutput{workspace "#1"}} +\def\ContWorkspace#1{\addoutput{move container to workspace "#1"}} +\def\ContGoWorkspace#1{\ContWorkspace{#1}\addoutput{; }\GoWorkspace{#1}} +\def\MoveWorkspace#1{\addoutput{ move workspace to output #1}} +% Container +\def\FocusWind#1{\addoutput{ focus #1}} +\def\MoveCont#1{\addoutput{ move #1}} +\def\SplitContV{\addoutput{ split v }} +\def\SplitContH{\addoutput{ split h }} +\def\SplitContT{\addoutput{ split v; layout tabbed }} +\def\FullscreenContToggle{\addoutput{ fullscreen toggle }} +% Restart i3 +\def\RestartProg{\addoutput{ restart }} + +%%%%%%%%%%%%%% System modificator %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\ExitProg{\confirmCmd{Do you really want to EXIT i3 }{i3-msg exit}} +\def\ExitShutdown{\confirmCmd{Do you really want to SHUTDOWN? }{poweroff}} +\def\ExitSuspend{\Cmd{systemctl suspend}} +\def\ExitRestart{\confirmCmd{Do you really want to REBOOT? }{reboot}} + +%%%%%%%%%%%%%% Not bind commmand %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\And#1#2{#1\addoutput{ ; }#2} +\def\AndII#1#2{#1\addoutput{ ; }#2} +\def\RunCmd#1{\addoutput{exec "}\beginCmdEsc\addoutput{#1}\endEsc\addoutput{"\nl}} +\def\IiiiLine#1{\addoutput{#1\nl}} +\def\IiiiInline#1{\addoutput{#1}} + +\input keymap-i3-keyboard.tex + +\def\addoutput#1{\long\edef\output{\output #1}} +\def\bindkey#1#2{% +\addoutput{bindcode #1 }#2\addoutput{\nl}% +} +\def\BindKey#1#2{% +\addoutput{bindcode #1 }#2\addoutput{\nl}% +} + + +\newwrite\file +\immediate\openout\file = ./i3.config + + +\def\ModeDefaultName{default} +\def\UpModeName{ERR} +\def\ModeName{ERR} +\long\def\Mode#1#2{ +{ +\let\UpModeName=\ModeName +\edef\ModeName{#1} +\long\edef\output{} +\ifx\ModeName\ModeDefaultName\else\addoutput{mode "#1"\nl\{\nl}\fi +#2 +\ifx\ModeName\ModeDefaultName\else\addoutput{\}}\fi +\immediate\write\file{\output\nl +}\relax +} +} + + + +\Mode{\ModeDefaultName}{ +\input ./master.tex +} + + +\closeout\file +\bye + diff --git a/keymap/keymap-utils.tex b/keymap/keymap-utils.tex new file mode 100644 index 0000000..188535b --- /dev/null +++ b/keymap/keymap-utils.tex @@ -0,0 +1,28 @@ +\let\ex=\expandafter +\def\eat#1{} +\def\letcs#1#2{\ex\ex\ex \let\ex\ex \csname#1\endcsname \csname#2\endcsname} +\def\defcs#1#2{\def\defcstmp{#2}\letcs{#1}{defcstmp}} + +\def\for#1#2#3#4{% +\if\in#2% +\defcs{endloop#1}{}% +\ex\def\csname loop#1\endcsname##1{% +\ex\if\csname endloop#1\endcsname##1\else% +\defcs{#1}{##1}% +#4\relax% +\letcs{looptmp}{loop#1}% +\ex\ex\ex\looptmp\fi}% +\letcs{looptmp}{loop#1}% +\ex\looptmp#3\csname endloop#3\endcsname% +\else% +\csname count#1\endcsname #2\relax% +\defcs{loop#1}{% +#4\relax% +\advance\csname count#1\endcsname 1\relax% +\ifnum\csname count#1\endcsname<#3% +\letcs{looptmp}{loop#1}% +\ex\ex\ex\looptmp\fi}\csname loop#1\endcsname% +\fi% +} + + -- GitLab