From efe0e6a38273eb8e43f5109915b9b81f843cc6eb Mon Sep 17 00:00:00 2001 From: Colin Clark Date: Wed, 29 Jun 2016 20:24:54 +0100 Subject: [PATCH] Keyboard Map Add keyboard map option to Help menu. qwerty keyboard only. --- keymap/keymap.awk | 106 + keymap/keymap_template.svg | 2929 ++++++--- src/keymap_template.c | 11689 +++++++++++++++++++++++++++++++++++ src/layout_util.c | 166 +- 4 files changed, 14032 insertions(+), 858 deletions(-) create mode 100644 keymap/keymap.awk create mode 100644 src/keymap_template.c diff --git a/keymap/keymap.awk b/keymap/keymap.awk new file mode 100644 index 00000000..ed007186 --- /dev/null +++ b/keymap/keymap.awk @@ -0,0 +1,106 @@ +# Convert the original keymap_template.svg file to C program file +# Reformat to use data in the style of the gtk accelerator map routines +# awk -f keymap.awk keymap_template.svg > ../src/keymap_template.c + +BEGIN { + print "/*" + print " * Copyright (C) 2004 John Ellis" + print " * Copyright (C) 2008 - 2016 The Geeqie Team" + print " *" + print " * Author: John Ellis" + print " *" + print " * This program is free software; you can redistribute it and/or modify" + print " * it under the terms of the GNU General Public License as published by" + print " * the Free Software Foundation; either version 2 of the License, or" + print " * (at your option) any later version." + print " *" + print " * This program is distributed in the hope that it will be useful," + print " * but WITHOUT ANY WARRANTY; without even the implied warranty of" + print " * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the" + print " * GNU General Public License for more details." + print " *" + print " * You should have received a copy of the GNU General Public License along" + print " * with this program; if not, write to the Free Software Foundation, Inc.," + print " * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA." + print " */" + print "" + print "static char *keymap_template [] = {" +} + +{ + gsub(/\"/,"\\\"") + gsub(/<control>/,"\\<Primary\\>") + gsub(/<meta>/,"\\<Alt\\>") + gsub(/<shift>/,"\\<Shift\\>") + gsub(/<super>/,"\\<Super\\>") + gsub(/<Shift><Primary>/,"\\<Primary\\>\\<Shift\\>") + gsub(/<Alt><Shift>/,"\\<Shift\\>\\<Alt\\>") + gsub(/<Alt><Primary>/,"\\<Primary\\>\\<Alt\\>") + + gsub(/>\\\\\\<") + + gsub(/^/,"\"") + gsub(/$/,"\",") + + keycodes[0,0]="0" + keycodes[0,1]="parenright" + keycodes[1,0]="1" + keycodes[1,1]="exclam" + keycodes[2,0]="2" + keycodes[2,1]="quotedbl" + keycodes[3,0]="3" + keycodes[3,1]="sterling" + keycodes[4,0]="4" + keycodes[4,1]="dollar" + keycodes[5,0]="5" + keycodes[5,1]="percent" + keycodes[6,0]="6" + keycodes[6,1]="asciicircum" + keycodes[7,0]="7" + keycodes[7,1]="ampersand" + keycodes[8,0]="8" + keycodes[8,1]="asterisk" + keycodes[9,0]="9" + keycodes[9,1]="parenleft" + keycodes[10,0]="minus" + keycodes[10,1]="underscore" + keycodes[11,0]="equal" + keycodes[11,1]="plus" + keycodes[12,0]="bracketleft" + keycodes[12,1]="braceleft" + keycodes[13,0]="bracketright" + keycodes[13,1]="braceright" + keycodes[14,0]="minus" + keycodes[14,1]="underscore" + keycodes[15,0]="semicolon" + keycodes[15,1]="colon" + keycodes[16,0]="apostrophe" + keycodes[16,1]="at" + keycodes[17,0]="numbersign" + keycodes[17,1]="asciitilde" + keycodes[18,0]="comma" + keycodes[18,1]="less" + keycodes[19,0]="period" + keycodes[19,1]="greater" + keycodes[20,0]="slash" + keycodes[20,1]="question" + keycodes[21,0]="grave" + keycodes[21,1]="notsign" + keycodes[22,0]="backslash" + keycodes[22,1]="bar" + + for (i=0; i<23; i++) + { + gsub("Shift>"keycodes[i,0],"Shift\\>"keycodes[i,1]) + gsub("Primary><Shift>"keycodes[i,0],"Primary\\>\\<Shift\\>"keycodes[i,1]) + gsub("Shift><Alt>"keycodes[i,0],"Shift\\>\\<Alt\\>"keycodes[i,1]) + } + + print +} + +END { + print "NULL," + print "};" + +} diff --git a/keymap/keymap_template.svg b/keymap/keymap_template.svg index 5f79f5cf..ecea6fc3 100644 --- a/keymap/keymap_template.svg +++ b/keymap/keymap_template.svg @@ -1,5 +1,6 @@ + @@ -34,9 +35,9 @@ borderopacity="1.0" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:zoom="0.24748738" - inkscape:cx="1126.9647" - inkscape:cy="1287.1594" + inkscape:zoom="3.959798" + inkscape:cx="1684.6349" + inkscape:cy="1412.463" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" @@ -44,11 +45,12 @@ objecttolerance="10000" gridtolerance="10000" guidetolerance="10000" - inkscape:window-width="1134" - inkscape:window-height="865" - inkscape:window-x="363" - inkscape:window-y="299" - inkscape:showpageshadow="false"> + inkscape:window-width="1920" + inkscape:window-height="1026" + inkscape:window-x="0" + inkscape:window-y="25" + inkscape:showpageshadow="false" + inkscape:window-maximized="1"> image/svg+xml + @@ -142,39 +145,48 @@ id="tspan2499" x="5" y="105">key:<meta>Q + key:<super>Q key:<shift><control>Q + y="135">key:<shift><control>Q key:<control><meta>Q + y="150">key:<control><meta>Q key:<meta><shift>Q + y="165">key:<meta><shift>Q key:<meta>W + key:<super>W key:<shift><control>W key:<control><meta>W key:<meta><shift>W @@ -332,39 +353,49 @@ id="tspan2460" x="5" y="105">key:<meta>F + key:<meta>F key:<shift><control>F + y="135">key:<shift><control>F key:<control><meta>F + y="150">key:<control><meta>F key:<meta><shift>F + y="165">key:<meta><shift>F key:<meta>D + key:<super>D key:<shift><control>D key:<control><meta>D key:<meta><shift>D @@ -522,39 +562,48 @@ id="tspan2532" x="5" y="105">key:<meta>S + key:<super>S key:<shift><control>S + y="135">key:<shift><control>S key:<control><meta>S + y="150">key:<control><meta>S key:<meta><shift>S + y="165">key:<meta><shift>S key:<meta>A + key:<super>A key:<shift><control>A key:<control><meta>A key:<meta><shift>A @@ -712,39 +770,48 @@ id="tspan2604" x="5" y="105">key:<meta>U + key:<super>U key:<shift><control>U + y="135">key:<shift><control>U key:<control><meta>U + y="150">key:<control><meta>U key:<meta><shift>U + y="165">key:<meta><shift>U key:<meta>Y + key:<super>Y key:<shift><control>Y key:<control><meta>Y key:<meta><shift>Y @@ -902,39 +978,48 @@ id="tspan2676" x="5" y="105">key:<meta>T + key:<super>T key:<shift><control>T + y="135">key:<shift><control>T key:<control><meta>T + y="150">key:<control><meta>T key:<meta><shift>T + y="165">key:<meta><shift>T key:<meta>R + key:<super>R key:<shift><control>R key:<control><meta>R key:<meta><shift>R @@ -1092,39 +1186,48 @@ id="tspan2748" x="5" y="105">key:<meta>E + key:<super>E key:<shift><control>E + y="135">key:<shift><control>E key:<control><meta>E + y="150">key:<control><meta>E key:<meta><shift>E + y="165">key:<meta><shift>E key:<meta>J + key:<super>J key:<shift><control>J key:<control><meta>J key:<meta><shift>J @@ -1282,39 +1394,48 @@ id="tspan2820" x="5" y="105">key:<meta>H + key:<super>H key:<shift><control>H + y="135">key:<shift><control>H key:<control><meta>H + y="150">key:<control><meta>H key:<meta><shift>H + y="165">key:<meta><shift>H key:<meta>G + key:<super>G key:<shift><control>G key:<control><meta>G key:<meta><shift>G @@ -1472,39 +1602,48 @@ id="tspan2892" x="5" y="105">key:<meta>V + key:<super>V key:<shift><control>V + y="135">key:<shift><control>V key:<control><meta>V + y="150">key:<control><meta>V key:<meta><shift>V + y="165">key:<meta><shift>V key:<meta>C + key:<super>C key:<shift><control>C key:<control><meta>C key:<meta><shift>C @@ -1662,39 +1810,48 @@ id="tspan2964" x="5" y="105">key:<meta>X + key:<super>X key:<shift><control>X + y="135">key:<shift><control>X key:<control><meta>X + y="150">key:<control><meta>X key:<meta><shift>X + y="165">key:<meta><shift>X key:<meta>Z + key:<super>Z key:<shift><control>Z key:<control><meta>Z key:<meta><shift>Z @@ -1852,36 +2018,45 @@ x="5" id="tspan3036" sodipodi:role="line">key:<meta>3 + key:<super>3 key:<shift><control>3 key:<control><meta>3 key:<meta><shift>3 @@ -1947,39 +2122,48 @@ id="tspan3072" x="5" y="105">key:<meta>2 + key:<super>2 key:<shift><control>2 + y="135">key:<shift><control>2 key:<control><meta>2 + y="150">key:<control><meta>2 key:<meta><shift>2 + y="165">key:<meta><shift>2 key:<shift><control>1 key:<control><meta>1 key:<meta><shift>1 + key:<super>1 key:<meta>9 key:<super>9 + key:<shift><control>9 + y="135">key:<shift><control>9 key:<control><meta>9 + y="150">key:<control><meta>9 key:<meta><shift>9 + y="165">key:<meta><shift>9 key:<meta>8 + key:<super>8 key:<shift><control>8 key:<control><meta>8 key:<meta><shift>8 @@ -2327,39 +2540,48 @@ id="tspan3216" x="5" y="105">key:<meta>7 + key:<super>7 key:<shift><control>7 + y="135">key:<shift><control>7 key:<control><meta>7 + y="150">key:<control><meta>7 key:<meta><shift>7 + y="165">key:<meta><shift>7 key:<meta>6 + key:<super>6 key:<shift><control>6 key:<control><meta>6 key:<meta><shift>6 @@ -2517,39 +2748,48 @@ id="tspan3288" x="5" y="105">key:<meta>5 + key:<super>5 key:<shift><control>5 + y="135">key:<shift><control>5 key:<control><meta>5 + y="150">key:<control><meta>5 key:<meta><shift>5 + y="165">key:<meta><shift>5 key:<meta>4 + key:<super>4 key:<shift><control>4 key:<control><meta>4 key:<meta><shift>4 @@ -2707,36 +2956,45 @@ x="5" id="tspan3360" sodipodi:role="line">key:<meta>L + key:<super>L key:<shift><control>L key:<control><meta>L key:<meta><shift>L @@ -2802,39 +3060,48 @@ id="tspan3396" x="5" y="105">key:<meta>K + key:<super>K key:<shift><control>K + y="135">key:<shift><control>K key:<control><meta>K + y="150">key:<control><meta>K key:<meta><shift>K + y="165">key:<meta><shift>K key:<meta>O + key:<super>O key:<shift><control>O key:<control><meta>O key:<meta><shift>O @@ -2992,39 +3268,48 @@ id="tspan3468" x="5" y="105">key:<meta>I + key:<super>I key:<shift><control>I + y="135">key:<shift><control>I key:<control><meta>I + y="150">key:<control><meta>I key:<meta><shift>I + y="165">key:<meta><shift>I key:. + sodipodi:role="line">key:period key:<control>. + sodipodi:role="line">key:<control>period key:<shift>. + sodipodi:role="line">key:<shift>period key:<meta>. + sodipodi:role="line">key:<meta>period + key:<super>period key:<shift><control>. + sodipodi:role="line">key:<shift><control>period key:<control><meta>. + sodipodi:role="line">key:<control><meta>period key:<meta><shift>. + sodipodi:role="line">key:<meta><shift>period key:, + y="60">key:comma key:<control>, + id="tspan3532">key:<control>comma key:<shift>, + y="90">key:<shift>comma key:<meta>, + y="105">key:<meta>comma + key:<super>comma key:<shift><control>, + y="135">key:<shift><control>comma key:<control><meta>, + y="150">key:<control><meta>comma key:<meta><shift>, + y="165">key:<meta><shift>comma key:<meta>M + key:<super>M key:<shift><control>M key:<control><meta>M key:<meta><shift>M @@ -3372,39 +3684,48 @@ id="tspan3612" x="5" y="105">key:<meta>N + key:<super>N key:<shift><control>N + y="135">key:<shift><control>N key:<control><meta>N + y="150">key:<control><meta>N key:<meta><shift>N + y="165">key:<meta><shift>N key:<meta>B + key:<super>B key:<shift><control>B key:<control><meta>B key:<meta><shift>B @@ -3531,7 +3861,7 @@ y="60" x="5" id="tspan3672" - sodipodi:role="line">key:\ + sodipodi:role="line">key:backslash key:<control>\ + sodipodi:role="line">key:<control>backslash key:<shift>\ + sodipodi:role="line">key:<shift>backslash key:<meta>\ + sodipodi:role="line">key:<meta>backslash + key:<super>backslash key:<shift><control>\ + sodipodi:role="line">key:<shift><control>backslash key:<control><meta>\ + sodipodi:role="line">key:<control><meta>backslash key:<meta><shift>\ + sodipodi:role="line">key:<meta><shift>backslash key:<control>Equal key:Plus + id="tspan11561">key:<shift>Equal key:<meta>Equal + key:<super>Equal key:<shift><control>Equal + y="135">key:<shift><control>Equal key:<control><meta>Equal + y="150">key:<control><meta>Equal key:<meta><shift>Equal + y="165">key:<meta><shift>Equal key:<meta>Minus + key:<super>Minus key:<shift><control>Minus key:<control><meta>Minus key:<meta><shift>Minus @@ -3847,39 +4203,48 @@ id="tspan3792" x="5" y="105">key:<meta>0 + key:<super>0 key:<shift><control>0 + y="135">key:<shift><control>0 key:<control><meta>0 + y="150">key:<control><meta>0 key:<meta><shift>0 + y="165">key:<meta><shift>0 key:<meta>BracketRight + key:<super>BracketRight key:<shift><control>BracketRight + y="135">key:<shift><control>BracketRight key:<control><meta>BracketRight + y="150">key:<control><meta>BracketRight key:<meta><shift>BracketRight + y="165">key:<meta><shift>BracketRight key:<meta>BracketLeft + key:<super>BracketLeft key:<shift><control>BracketLeft key:<control><meta>BracketLeft key:<meta><shift>BracketLeft @@ -4132,39 +4515,48 @@ id="tspan3900" x="5" y="105">key:<meta>P + key:<super>P key:<shift><control>P + y="135">key:<shift><control>P key:<control><meta>P + y="150">key:<control><meta>P key:<meta><shift>P + y="165">key:<meta><shift>P key:<meta>Backspace + key:<super>Backspace key:<shift><control>Backspace + y="135">key:<shift><control>Backspace key:<control><meta>Backspace + y="150">key:<control><meta>Backspace key:<meta><shift>Backspace + y="165">key:<meta><shift>Backspace key:' + y="60">key:apostrophe key:<control>' + id="tspan4000">key:<control>apostrophe key:<shift>' + y="90">key:<shift>apostrophe key:<meta>' + y="105">key:<meta>apostrophe + key:<super>apostrophe key:<shift><control>' + y="135">key:<shift><control>apostrophe key:<control><meta>' + y="150">key:<control><meta>apostrophe key:<meta><shift>' + y="165">key:<meta><shift>apostrophe key:; + sodipodi:role="line">key:semicolon key:<control>; + sodipodi:role="line">key:<control>semicolon key:<shift>; + sodipodi:role="line">key:<shift>semicolon key:<meta>; + sodipodi:role="line">key:<meta>semicolon + key:<super>semicolon key:<shift><control>; + sodipodi:role="line">key:<shift><control>semicolon key:<control><meta>; + sodipodi:role="line">key:<control><meta>semicolon key:<meta><shift>; + sodipodi:role="line">key:<meta><shift>semicolon key:/ + sodipodi:role="line">key:slash key:<control>/ + sodipodi:role="line">key:<control>slash key:<shift>/ + sodipodi:role="line">key:<shift>slash key:<meta>/ + sodipodi:role="line">key:<meta>slash + key:<super>slash key:<shift><control>/ + sodipodi:role="line">key:<shift><control>slash key:<control><meta>/ + sodipodi:role="line">key:<control><meta>slash key:<meta><shift>/ + sodipodi:role="line">key:<meta><shift>slash key:` + y="60">key:grave key:<control>` + id="tspan4108">key:<control>grave key:<shift>` + y="90">key:<shift>grave key:<meta>` + y="105">key:<meta>grave key:<shift><control>` + y="135">key:<shift><control>grave key:<control><meta>` + y="150">key:<control><meta>grave key:<meta><shift>` + y="165">key:<meta><shift>grave + key:<super>grave key:<shift><control>ESCAPE key:<control><meta>ESCAPE key:<meta><shift>ESCAPE @@ -4797,36 +5235,45 @@ x="5" id="tspan4188" sodipodi:role="line">key:<meta>F4 + key:<super>F4 key:<shift><control>F4 key:<control><meta>F4 key:<meta><shift>F4 @@ -4892,39 +5339,48 @@ id="tspan4224" x="5" y="105">key:<meta>F3 + key:<super>F3 key:<shift><control>F3 + y="135">key:<shift><control>F3 key:<control><meta>F3 + y="150">key:<control><meta>F3 key:<meta><shift>F3 + y="165">key:<meta><shift>F3 key:<meta>F2 + key:<super>F2 key:<shift><control>F2 key:<control><meta>F2 key:<meta><shift>F2 @@ -5082,39 +5547,48 @@ id="tspan4296" x="5" y="105">key:<meta>F1 + key:<super>F1 key:<shift><control>F1 + y="135">key:<shift><control>F1 key:<control><meta>F1 + y="150">key:<control><meta>F1 key:<meta><shift>F1 + y="165">key:<meta><shift>F1 key:<meta>F8 + key:<super>F8 key:<shift><control>F8 + y="135">key:<shift><control>F8 key:<control><meta>F8 + y="150">key:<control><meta>F8 key:<meta><shift>F8 + y="165">key:<meta><shift>F8 key:<meta>F7 + key:<super>F7 key:<shift><control>F7 key:<control><meta>F7 key:<meta><shift>F7 @@ -5367,39 +5859,48 @@ id="tspan4404" x="5" y="105">key:<meta>F6 + key:<super>F6 key:<shift><control>F6 + y="135">key:<shift><control>F6 key:<control><meta>F6 + y="150">key:<control><meta>F6 key:<meta><shift>F6 + y="165">key:<meta><shift>F6 key:<meta>F5 + key:<super>F5 key:<shift><control>F5 key:<control><meta>F5 key:<meta><shift>F5 @@ -5557,36 +6067,45 @@ x="5" id="tspan4476" sodipodi:role="line">key:<meta>F9 + key:<super>F9 key:<shift><control>F9 key:<control><meta>F9 key:<meta><shift>F9 @@ -5652,39 +6171,48 @@ id="tspan4512" x="5" y="105">key:<meta>F10 + key:<super>F10 key:<shift><control>F10 + y="135">key:<shift><control>F10 key:<control><meta>F10 + y="150">key:<control><meta>F10 key:<meta><shift>F10 + y="165">key:<meta><shift>F10 key:<meta>F11 + key:<super>F11 key:<shift><control>F11 key:<control><meta>F11 key:<meta><shift>F11 @@ -5842,39 +6379,48 @@ id="tspan4584" x="5" y="105">key:<meta>F12 + key:<super>F12 key:<shift><control>F12 + y="135">key:<shift><control>F12 key:<control><meta>F12 + y="150">key:<control><meta>F12 key:<meta><shift>F12 + y="165">key:<meta><shift>F12 key:<shift><control>TAB key:<control><meta>TAB key:<meta><shift>TAB @@ -6035,39 +6581,39 @@ key:<shift><control>Caps Lock key:<control><meta>Caps Lock key:<meta><shift>Caps Lock Shift + x="29.138952" + y="55.81638" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:62.31797791px;line-height:100%;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#008000">Shift key:Shift + x="3.0972457" + y="80.22654">key:Shift key:<control>Shift key:<shift>Shift + x="3.2017586" + y="118.27503">key:<shift>Shift key:<meta>Shift + x="3.2341726" + y="137.25322">key:<meta>Shift key:<shift><control>Shift + x="3.4627037" + y="151.13431">key:<shift><control>Shift key:<control><meta>Shift + x="3.3767674" + y="172.40533">key:<control><meta>Shift key:<meta><shift>Shift + x="3.3029158" + y="193.87941">key:<meta><shift>Shift key:<shift><control>Alt + y="135">key:<shift><control>Alt key:<control><meta>Alt + y="150">key:<control><meta>Alt key:<meta><shift>Alt + y="165">key:<meta><shift>Alt key:<shift><control>Win key:<control><meta>Win key:<meta><shift>Win @@ -6419,35 +6973,35 @@ xml:space="preserve" style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#808000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" x="5" - y="120" + y="135" id="text4838" sodipodi:linespacing="100%">key:<shift><control>Ctrl + y="135">key:<shift><control>Ctrl key:<control><meta>Ctrl + y="150">key:<control><meta>Ctrl key:<meta><shift>Ctrl + y="165">key:<meta><shift>Ctrl key:<meta>Shift + key:<super>Shift key:<shift><control>Shift key:<control><meta>Shift key:<meta><shift>Shift @@ -6611,33 +7174,33 @@ key:<shift><control>Ctrl key:<control><meta>Ctrl key:<meta><shift>Ctrl @@ -6708,35 +7271,35 @@ xml:space="preserve" style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#808000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" x="5" - y="120" + y="135" id="text4948" sodipodi:linespacing="100%">key:<shift><control>Alt + y="135">key:<shift><control>Alt key:<control><meta>Alt + y="150">key:<control><meta>Alt key:<meta><shift>Alt + y="165">key:<meta><shift>Alt key:<shift><control>Win key:<control><meta>Win key:<meta><shift>Win @@ -6898,35 +7461,35 @@ xml:space="preserve" style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#808000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" x="5" - y="120" + y="135" id="text5020" sodipodi:linespacing="100%">key:<shift><control>Menu + y="135">key:<shift><control>Menu key:<control><meta>Menu + y="150">key:<control><meta>Menu key:<meta><shift>Menu + y="165">key:<meta><shift>Menu key:<meta>Space + key:<super>Space key:<shift><control>Space key:<control><meta>Space key:<meta><shift>Space + transform="matrix(0.52641739,0,0,1.0009796,2654.9902,709.64482)"> + sodipodi:nodetypes="ccccccc" + inkscape:connector-curvature="0" /> Enter key:Enter key:<control>Enter key:<shift>Enter key:<meta>Enter key:<shift><control>Enter key:<control><meta>Enter key:<meta><shift>Enter - + @@ -7139,77 +7769,76 @@ y="50">PrtScr key:PrtScr + id="tspan6375">key:Print key:<control>PrtScr + id="tspan6377">key:<control>Print key:<shift>PrtScr + id="tspan6379">key:<shift>Print key:<meta>PrtScr + id="tspan6381">key:<meta>Print key:<super>Print + key:<shift><control>PrtScr + id="tspan6385">key:<shift><control>Print key:<control><meta>PrtScr + id="tspan6387">key:<control><meta>Print key:<meta><shift>PrtScr + id="tspan6389">key:<meta><shift>Print key:<meta>Insert + key:<super>Insert key:<shift><control>Insert key:<control><meta>Insert key:<meta><shift>Insert @@ -7367,36 +8005,45 @@ x="5" id="tspan3806" sodipodi:role="line">key:<meta>Page_Up + key:<super>Page_Up key:<shift><control>Page_Up key:<control><meta>Page_Up key:<meta><shift>Page_Up @@ -7462,39 +8109,48 @@ id="tspan3842" x="5" y="105">key:<meta>Home + key:<super>Home key:<shift><control>Home + y="135">key:<shift><control>Home key:<control><meta>Home + y="150">key:<control><meta>Home key:<meta><shift>Home + y="165">key:<meta><shift>Home key:<meta>Pause + key:<super>Pause key:<shift><control>Pause key:<control><meta>Pause key:<meta><shift>Pause @@ -7621,70 +8286,70 @@ sodipodi:role="line" id="tspan3902" x="5" - y="60">key:ScrL + y="60">key:Scroll_Lock key:<control>ScrL + id="tspan6391">key:<control>Scroll_Lock key:<shift>ScrL + id="tspan6393">key:<shift>Scroll_Lock key:<meta>ScrL + id="tspan6396">key:<meta>Scroll_Lock + key:<super>Scroll_Lock key:<shift><control>ScrL + id="tspan6400">key:<shift><control>Scroll_Lock key:<control><meta>ScrL + id="tspan6402">key:<control><meta>Scroll_Lock key:<meta><shift>ScrL + id="tspan6404">key:<meta><shift>Scroll_Lock key:<meta>Page_Down + key:<super>Page_Down key:<shift><control>Page_Down + y="135">key:<shift><control>Page_Down key:<control><meta>Page_Down + y="150">key:<control><meta>Page_Down key:<meta><shift>Page_Down + y="165">key:<meta><shift>Page_Down key:<meta>End + key:<super>End key:<shift><control>End key:<control><meta>End key:<meta><shift>End @@ -7937,39 +8620,48 @@ id="tspan4022" x="5" y="105">key:<meta>Delete + key:<super>Delete key:<shift><control>Delete + y="135">key:<shift><control>Delete key:<control><meta>Delete + y="150">key:<control><meta>Delete key:<meta><shift>Delete + y="165">key:<meta><shift>Delete key:<meta>NumLock + key:<super>NumLock key:<shift><control>NumLock + y="135">key:<shift><control>NumLock key:<control><meta>NumLock + y="150">key:<control><meta>NumLock key:<meta><shift>NumLock + y="165">key:<meta><shift>NumLock key:<meta>KP_Subtract + key:<super>KP_Subtract key:<shift><control>KP_Subtract key:<control><meta>KP_Subtract key:<meta><shift>KP_Subtract @@ -8222,39 +8932,48 @@ id="tspan4130" x="5" y="105">key:<meta>KP_Multiply + key:<super>KP_Multiply key:<shift><control>KP_Multiply + y="135">key:<shift><control>KP_Multiply key:<control><meta>KP_Multiply + y="150">key:<control><meta>KP_Multiply key:<meta><shift>KP_Multiply + y="165">key:<meta><shift>KP_Multiply key:<meta>KP_Divide + key:<super>KP_Divide key:<shift><control>KP_Divide key:<control><meta>KP_Divide key:<meta><shift>KP_Divide @@ -8412,36 +9140,45 @@ x="5" id="tspan4202" sodipodi:role="line">key:<meta>KP_9 + key:<super>KP_9 key:<shift><control>KP_9 key:<control><meta>KP_9 key:<meta><shift>KP_9 @@ -8507,39 +9244,48 @@ id="tspan4238" x="5" y="105">key:<meta>KP_8 + key:<super>KP_8 key:<shift><control>KP_8 + y="135">key:<shift><control>KP_8 key:<control><meta>KP_8 + y="150">key:<control><meta>KP_8 key:<meta><shift>KP_8 + y="165">key:<meta><shift>KP_8 key:<meta>KP_7 + key:<super>KP_7 key:<shift><control>KP_7 key:<control><meta>KP_7 key:<meta><shift>KP_7 @@ -8697,39 +9452,48 @@ id="tspan4310" x="5" y="105">key:<meta>KP_3 + key:<super>KP_3 key:<shift><control>KP_3 + y="135">key:<shift><control>KP_3 key:<control><meta>KP_3 + y="150">key:<control><meta>KP_3 key:<meta><shift>KP_3 + y="165">key:<meta><shift>KP_3 key:<meta>KP_2 + key:<super>KP_2 key:<shift><control>KP_2 key:<control><meta>KP_2 key:<meta><shift>KP_2 @@ -8887,39 +9660,48 @@ id="tspan4382" x="5" y="105">key:<meta>KP_6 + key:<super>KP_6 key:<shift><control>KP_6 + y="135">key:<shift><control>KP_6 key:<control><meta>KP_6 + y="150">key:<control><meta>KP_6 key:<meta><shift>KP_6 + y="165">key:<meta><shift>KP_6 key:<meta>KP_5 + key:<super>KP_5 key:<shift><control>KP_5 key:<control><meta>KP_5 key:<meta><shift>KP_5 @@ -9077,39 +9868,48 @@ id="tspan4454" x="5" y="105">key:<meta>KP_1 + key:<super>KP_1 key:<shift><control>KP_1 + y="135">key:<shift><control>KP_1 key:<control><meta>KP_1 + y="150">key:<control><meta>KP_1 key:<meta><shift>KP_1 + y="165">key:<meta><shift>KP_1 key:<meta>KP_4 + key:<super>KP_4 key:<shift><control>KP_4 key:<control><meta>KP_4 key:<meta><shift>KP_4 @@ -9267,36 +10076,45 @@ x="5" id="tspan4526" sodipodi:role="line">key:<meta>KP_0 + key:<super>KP_0 key:<shift><control>KP_0 key:<control><meta>KP_0 key:<meta><shift>KP_0 @@ -9362,39 +10180,48 @@ id="tspan4562" x="5" y="105">key:<meta>KP_Delete + key:<super>KP_Delete key:<shift><control>KP_Delete + y="135">key:<shift><control>KP_Delete key:<control><meta>KP_Delete + y="150">key:<control><meta>KP_Delete key:<meta><shift>KP_Delete + y="165">key:<meta><shift>KP_Delete key:<meta>KP_Enter + key:<super>KP_Enter key:<shift><control>KP_Enter key:<control><meta>KP_Enter key:<meta><shift>KP_Enter @@ -9552,39 +10388,48 @@ id="tspan4634" x="5" y="105">key:<meta>KP_Add + key:<super>KP_Add key:<shift><control>KP_Add + y="135">key:<shift><control>KP_Add key:<control><meta>KP_Add + y="150">key:<control><meta>KP_Add key:<meta><shift>KP_Add + y="165">key:<meta><shift>KP_Add key:<meta>Right + key:<super>Right key:<shift><control>Right + y="135">key:<shift><control>Right key:<control><meta>Right + y="150">key:<control><meta>Right key:<meta><shift>Right + y="165">key:<meta><shift>Right key:<meta>Up + key:<super>Up key:<shift><control>Up key:<control><meta>Up key:<meta><shift>Up @@ -9837,39 +10700,48 @@ id="tspan4742" x="5" y="105">key:<meta>Left + key:<super>Left key:<shift><control>Left + y="135">key:<shift><control>Left key:<control><meta>Left + y="150">key:<control><meta>Left key:<meta><shift>Left + y="165">key:<meta><shift>Left key:<meta>Down + key:<super>Down key:<shift><control>Down key:<control><meta>Down key:<meta><shift>Down @@ -10027,36 +10908,45 @@ x="5" id="tspan4814" sodipodi:role="line">key:<meta>M1 + key:<super>M1 key:<shift><control>M1 key:<control><meta>M1 key:<meta><shift>M1 @@ -10122,39 +11012,49 @@ id="tspan4850" x="5" y="105">key:<meta>M3 + key:<meta>M3 key:<shift><control>M3 + y="135">key:<shift><control>M3 key:<control><meta>M3 + y="150">key:<control><meta>M3 key:<meta><shift>M3 + y="165">key:<meta><shift>M3 key:<meta>M2 + key:<super>M2 key:<shift><control>M2 key:<control><meta>M2 key:<meta><shift>M2 @@ -10312,39 +11221,48 @@ id="tspan4923" x="5" y="105">key:<meta>MW5 + key:<super>MW5 key:<shift><control>MW5 + y="135">key:<shift><control>MW5 key:<control><meta>MW5 + y="150">key:<control><meta>MW5 key:<meta><shift>MW5 + y="165">key:<meta><shift>MW5 key:<meta>MW4 + key:<super>MW4 key:<shift><control>MW4 key:<control><meta>MW4 key:<meta><shift>MW4 @@ -10446,5 +11373,293 @@ d="M 140,1432.9922 L 710,1432.9922 L 710,2262.9922 C 710,2262.9922 720,2502.9922 420,2502.9922 C 120,2502.9922 140,2262.9922 140,2262.9922 L 140,1432.9922 z" id="path4973" sodipodi:nodetypes="ccczcc" /> + + + Colors + key + <control>key + <shift>key + <meta>key + <super>key + <shift><control>key + <control><meta>key + <meta><shift>key + + + + \ + key:backslash + key:<control>backslash + key:<shift>backslash + key:<meta>backslash + key:<super>backslash + key:<shift><control>backslash + key:<control><meta>backslash + key:<meta><shift>backslash + + + + # + key:numbersign + key:<control>numbersign + key:<shift>numbersign + key:<meta>numbersign + key:<super>numbersign + key:<shift><control>numbersign + key:<control><meta>numbersign + key:<meta><shift>numbersign + + diff --git a/src/keymap_template.c b/src/keymap_template.c new file mode 100644 index 00000000..d45917c8 --- /dev/null +++ b/src/keymap_template.c @@ -0,0 +1,11689 @@ +/* + * Copyright (C) 2004 John Ellis + * Copyright (C) 2008 - 2016 The Geeqie Team + * + * Author: John Ellis + * + * This program 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 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +static char *keymap_template [] = { +"", +"", +"", +"", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" image/svg+xml", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" Q", +" key:Q", +" key:<Primary>Q", +" key:<Shift>Q", +" key:<Alt>Q", +" key:<Super>Q", +" key:<Primary><Shift>Q", +" key:<Primary><Alt>Q", +" key:<Shift><Alt>Q", +" ", +" ", +" ", +" W", +" key:W", +" key:<Primary>W", +" key:<Shift>W", +" key:<Alt>W", +" key:<Super>W", +" key:<Primary><Shift>W", +" key:<Primary><Alt>W", +" key:<Shift><Alt>W", +" ", +" ", +" ", +" F", +" key:F", +" key:<Primary>F", +" key:<Shift>F", +" key:<Alt>F", +" key:<Alt>F", +" key:<Primary><Shift>F", +" key:<Primary><Alt>F", +" key:<Shift><Alt>F", +" ", +" ", +" ", +" D", +" key:D", +" key:<Primary>D", +" key:<Shift>D", +" key:<Alt>D", +" key:<Super>D", +" key:<Primary><Shift>D", +" key:<Primary><Alt>D", +" key:<Shift><Alt>D", +" ", +" ", +" ", +" S", +" key:S", +" key:<Primary>S", +" key:<Shift>S", +" key:<Alt>S", +" key:<Super>S", +" key:<Primary><Shift>S", +" key:<Primary><Alt>S", +" key:<Shift><Alt>S", +" ", +" ", +" ", +" A", +" key:A", +" key:<Primary>A", +" key:<Shift>A", +" key:<Alt>A", +" key:<Super>A", +" key:<Primary><Shift>A", +" key:<Primary><Alt>A", +" key:<Shift><Alt>A", +" ", +" ", +" ", +" U", +" key:U", +" key:<Primary>U", +" key:<Shift>U", +" key:<Alt>U", +" key:<Super>U", +" key:<Primary><Shift>U", +" key:<Primary><Alt>U", +" key:<Shift><Alt>U", +" ", +" ", +" ", +" Y", +" key:Y", +" key:<Primary>Y", +" key:<Shift>Y", +" key:<Alt>Y", +" key:<Super>Y", +" key:<Primary><Shift>Y", +" key:<Primary><Alt>Y", +" key:<Shift><Alt>Y", +" ", +" ", +" ", +" T", +" key:T", +" key:<Primary>T", +" key:<Shift>T", +" key:<Alt>T", +" key:<Super>T", +" key:<Primary><Shift>T", +" key:<Primary><Alt>T", +" key:<Shift><Alt>T", +" ", +" ", +" ", +" R", +" key:R", +" key:<Primary>R", +" key:<Shift>R", +" key:<Alt>R", +" key:<Super>R", +" key:<Primary><Shift>R", +" key:<Primary><Alt>R", +" key:<Shift><Alt>R", +" ", +" ", +" ", +" E", +" key:E", +" key:<Primary>E", +" key:<Shift>E", +" key:<Alt>E", +" key:<Super>E", +" key:<Primary><Shift>E", +" key:<Primary><Alt>E", +" key:<Shift><Alt>E", +" ", +" ", +" ", +" J", +" key:J", +" key:<Primary>J", +" key:<Shift>J", +" key:<Alt>J", +" key:<Super>J", +" key:<Primary><Shift>J", +" key:<Primary><Alt>J", +" key:<Shift><Alt>J", +" ", +" ", +" ", +" H", +" key:H", +" key:<Primary>H", +" key:<Shift>H", +" key:<Alt>H", +" key:<Super>H", +" key:<Primary><Shift>H", +" key:<Primary><Alt>H", +" key:<Shift><Alt>H", +" ", +" ", +" ", +" G", +" key:G", +" key:<Primary>G", +" key:<Shift>G", +" key:<Alt>G", +" key:<Super>G", +" key:<Primary><Shift>G", +" key:<Primary><Alt>G", +" key:<Shift><Alt>G", +" ", +" ", +" ", +" V", +" key:V", +" key:<Primary>V", +" key:<Shift>V", +" key:<Alt>V", +" key:<Super>V", +" key:<Primary><Shift>V", +" key:<Primary><Alt>V", +" key:<Shift><Alt>V", +" ", +" ", +" ", +" C", +" key:C", +" key:<Primary>C", +" key:<Shift>C", +" key:<Alt>C", +" key:<Super>C", +" key:<Primary><Shift>C", +" key:<Primary><Alt>C", +" key:<Shift><Alt>C", +" ", +" ", +" ", +" X", +" key:X", +" key:<Primary>X", +" key:<Shift>X", +" key:<Alt>X", +" key:<Super>X", +" key:<Primary><Shift>X", +" key:<Primary><Alt>X", +" key:<Shift><Alt>X", +" ", +" ", +" ", +" Z", +" key:Z", +" key:<Primary>Z", +" key:<Shift>Z", +" key:<Alt>Z", +" key:<Super>Z", +" key:<Primary><Shift>Z", +" key:<Primary><Alt>Z", +" key:<Shift><Alt>Z", +" ", +" ", +" ", +" 3", +" key:3", +" key:<Primary>3", +" key:<Shift>sterling", +" key:<Alt>3", +" key:<Super>3", +" key:<Primary><Shift>sterling", +" key:<Primary><Alt>3", +" key:<Shift><Alt>sterling", +" ", +" ", +" ", +" 2", +" key:2", +" key:<Primary>2", +" key:<Shift>quotedbl", +" key:<Alt>2", +" key:<Super>2", +" key:<Primary><Shift>quotedbl", +" key:<Primary><Alt>2", +" key:<Shift><Alt>quotedbl", +" ", +" ", +" ", +" 1", +" key:1", +" key:<Primary>1", +" key:<Shift>exclam", +" key:<Alt>1", +" key:<Primary><Shift>exclam", +" key:<Primary><Alt>1", +" key:<Shift><Alt>exclam", +" key:<Super>1", +" ", +" ", +" ", +" 9", +" key:9", +" key:<Primary>9", +" key:<Shift>parenleft", +" key:<Alt>9", +" key:<Super>9", +" key:<Primary><Shift>parenleft", +" key:<Primary><Alt>9", +" key:<Shift><Alt>parenleft", +" ", +" ", +" ", +" 8", +" key:8", +" key:<Primary>8", +" key:<Shift>asterisk", +" key:<Alt>8", +" key:<Super>8", +" key:<Primary><Shift>asterisk", +" key:<Primary><Alt>8", +" key:<Shift><Alt>asterisk", +" ", +" ", +" ", +" 7", +" key:7", +" key:<Primary>7", +" key:<Shift>ampersand", +" key:<Alt>7", +" key:<Super>7", +" key:<Primary><Shift>ampersand", +" key:<Primary><Alt>7", +" key:<Shift><Alt>ampersand", +" ", +" ", +" ", +" 6", +" key:6", +" key:<Primary>6", +" key:<Shift>asciicircum", +" key:<Alt>6", +" key:<Super>6", +" key:<Primary><Shift>asciicircum", +" key:<Primary><Alt>6", +" key:<Shift><Alt>asciicircum", +" ", +" ", +" ", +" 5", +" key:5", +" key:<Primary>5", +" key:<Shift>percent", +" key:<Alt>5", +" key:<Super>5", +" key:<Primary><Shift>percent", +" key:<Primary><Alt>5", +" key:<Shift><Alt>percent", +" ", +" ", +" ", +" 4", +" key:4", +" key:<Primary>4", +" key:<Shift>dollar", +" key:<Alt>4", +" key:<Super>4", +" key:<Primary><Shift>dollar", +" key:<Primary><Alt>4", +" key:<Shift><Alt>dollar", +" ", +" ", +" ", +" L", +" key:L", +" key:<Primary>L", +" key:<Shift>L", +" key:<Alt>L", +" key:<Super>L", +" key:<Primary><Shift>L", +" key:<Primary><Alt>L", +" key:<Shift><Alt>L", +" ", +" ", +" ", +" K", +" key:K", +" key:<Primary>K", +" key:<Shift>K", +" key:<Alt>K", +" key:<Super>K", +" key:<Primary><Shift>K", +" key:<Primary><Alt>K", +" key:<Shift><Alt>K", +" ", +" ", +" ", +" O", +" key:O", +" key:<Primary>O", +" key:<Shift>O", +" key:<Alt>O", +" key:<Super>O", +" key:<Primary><Shift>O", +" key:<Primary><Alt>O", +" key:<Shift><Alt>O", +" ", +" ", +" ", +" I", +" key:I", +" key:<Primary>I", +" key:<Shift>I", +" key:<Alt>I", +" key:<Super>I", +" key:<Primary><Shift>I", +" key:<Primary><Alt>I", +" key:<Shift><Alt>I", +" ", +" ", +" ", +" .", +" key:period", +" key:<Primary>period", +" key:<Shift>greater", +" key:<Alt>period", +" key:<Super>period", +" key:<Primary><Shift>greater", +" key:<Primary><Alt>period", +" key:<Shift><Alt>greater", +" ", +" ", +" ", +" ,", +" key:comma", +" key:<Primary>comma", +" key:<Shift>less", +" key:<Alt>comma", +" key:<Super>comma", +" key:<Primary><Shift>less", +" key:<Primary><Alt>comma", +" key:<Shift><Alt>less", +" ", +" ", +" ", +" M", +" key:M", +" key:<Primary>M", +" key:<Shift>M", +" key:<Alt>M", +" key:<Super>M", +" key:<Primary><Shift>M", +" key:<Primary><Alt>M", +" key:<Shift><Alt>M", +" ", +" ", +" ", +" N", +" key:N", +" key:<Primary>N", +" key:<Shift>N", +" key:<Alt>N", +" key:<Super>N", +" key:<Primary><Shift>N", +" key:<Primary><Alt>N", +" key:<Shift><Alt>N", +" ", +" ", +" ", +" B", +" key:B", +" key:<Primary>B", +" key:<Shift>B", +" key:<Alt>B", +" key:<Super>B", +" key:<Primary><Shift>B", +" key:<Primary><Alt>B", +" key:<Shift><Alt>B", +" ", +" ", +" ", +" \\", +" key:backslash", +" key:<Primary>backslash", +" key:<Shift>bar", +" key:<Alt>backslash", +" key:<Super>backslash", +" key:<Primary><Shift>bar", +" key:<Primary><Alt>backslash", +" key:<Shift><Alt>bar", +" ", +" ", +" ", +" =", +" key:Equal", +" key:<Primary>Equal", +" key:<Shift>Equal", +" key:<Alt>Equal", +" key:<Super>Equal", +" key:<Primary><Shift>Equal", +" key:<Primary><Alt>Equal", +" key:<Shift><Alt>Equal", +" ", +" ", +" ", +" -", +" key:Minus", +" key:<Primary>Minus", +" key:<Shift>Minus", +" key:<Alt>Minus", +" key:<Super>Minus", +" key:<Primary><Shift>Minus", +" key:<Primary><Alt>Minus", +" key:<Shift><Alt>Minus", +" ", +" ", +" ", +" 0", +" key:0", +" key:<Primary>0", +" key:<Shift>parenright", +" key:<Alt>0", +" key:<Super>0", +" key:<Primary><Shift>parenright", +" key:<Primary><Alt>0", +" key:<Shift><Alt>parenright", +" ", +" ", +" ", +" ]", +" key:BracketRight", +" key:<Primary>BracketRight", +" key:<Shift>BracketRight", +" key:<Alt>BracketRight", +" key:<Super>BracketRight", +" key:<Primary><Shift>BracketRight", +" key:<Primary><Alt>BracketRight", +" key:<Shift><Alt>BracketRight", +" ", +" ", +" ", +" [", +" key:BracketLeft", +" key:<Primary>BracketLeft", +" key:<Shift>BracketLeft", +" key:<Alt>BracketLeft", +" key:<Super>BracketLeft", +" key:<Primary><Shift>BracketLeft", +" key:<Primary><Alt>BracketLeft", +" key:<Shift><Alt>BracketLeft", +" ", +" ", +" ", +" P", +" key:P", +" key:<Primary>P", +" key:<Shift>P", +" key:<Alt>P", +" key:<Super>P", +" key:<Primary><Shift>P", +" key:<Primary><Alt>P", +" key:<Shift><Alt>P", +" ", +" ", +" ", +" BS", +" key:Backspace", +" key:<Primary>Backspace", +" key:<Shift>Backspace", +" key:<Alt>Backspace", +" key:<Super>Backspace", +" key:<Primary><Shift>Backspace", +" key:<Primary><Alt>Backspace", +" key:<Shift><Alt>Backspace", +" ", +" ", +" ", +" '", +" key:apostrophe", +" key:<Primary>apostrophe", +" key:<Shift>at", +" key:<Alt>apostrophe", +" key:<Super>apostrophe", +" key:<Primary><Shift>at", +" key:<Primary><Alt>apostrophe", +" key:<Shift><Alt>at", +" ", +" ", +" ", +" ;", +" key:semicolon", +" key:<Primary>semicolon", +" key:<Shift>colon", +" key:<Alt>semicolon", +" key:<Super>semicolon", +" key:<Primary><Shift>colon", +" key:<Primary><Alt>semicolon", +" key:<Shift><Alt>colon", +" ", +" ", +" ", +" /", +" key:slash", +" key:<Primary>slash", +" key:<Shift>question", +" key:<Alt>slash", +" key:<Super>slash", +" key:<Primary><Shift>question", +" key:<Primary><Alt>slash", +" key:<Shift><Alt>question", +" ", +" ", +" ", +" `", +" key:grave", +" key:<Primary>grave", +" key:<Shift>notsign", +" key:<Alt>grave", +" key:<Primary><Shift>notsign", +" key:<Primary><Alt>grave", +" key:<Shift><Alt>notsign", +" key:<Super>grave", +" ", +" ", +" ", +" ESC", +" key:ESCAPE", +" key:<Primary>ESCAPE", +" key:<Shift>ESCAPE", +" key:<Alt>ESCAPE", +" key:<Primary><Shift>ESCAPE", +" key:<Primary><Alt>ESCAPE", +" key:<Shift><Alt>ESCAPE", +" ", +" ", +" ", +" F4", +" key:F4", +" key:<Primary>F4", +" key:<Shift>F4", +" key:<Alt>F4", +" key:<Super>F4", +" key:<Primary><Shift>F4", +" key:<Primary><Alt>F4", +" key:<Shift><Alt>F4", +" ", +" ", +" ", +" F3", +" key:F3", +" key:<Primary>F3", +" key:<Shift>F3", +" key:<Alt>F3", +" key:<Super>F3", +" key:<Primary><Shift>F3", +" key:<Primary><Alt>F3", +" key:<Shift><Alt>F3", +" ", +" ", +" ", +" F2", +" key:F2", +" key:<Primary>F2", +" key:<Shift>F2", +" key:<Alt>F2", +" key:<Super>F2", +" key:<Primary><Shift>F2", +" key:<Primary><Alt>F2", +" key:<Shift><Alt>F2", +" ", +" ", +" ", +" F1", +" key:F1", +" key:<Primary>F1", +" key:<Shift>F1", +" key:<Alt>F1", +" key:<Super>F1", +" key:<Primary><Shift>F1", +" key:<Primary><Alt>F1", +" key:<Shift><Alt>F1", +" ", +" ", +" ", +" F8", +" key:F8", +" key:<Primary>F8", +" key:<Shift>F8", +" key:<Alt>F8", +" key:<Super>F8", +" key:<Primary><Shift>F8", +" key:<Primary><Alt>F8", +" key:<Shift><Alt>F8", +" ", +" ", +" ", +" F7", +" key:F7", +" key:<Primary>F7", +" key:<Shift>F7", +" key:<Alt>F7", +" key:<Super>F7", +" key:<Primary><Shift>F7", +" key:<Primary><Alt>F7", +" key:<Shift><Alt>F7", +" ", +" ", +" ", +" F6", +" key:F6", +" key:<Primary>F6", +" key:<Shift>F6", +" key:<Alt>F6", +" key:<Super>F6", +" key:<Primary><Shift>F6", +" key:<Primary><Alt>F6", +" key:<Shift><Alt>F6", +" ", +" ", +" ", +" F5", +" key:F5", +" key:<Primary>F5", +" key:<Shift>F5", +" key:<Alt>F5", +" key:<Super>F5", +" key:<Primary><Shift>F5", +" key:<Primary><Alt>F5", +" key:<Shift><Alt>F5", +" ", +" ", +" ", +" F9", +" key:F9", +" key:<Primary>F9", +" key:<Shift>F9", +" key:<Alt>F9", +" key:<Super>F9", +" key:<Primary><Shift>F9", +" key:<Primary><Alt>F9", +" key:<Shift><Alt>F9", +" ", +" ", +" ", +" F10", +" key:F10", +" key:<Primary>F10", +" key:<Shift>F10", +" key:<Alt>F10", +" key:<Super>F10", +" key:<Primary><Shift>F10", +" key:<Primary><Alt>F10", +" key:<Shift><Alt>F10", +" ", +" ", +" ", +" F11", +" key:F11", +" key:<Primary>F11", +" key:<Shift>F11", +" key:<Alt>F11", +" key:<Super>F11", +" key:<Primary><Shift>F11", +" key:<Primary><Alt>F11", +" key:<Shift><Alt>F11", +" ", +" ", +" ", +" F12", +" key:F12", +" key:<Primary>F12", +" key:<Shift>F12", +" key:<Alt>F12", +" key:<Super>F12", +" key:<Primary><Shift>F12", +" key:<Primary><Alt>F12", +" key:<Shift><Alt>F12", +" ", +" ", +" ", +" TAB", +" key:TAB", +" key:<Primary>TAB", +" key:<Shift>TAB", +" key:<Alt>TAB", +" key:<Primary><Shift>TAB", +" key:<Primary><Alt>TAB", +" key:<Shift><Alt>TAB", +" ", +" ", +" ", +" Caps Lock", +" key:Caps Lock", +" key:<Primary>Caps Lock", +" key:<Shift>Caps Lock", +" key:<Alt>Caps Lock", +" key:<Primary><Shift>Caps Lock", +" key:<Primary><Alt>Caps Lock", +" key:<Shift><Alt>Caps Lock", +" ", +" ", +" ", +" Shift", +" key:Shift", +" key:<Primary>Shift", +" key:<Shift>Shift", +" key:<Alt>Shift", +" key:<Primary><Shift>Shift", +" key:<Primary><Alt>Shift", +" key:<Shift><Alt>Shift", +" ", +" ", +" ", +" Alt", +" key:Alt", +" key:<Primary>Alt", +" key:<Shift>Alt", +" key:<Alt>Alt", +" key:<Primary><Shift>Alt", +" key:<Primary><Alt>Alt", +" key:<Shift><Alt>Alt", +" ", +" ", +" ", +" Win", +" key:Win", +" key:<Primary>Win", +" key:<Shift>Win", +" key:<Alt>Win", +" key:<Primary><Shift>Win", +" key:<Primary><Alt>Win", +" key:<Shift><Alt>Win", +" ", +" ", +" ", +" Ctrl", +" key:Ctrl", +" key:<Primary>Ctrl", +" key:<Shift>Ctrl", +" key:<Alt>Ctrl", +" key:<Primary><Shift>Ctrl", +" key:<Primary><Alt>Ctrl", +" key:<Shift><Alt>Ctrl", +" ", +" ", +" ", +" Shift", +" key:Shift", +" key:<Primary>Shift", +" key:<Shift>Shift", +" key:<Alt>Shift", +" key:<Super>Shift", +" key:<Primary><Shift>Shift", +" key:<Primary><Alt>Shift", +" key:<Shift><Alt>Shift", +" ", +" ", +" ", +" Ctrl", +" key:Ctrl", +" key:<Primary>Ctrl", +" key:<Shift>Ctrl", +" key:<Alt>Ctrl", +" key:<Primary><Shift>Ctrl", +" key:<Primary><Alt>Ctrl", +" key:<Shift><Alt>Ctrl", +" ", +" ", +" ", +" Alt", +" key:Alt", +" key:<Primary>Alt", +" key:<Shift>Alt", +" key:<Alt>Alt", +" key:<Primary><Shift>Alt", +" key:<Primary><Alt>Alt", +" key:<Shift><Alt>Alt", +" ", +" ", +" ", +" Win", +" key:Win", +" key:<Primary>Win", +" key:<Shift>Win", +" key:<Alt>Win", +" key:<Primary><Shift>Win", +" key:<Primary><Alt>Win", +" key:<Shift><Alt>Win", +" ", +" ", +" ", +" Menu", +" key:Menu", +" key:<Primary>Menu", +" key:<Shift>Menu", +" key:<Alt>Menu", +" key:<Primary><Shift>Menu", +" key:<Primary><Alt>Menu", +" key:<Shift><Alt>Menu", +" ", +" ", +" ", +" Space", +" key:Space", +" key:<Primary>Space", +" key:<Shift>Space", +" key:<Alt>Space", +" key:<Super>Space", +" key:<Primary><Shift>Space", +" key:<Primary><Alt>Space", +" key:<Shift><Alt>Space", +" ", +" ", +" ", +" Enter", +" key:Enter", +" key:<Primary>Enter", +" key:<Shift>Enter", +" key:<Alt>Enter", +" key:<Primary><Shift>Enter", +" key:<Primary><Alt>Enter", +" key:<Shift><Alt>Enter", +" ", +" ", +" ", +" PrtScr", +" key:Print", +" key:<Primary>Print", +" key:<Shift>Print", +" key:<Alt>Print", +" key:<Super>Print", +" key:<Primary><Shift>Print", +" key:<Primary><Alt>Print", +" key:<Shift><Alt>Print", +" ", +" ", +" ", +" Insert", +" key:Insert", +" key:<Primary>Insert", +" key:<Shift>Insert", +" key:<Alt>Insert", +" key:<Super>Insert", +" key:<Primary><Shift>Insert", +" key:<Primary><Alt>Insert", +" key:<Shift><Alt>Insert", +" ", +" ", +" ", +" PgUp", +" key:Page_Up", +" key:<Primary>Page_Up", +" key:<Shift>Page_Up", +" key:<Alt>Page_Up", +" key:<Super>Page_Up", +" key:<Primary><Shift>Page_Up", +" key:<Primary><Alt>Page_Up", +" key:<Shift><Alt>Page_Up", +" ", +" ", +" ", +" Home", +" key:Home", +" key:<Primary>Home", +" key:<Shift>Home", +" key:<Alt>Home", +" key:<Super>Home", +" key:<Primary><Shift>Home", +" key:<Primary><Alt>Home", +" key:<Shift><Alt>Home", +" ", +" ", +" ", +" Pause", +" key:Pause", +" key:<Primary>Pause", +" key:<Shift>Pause", +" key:<Alt>Pause", +" key:<Super>Pause", +" key:<Primary><Shift>Pause", +" key:<Primary><Alt>Pause", +" key:<Shift><Alt>Pause", +" ", +" ", +" ", +" ScrL", +" key:Scroll_Lock", +" key:<Primary>Scroll_Lock", +" key:<Shift>Scroll_Lock", +" key:<Alt>Scroll_Lock", +" key:<Super>Scroll_Lock", +" key:<Primary><Shift>Scroll_Lock", +" key:<Primary><Alt>Scroll_Lock", +" key:<Shift><Alt>Scroll_Lock", +" ", +" ", +" ", +" PgDn", +" key:Page_Down", +" key:<Primary>Page_Down", +" key:<Shift>Page_Down", +" key:<Alt>Page_Down", +" key:<Super>Page_Down", +" key:<Primary><Shift>Page_Down", +" key:<Primary><Alt>Page_Down", +" key:<Shift><Alt>Page_Down", +" ", +" ", +" ", +" End", +" key:End", +" key:<Primary>End", +" key:<Shift>End", +" key:<Alt>End", +" key:<Super>End", +" key:<Primary><Shift>End", +" key:<Primary><Alt>End", +" key:<Shift><Alt>End", +" ", +" ", +" ", +" Del", +" key:Delete", +" key:<Primary>Delete", +" key:<Shift>Delete", +" key:<Alt>Delete", +" key:<Super>Delete", +" key:<Primary><Shift>Delete", +" key:<Primary><Alt>Delete", +" key:<Shift><Alt>Delete", +" ", +" ", +" ", +" NumLock", +" key:NumLock", +" key:<Primary>NumLock", +" key:<Shift>NumLock", +" key:<Alt>NumLock", +" key:<Super>NumLock", +" key:<Primary><Shift>NumLock", +" key:<Primary><Alt>NumLock", +" key:<Shift><Alt>NumLock", +" ", +" ", +" ", +" KP_Minus", +" key:KP_Subtract", +" key:<Primary>KP_Subtract", +" key:<Shift>KP_Subtract", +" key:<Alt>KP_Subtract", +" key:<Super>KP_Subtract", +" key:<Primary><Shift>KP_Subtract", +" key:<Primary><Alt>KP_Subtract", +" key:<Shift><Alt>KP_Subtract", +" ", +" ", +" ", +" KP_*", +" key:KP_Multiply", +" key:<Primary>KP_Multiply", +" key:<Shift>KP_Multiply", +" key:<Alt>KP_Multiply", +" key:<Super>KP_Multiply", +" key:<Primary><Shift>KP_Multiply", +" key:<Primary><Alt>KP_Multiply", +" key:<Shift><Alt>KP_Multiply", +" ", +" ", +" ", +" KP_/", +" key:KP_Divide", +" key:<Primary>KP_Divide", +" key:<Shift>KP_Divide", +" key:<Alt>KP_Divide", +" key:<Super>KP_Divide", +" key:<Primary><Shift>KP_Divide", +" key:<Primary><Alt>KP_Divide", +" key:<Shift><Alt>KP_Divide", +" ", +" ", +" ", +" KP_9", +" key:KP_9", +" key:<Primary>KP_9", +" key:<Shift>KP_9", +" key:<Alt>KP_9", +" key:<Super>KP_9", +" key:<Primary><Shift>KP_9", +" key:<Primary><Alt>KP_9", +" key:<Shift><Alt>KP_9", +" ", +" ", +" ", +" KP_8", +" key:KP_8", +" key:<Primary>KP_8", +" key:<Shift>KP_8", +" key:<Alt>KP_8", +" key:<Super>KP_8", +" key:<Primary><Shift>KP_8", +" key:<Primary><Alt>KP_8", +" key:<Shift><Alt>KP_8", +" ", +" ", +" ", +" KP_7", +" key:KP_7", +" key:<Primary>KP_7", +" key:<Shift>KP_7", +" key:<Alt>KP_7", +" key:<Super>KP_7", +" key:<Primary><Shift>KP_7", +" key:<Primary><Alt>KP_7", +" key:<Shift><Alt>KP_7", +" ", +" ", +" ", +" KP_3", +" key:KP_3", +" key:<Primary>KP_3", +" key:<Shift>KP_3", +" key:<Alt>KP_3", +" key:<Super>KP_3", +" key:<Primary><Shift>KP_3", +" key:<Primary><Alt>KP_3", +" key:<Shift><Alt>KP_3", +" ", +" ", +" ", +" KP_2", +" key:KP_2", +" key:<Primary>KP_2", +" key:<Shift>KP_2", +" key:<Alt>KP_2", +" key:<Super>KP_2", +" key:<Primary><Shift>KP_2", +" key:<Primary><Alt>KP_2", +" key:<Shift><Alt>KP_2", +" ", +" ", +" ", +" KP_6", +" key:KP_6", +" key:<Primary>KP_6", +" key:<Shift>KP_6", +" key:<Alt>KP_6", +" key:<Super>KP_6", +" key:<Primary><Shift>KP_6", +" key:<Primary><Alt>KP_6", +" key:<Shift><Alt>KP_6", +" ", +" ", +" ", +" KP_5", +" key:KP_5", +" key:<Primary>KP_5", +" key:<Shift>KP_5", +" key:<Alt>KP_5", +" key:<Super>KP_5", +" key:<Primary><Shift>KP_5", +" key:<Primary><Alt>KP_5", +" key:<Shift><Alt>KP_5", +" ", +" ", +" ", +" KP_1", +" key:KP_1", +" key:<Primary>KP_1", +" key:<Shift>KP_1", +" key:<Alt>KP_1", +" key:<Super>KP_1", +" key:<Primary><Shift>KP_1", +" key:<Primary><Alt>KP_1", +" key:<Shift><Alt>KP_1", +" ", +" ", +" ", +" KP_4", +" key:KP_4", +" key:<Primary>KP_4", +" key:<Shift>KP_4", +" key:<Alt>KP_4", +" key:<Super>KP_4", +" key:<Primary><Shift>KP_4", +" key:<Primary><Alt>KP_4", +" key:<Shift><Alt>KP_4", +" ", +" ", +" ", +" KP_0", +" key:KP_0", +" key:<Primary>KP_0", +" key:<Shift>KP_0", +" key:<Alt>KP_0", +" key:<Super>KP_0", +" key:<Primary><Shift>KP_0", +" key:<Primary><Alt>KP_0", +" key:<Shift><Alt>KP_0", +" ", +" ", +" ", +" KP_Delete", +" key:KP_Delete", +" key:<Primary>KP_Delete", +" key:<Shift>KP_Delete", +" key:<Alt>KP_Delete", +" key:<Super>KP_Delete", +" key:<Primary><Shift>KP_Delete", +" key:<Primary><Alt>KP_Delete", +" key:<Shift><Alt>KP_Delete", +" ", +" ", +" ", +" KP_Enter", +" key:KP_Enter", +" key:<Primary>KP_Enter", +" key:<Shift>KP_Enter", +" key:<Alt>KP_Enter", +" key:<Super>KP_Enter", +" key:<Primary><Shift>KP_Enter", +" key:<Primary><Alt>KP_Enter", +" key:<Shift><Alt>KP_Enter", +" ", +" ", +" ", +" KP_Plus", +" key:KP_Add", +" key:<Primary>KP_Add", +" key:<Shift>KP_Add", +" key:<Alt>KP_Add", +" key:<Super>KP_Add", +" key:<Primary><Shift>KP_Add", +" key:<Primary><Alt>KP_Add", +" key:<Shift><Alt>KP_Add", +" ", +" ", +" ", +" Right", +" key:Right", +" key:<Primary>Right", +" key:<Shift>Right", +" key:<Alt>Right", +" key:<Super>Right", +" key:<Primary><Shift>Right", +" key:<Primary><Alt>Right", +" key:<Shift><Alt>Right", +" ", +" ", +" ", +" Up", +" key:Up", +" key:<Primary>Up", +" key:<Shift>Up", +" key:<Alt>Up", +" key:<Super>Up", +" key:<Primary><Shift>Up", +" key:<Primary><Alt>Up", +" key:<Shift><Alt>Up", +" ", +" ", +" ", +" Left", +" key:Left", +" key:<Primary>Left", +" key:<Shift>Left", +" key:<Alt>Left", +" key:<Super>Left", +" key:<Primary><Shift>Left", +" key:<Primary><Alt>Left", +" key:<Shift><Alt>Left", +" ", +" ", +" ", +" Down", +" key:Down", +" key:<Primary>Down", +" key:<Shift>Down", +" key:<Alt>Down", +" key:<Super>Down", +" key:<Primary><Shift>Down", +" key:<Primary><Alt>Down", +" key:<Shift><Alt>Down", +" ", +" ", +" ", +" M1", +" key:M1", +" key:<Primary>M1", +" key:<Shift>M1", +" key:<Alt>M1", +" key:<Super>M1", +" key:<Primary><Shift>M1", +" key:<Primary><Alt>M1", +" key:<Shift><Alt>M1", +" ", +" ", +" ", +" M3", +" key:M3", +" key:<Primary>M3", +" key:<Shift>M3", +" key:<Alt>M3", +" key:<Alt>M3", +" key:<Primary><Shift>M3", +" key:<Primary><Alt>M3", +" key:<Shift><Alt>M3", +" ", +" ", +" ", +" M2", +" key:M2", +" key:<Primary>M2", +" key:<Shift>M2", +" key:<Alt>M2", +" key:<Super>M2", +" key:<Primary><Shift>M2", +" key:<Primary><Alt>M2", +" key:<Shift><Alt>M2", +" ", +" ", +" ", +" MW5", +" key:MW5", +" key:<Primary>MW5", +" key:<Shift>MW5", +" key:<Alt>MW5", +" key:<Super>MW5", +" key:<Primary><Shift>MW5", +" key:<Primary><Alt>MW5", +" key:<Shift><Alt>MW5", +" ", +" ", +" ", +" MW4", +" key:MW4", +" key:<Primary>MW4", +" key:<Shift>MW4", +" key:<Alt>MW4", +" key:<Super>MW4", +" key:<Primary><Shift>MW4", +" key:<Primary><Alt>MW4", +" key:<Shift><Alt>MW4", +" ", +" ", +" ", +" ", +" Colors", +" key", +" <Primary>key", +" <Shift>key", +" <Alt>key", +" <Super>key", +" <Primary><Shift>key", +" <Primary><Alt>key", +" <Shift><Alt>key", +" ", +" ", +" ", +" \\", +" key:backslash", +" key:<Primary>backslash", +" key:<Shift>bar", +" key:<Alt>backslash", +" key:<Super>backslash", +" key:<Primary><Shift>bar", +" key:<Primary><Alt>backslash", +" key:<Shift><Alt>bar", +" ", +" ", +" ", +" #", +" key:numbersign", +" key:<Primary>numbersign", +" key:<Shift>asciitilde", +" key:<Alt>numbersign", +" key:<Super>numbersign", +" key:<Primary><Shift>asciitilde", +" key:<Primary><Alt>numbersign", +" key:<Shift><Alt>asciitilde", +" ", +" ", +" ", +"", +NULL, +}; diff --git a/src/layout_util.c b/src/layout_util.c index 7bb7dc13..2c136b81 100644 --- a/src/layout_util.c +++ b/src/layout_util.c @@ -56,7 +56,7 @@ #include "desktop_file.h" #include /* for keyboard values */ - +#include "keymap_template.c" #define MENU_EDIT_ACTION_OFFSET 16 @@ -872,6 +872,168 @@ static void layout_menu_notes_cb(GtkAction *action, gpointer data) help_window_show("release_notes"); } +static char *keyboard_map_hardcoded[][2] = { + {"Scroll","Left"}, + {"FastScroll", "<Shift>Left"}, + {"Left Border", "<Primary>Left"}, + {"Left Border", "<Primary><Shift>Left"}, + {"Scroll", "Right"}, + {"FastScroll", "<Shift>Right"}, + {"Right Border", "<Primary>Right"}, + {"Right Border", "<Primary><Shift>Right"}, + {"Scroll", "Up"}, + {"FastScroll", "<Shift>Up"}, + {"Uper Border", "<Primary>Up"}, + {"Uper Border", "<Primary><Shift>Up"}, + {"Scroll", "Down"}, + {"FastScroll", "<Shift>Down"}, + {"Lower Border", "<Primary>Down"}, + {"Lower Border", "<Primary><Shift>Down"}, + {"Next/Drag", "M1"}, + {"FastDrag", "<Shift>M1"}, + {"DnD Start", "M2"}, + {"Menu", "M3"}, + {"PrevImage", "MW4"}, + {"NextImage", "MW5"}, + {"ScrollUp", "<Shift>MW4"}, + {"ScrollDown", "<Shift>MW5"}, + {"ZoomIn", "<Primary>MW4"}, + {"ZoomOut", "<Primary>MW5"}, + {NULL, NULL} +}; + +static void layout_menu_foreach_func( + gpointer data, + const gchar *accel_path, + guint accel_key, + GdkModifierType accel_mods, + gboolean changed) +{ + gchar *path, *name; + gchar *key_name, *menu_name; + gchar **subset_lt_arr, **subset_gt_arr; + gchar *subset_lt, *converted_name; + GPtrArray *array = data; + + path = g_strescape(accel_path, NULL); + name = gtk_accelerator_name(accel_key, accel_mods); + + menu_name = g_strdup(g_strrstr(path, "/")+1); + + if (g_strrstr(name, ">")) + { + subset_lt_arr = g_strsplit_set(name,"<", 4); + subset_lt = g_strjoinv("<", subset_lt_arr); + subset_gt_arr = g_strsplit_set(subset_lt,">", 4); + converted_name = g_strjoinv(">", subset_gt_arr); + key_name = g_strdup(converted_name); + + g_free(converted_name); + g_free(subset_lt); + g_strfreev(subset_lt_arr); + g_strfreev(subset_gt_arr); + } + else + key_name = g_strdup(name); + + g_ptr_array_add(array, (gpointer)menu_name); + g_ptr_array_add(array, (gpointer)key_name); + + g_free(name); + g_free(path); +} + +static void layout_menu_kbd_map_cb(GtkAction *action, gpointer data) +{ + LayoutWindow *lw = data; + gint fd = -1; + GPtrArray *array; + char * tmp_file; + GError *error = NULL; + GIOChannel *channel; + char **pre_key, **post_key; + char *key_name, *converted_line; + int keymap_index, index; + + fd = g_file_open_tmp("geeqie_keymap_XXXXXX.svg", &tmp_file, &error); + if (error) + { + DEBUG_0("Keyboard Map - cannot create file:%s\n",error->message); + g_error_free(error); + } + else + { + array = g_ptr_array_new(); + + gtk_accel_map_foreach(array, layout_menu_foreach_func); + + channel = g_io_channel_unix_new(fd); + + keymap_index = 0; + while (keymap_template[keymap_index]) + { + if (g_strrstr(keymap_template[keymap_index], ">key:")) + { + pre_key = g_strsplit(keymap_template[keymap_index],">key:",2); + post_key = g_strsplit(pre_key[1],"<",2); + + index=0; + key_name = " "; + for (index=0; index < array->len-2; index=index+2) + { + if (!(g_ascii_strcasecmp(g_ptr_array_index(array,index+1), post_key[0]))) + { + key_name = g_ptr_array_index(array,index+0); + break; + } + } + + index=0; + while (keyboard_map_hardcoded[index][0]) + { + if (!(g_strcmp0(keyboard_map_hardcoded[index][1], post_key[0]))) + { + key_name = keyboard_map_hardcoded[index][0]; + break; + } + index++; + } + + converted_line = g_strconcat(pre_key[0], ">", key_name, "<", post_key[1], "\n", NULL); + g_io_channel_write_chars(channel, converted_line, -1, NULL, &error); + if (error) {DEBUG_0("Keyboard Map:%s\n",error->message); g_error_free(error);} + + g_free(converted_line); + g_strfreev(pre_key); + g_strfreev(post_key); + } + else + { + g_io_channel_write_chars(channel, keymap_template[keymap_index], -1, NULL, &error); + if (error) {DEBUG_0("Keyboard Map:%s\n",error->message); g_error_free(error);} + g_io_channel_write_chars(channel, "\n", -1, NULL, &error); + if (error) {DEBUG_0("Keyboard Map:%s\n",error->message); g_error_free(error);} + } + keymap_index++; + } + + g_io_channel_flush(channel, &error); + if (error) {DEBUG_0("Keyboard Map:%s\n",error->message); g_error_free(error);} + g_io_channel_unref(channel); + + index=0; + for (index=0; index < array->len-2; index=index+2) + { + g_free(g_ptr_array_index(array,index)); + g_free(g_ptr_array_index(array,index+1)); + } + g_ptr_array_unref(array); + + view_window_new(file_data_new_simple(tmp_file)); + g_free(tmp_file); + } +} + static void layout_menu_about_cb(GtkAction *action, gpointer data) { LayoutWindow *lw = data; @@ -1384,6 +1546,7 @@ static GtkActionEntry menu_entries[] = { { "Refresh", GTK_STOCK_REFRESH, N_("_Refresh"), "R", N_("Refresh"), CB(layout_menu_refresh_cb) }, { "HelpContents", GTK_STOCK_HELP, N_("_Contents"), "F1", N_("Contents"), CB(layout_menu_help_cb) }, { "HelpShortcuts", NULL, N_("_Keyboard shortcuts"), NULL, N_("Keyboard shortcuts"), CB(layout_menu_help_keys_cb) }, + { "HelpKbd", NULL, N_("_Keyboard map"), NULL, N_("Keyboard map"), CB(layout_menu_kbd_map_cb) }, { "HelpNotes", NULL, N_("_Release notes"), NULL, N_("Release notes"), CB(layout_menu_notes_cb) }, { "About", GTK_STOCK_ABOUT, N_("_About"), NULL, N_("About"), CB(layout_menu_about_cb) }, { "LogWindow", NULL, N_("_Log Window"), NULL, N_("Log Window"), CB(layout_menu_log_window_cb) }, @@ -1647,6 +1810,7 @@ static const gchar *menu_ui_description = " " " " " " +" " " " " " " " -- 2.20.1