Prefer standard HTML feature to Javascript onclick.
Link tags including (outside) the entire list items would allow further
customisation, but is only allowed as of HTML5, and currently renders
incorrectly in at least Opera 9.25, Safari 4.0.4, and MSIE 7.0.
no warnings 'uninitialized'; # save some useless checks for more legible code
use Carp;
-our $VERSION = 'v1.04';
+our $VERSION = 'v1.05';
my @casedesc = (undef, qw/shift ctrl meta/, 'shift meta');
my @rowdesc = qw(numeric top home bottom);
$keytxt .= "<small>$self->{sign}->{motion}</small>" if $flags =~ s/ ?\bargm\b//; # motion argument
$keytxt =~ s{\^(?=.)}{<small>^</small>}; # element around ctrl-identifier
$keytxt =~ s{\+(?=.)}{<small>+</small>}; # meta
+ my $keyhint = defined($mnem) && qq{ title="$mnem"};
+ $keytxt = "<b$keyhint>$keytxt</b>";
+ $keytxt .= ' '.$desc if defined $desc;
+ $keytxt = qq{<a href="/$1">$keytxt</a>} if $flags =~ s/ ?\blink(\S*)//;
my $onclick = $flags =~ s/ ?\bmode(\S*)// && defined $self->{keys}{$1} && sprintf(
' onclick="setmode(%s)"',
$1 eq '' ? '' : sprintf(q{'mode%s'}, escapeclass($1))
);
- $onclick .= sprintf(q{ onclick="document.location='%s'"}, $1)
- if $flags =~ s/ ?\blink(\S*)//;
- my $keyhint = defined($mnem) && qq{ title="$mnem"};
$flags .= ' chr'.ord(substr $key, -1) if $key ne '^0';
- print qq{\t\t<li class="$flags"$onclick><b$keyhint>$keytxt</b>};
- print ' ', $desc if defined $desc;
+ print qq{\t\t<li class="$flags"$onclick>$keytxt};
print "\n";
}
ul.keys li[onclick]:hover { /* link */
cursor: pointer;
}
+ul.keys li a { /* key link */
+ color: inherit;
+ text-decoration: none;
+ display: block;
+ height: 100%;
+}
+
ul.keys.meta li b,
ul.keys.ctrl li b,
ul.keys.lead li b { /* char with ctrl or leading key */
.mv {background: #ECE} /* visual mode */
.me {background: #CCF} /* key mode */
-.pm[onclick]:hover {background: #7E7}
-.po[onclick]:hover {background: #CE6}
-.ci[onclick]:hover {background: #5ED}
-.mi[onclick]:hover {background: #F97}
-.mo[onclick]:hover {background: #F88}
-.me[onclick]:hover {background: #99F}
-.mv[onclick]:hover {background: #D9D}
-.co[onclick]:hover {background: #EE4}
+.pm a:hover, .pm[onclick]:hover {background: #7E7}
+.po a:hover, .po[onclick]:hover {background: #CE6}
+.ci a:hover, .ci[onclick]:hover {background: #5ED}
+.mi a:hover, .mi[onclick]:hover {background: #F97}
+.mo a:hover, .mo[onclick]:hover {background: #F88}
+.me a:hover, .me[onclick]:hover {background: #99F}
+.mv a:hover, .mv[onclick]:hover {background: #D9D}
+.co a:hover, .co[onclick]:hover {background: #EE4}
.no {
background: #EEE;
.mv {background: #E8E} /* visual mode */
.me {background: #9AF} /* key mode */
-.pm[onclick]:hover {background: #000; color: #7E7}
-.po[onclick]:hover {background: #000; color: #CE6}
-.ci[onclick]:hover {background: #000; color: #8FD}
-.co[onclick]:hover {background: #000; color: #FF7}
-.mi[onclick]:hover {background: #000; color: #FFA070}
-.mo[onclick]:hover {background: #000; color: #F77}
-.me[onclick]:hover {background: #000; color: #99F}
-.mv[onclick]:hover {background: #000; color: #E8E}
+{background: #000; color: #7E7}
+{background: #000; color: #CE6}
+{background: #000; color: #8FD}
+{background: #000; color: #FF7}
+{background: #000; color: #FFA070}
+{background: #000; color: #F77}
+{background: #000; color: #99F}
+{background: #000; color: #E8E}
+
+.pm a:hover, .pm[onclick]:hover {background: #000; color: #7E7}
+.po a:hover, .po[onclick]:hover {background: #000; color: #CE6}
+.ci a:hover, .ci[onclick]:hover {background: #000; color: #8FD}
+.co a:hover, .co[onclick]:hover {background: #000; color: #FF7}
+.mi a:hover, .mi[onclick]:hover {background: #000; color: #FFA070}
+.mo a:hover, .mo[onclick]:hover {background: #000; color: #F77}
+.me a:hover, .me[onclick]:hover {background: #000; color: #99F}
+.mv a:hover, .mv[onclick]:hover {background: #000; color: #E8E}
dl.legend dt.ext,
ul.keys li.ext {
.me {background: #205} /* mode */
.no {background: #222} /* unassigned */
-.pm[onclick]:hover,
-.po[onclick]:hover,
-.ci[onclick]:hover,
-.co[onclick]:hover,
-.mi[onclick]:hover,
-.mo[onclick]:hover,
-.mv[onclick]:hover,
-.me[onclick]:hover {
+.pm a:hover, .pm[onclick]:hover,
+.po a:hover, .po[onclick]:hover,
+.ci a:hover, .ci[onclick]:hover,
+.co a:hover, .co[onclick]:hover,
+.mi a:hover, .mi[onclick]:hover,
+.mo a:hover, .mo[onclick]:hover,
+.mv a:hover, .mv[onclick]:hover,
+.me a:hover, .me[onclick]:hover {
color: #000; /* on default (light) background hover */
} /* mode link */
body .mo {background: #000; color: #FFF} /* mode */
body .me {background: #000; color: #AAA} /* key mode */
-body ul.keys li[onclick]:hover {
+body ul.keys li[onclick]:hover,
+body ul.keys li a:hover {
background: #888;
color: #000;
border-color: #444;
#mutt .ci, #mutt .me,
.no {font-style: normal}
-.ci[onclick]:hover,
-.pm[onclick]:hover,
-.po[onclick]:hover,
-.co[onclick]:hover,
-.cp[onclick]:hover,
-.mi[onclick]:hover,
-.mo[onclick]:hover,
-.mv[onclick]:hover,
-.me[onclick]:hover {
+.ci a:hover, .ci[onclick]:hover,
+.pm a:hover, .pm[onclick]:hover,
+.po a:hover, .po[onclick]:hover,
+.co a:hover, .co[onclick]:hover,
+.cp a:hover, .cp[onclick]:hover,
+.mi a:hover, .mi[onclick]:hover,
+.mo a:hover, .mo[onclick]:hover,
+.mv a:hover, .mv[onclick]:hover,
+.me a:hover, .me[onclick]:hover {
background: #800;
color: #FF0;
} /* mode link */