File tree Expand file tree Collapse file tree 1 file changed +19
-0
lines changed Expand file tree Collapse file tree 1 file changed +19
-0
lines changed Original file line number Diff line number Diff line change 45
45
my $normal_color = $repo -> get_color(" " , " reset" );
46
46
47
47
my $use_readkey = 0;
48
+ my $use_termcap = 0;
49
+ my %term_escapes ;
50
+
48
51
sub ReadMode ;
49
52
sub ReadKey ;
50
53
if ($repo -> config_bool(" interactive.singlekey" )) {
53
56
Term::ReadKey-> import ;
54
57
$use_readkey = 1;
55
58
};
59
+ eval {
60
+ require Term::Cap;
61
+ my $termcap = Term::Cap-> Tgetent;
62
+ foreach (values %$termcap ) {
63
+ $term_escapes {$_ } = 1 if / ^\e / ;
64
+ }
65
+ $use_termcap = 1;
66
+ };
56
67
}
57
68
58
69
sub colored {
@@ -1067,6 +1078,14 @@ sub prompt_single_character {
1067
1078
ReadMode ' cbreak' ;
1068
1079
my $key = ReadKey 0;
1069
1080
ReadMode ' restore' ;
1081
+ if ($use_termcap and $key eq " \e " ) {
1082
+ while (!defined $term_escapes {$key }) {
1083
+ my $next = ReadKey 0.5;
1084
+ last if (!defined $next );
1085
+ $key .= $next ;
1086
+ }
1087
+ $key =~ s /\e / ^[/ ;
1088
+ }
1070
1089
print " $key " if defined $key ;
1071
1090
print " \n " ;
1072
1091
return $key ;
You can’t perform that action at this time.
0 commit comments