kbdfs: allow to escape ctlr-alt-del with shift for vmx and vnc.

This commit is contained in:
cinap_lenrek 2021-07-16 23:36:40 +00:00
parent e85aa1089d
commit fad1b3f7f7
2 changed files with 39 additions and 2 deletions

View file

@ -179,6 +179,32 @@ This is used to provide a serial console when
.B $console
environment variable is set. (see
.IR plan9.ini (8)).
.PP
Holding
.LR Ctrl
+
.LR Alt
and then pressing the
.LR Del
key will
trigger a reboot of the terminal.
To forward this sequence downstream,
.LR Shift
+
.LR Ctrl
+
.LR Alt
and then pressing
.LR Del
will cause to send a
.LR Shift
up before the
.LR Del
key.
This is usefull for programs like
.IR vnc (1)
and
.IR vmx (1).
.SS Keyboard
A read on the
.BR kbd

View file

@ -371,6 +371,13 @@ shutdown(void)
threadexitsall(nil);
}
void
shiftup(void)
{
Key key = { .down = 0, .r = Kshift, .b = Kshift };
send(keychan, &key);
}
/*
* Scan code processing
*/
@ -433,8 +440,12 @@ kbdputsc(Scan *scan, int c)
if(scan->caps && key.r<='z' && key.r>='a')
key.r += 'A' - 'a';
if(scan->ctl && scan->alt && key.r == Kdel)
if(scan->ctl && scan->alt && key.r == Kdel){
if(scan->shift)
shiftup();
else
reboot();
}
if(key.b)
send(keychan, &key);