vim: custom key rows specifiable via ?status
[sheet.git] / index.plp
index a482b588982dc5a20657f0e0376674e00ab29cbc..4cffec69440b77adb9a19059773c467268b3dee1 100644 (file)
--- a/index.plp
+++ b/index.plp
@@ -161,17 +161,25 @@ sub print_key {
 
 our $map = defined $keyrows{$get{map}} ? $get{map} : 'qwerty';
 my $keyrows = $keyrows{$map};
 
 our $map = defined $keyrows{$get{map}} ? $get{map} : 'qwerty';
 my $keyrows = $keyrows{$map};
+my @moderows = $get{static} ? split(/\s+/, $get{static}) : sort keys %keys;
 
 for (my $row = 0; $row <= $#$keyrows; $row++) {
        my $keyrow = $keyrows->[$row];
 
 for (my $row = 0; $row <= $#$keyrows; $row++) {
        my $keyrow = $keyrows->[$row];
+       my @caserows = 0 .. $#$keyrow;
+
        print qq{<li class="row row$row"><ul>\n};
        print qq{<li class="row row$row"><ul>\n};
-       while (my ($mode, $modekeys) = each %keys) {
-               for (my $case = 0; $case <= $#$keyrow; $case++) {
-                       my $keycase = $keyrow->[$case];
+       for my $modefull (@moderows) {
+               my $mode = $modefull;
+               my @showcase = $mode =~ s/(\d+)(?:-(\d+))?$//
+                       ? (map {3 - $_} split //, $row == 0 && $2 || $1) : @caserows;
+               my $modekeys = $keys{$mode};
+
+               for my $case (@showcase) {
+                       my $keycase = $keyrow->[$case] or next;
                          @$keycase or next;
 
                        printf "\t<li%s>", $mode ne '' && sprintf(
                          @$keycase or next;
 
                        printf "\t<li%s>", $mode ne '' && sprintf(
-                               ' class="%s"', 'mode mode' . escapeclass($mode)
+                               ' class="%s"', ($get{static} ? '' : 'mode ') . 'mode' . escapeclass($mode)
                        );
                        printf("<h3>%s<small>: %s</small></h3>\n", # XXX insert &nbsp; here to fix msie<=6
                                        $modekeys->{desc} || "mode $mode",
                        );
                        printf("<h3>%s<small>: %s</small></h3>\n", # XXX insert &nbsp; here to fix msie<=6
                                        $modekeys->{desc} || "mode $mode",