mirror of
https://github.com/amitbet/vncproxy.git
synced 2025-06-23 12:57:52 +00:00
fixed tight encoding, added the QEMU extended keys message (no way to test it)
This commit is contained in:
parent
37e11cd72e
commit
f05c96d449
@ -17,7 +17,8 @@ const (
|
||||
KeyEventMsgType
|
||||
PointerEventMsgType
|
||||
ClientCutTextMsgType
|
||||
ClientFenceMsgType = 248
|
||||
ClientFenceMsgType = 248
|
||||
QEMUExtendedKeyEventMsgType = 255
|
||||
)
|
||||
|
||||
// Color represents a single color in a color map.
|
||||
@ -47,6 +48,8 @@ func (cmt ClientMessageType) String() string {
|
||||
return "FramebufferUpdateRequest"
|
||||
case KeyEventMsgType:
|
||||
return "KeyEvent"
|
||||
case QEMUExtendedKeyEventMsgType:
|
||||
return "QEMUExtendedKeyEvent"
|
||||
case PointerEventMsgType:
|
||||
return "PointerEvent"
|
||||
case ClientCutTextMsgType:
|
||||
|
@ -155,7 +155,7 @@ func handleTightFilters(subencoding uint8, pixelFmt *common.PixelFormat, rect *c
|
||||
if paletteSize == 2 {
|
||||
dataLength = int(rect.Height) * ((int(rect.Width) + 7) / 8)
|
||||
} else {
|
||||
dataLength = int(rect.Width * rect.Height)
|
||||
dataLength = int(rect.Width) * int(rect.Height)
|
||||
}
|
||||
_, err = r.ReadTightData(dataLength)
|
||||
if err != nil {
|
||||
|
@ -2,7 +2,7 @@ package logger
|
||||
|
||||
import "fmt"
|
||||
|
||||
var simpleLogger = SimpleLogger{LogLevelInfo}
|
||||
var simpleLogger = SimpleLogger{LogLevelDebug}
|
||||
|
||||
type Logger interface {
|
||||
Debug(v ...interface{})
|
||||
|
@ -81,9 +81,9 @@ func main() {
|
||||
encs := []common.IEncoding{
|
||||
&encodings.TightEncoding{},
|
||||
//&encodings.TightPngEncoding{},
|
||||
//rre := encodings.RREEncoding{},
|
||||
//zlib := encodings.ZLibEncoding{},
|
||||
//zrle := encodings.ZRLEEncoding{},
|
||||
//&encodings.RREEncoding{},
|
||||
//&encodings.ZLibEncoding{},
|
||||
//&encodings.ZRLEEncoding{},
|
||||
//&encodings.CopyRectEncoding{},
|
||||
//coRRE := encodings.CoRREEncoding{},
|
||||
//hextile := encodings.HextileEncoding{},
|
||||
|
@ -38,7 +38,7 @@ func NewRecorder(saveFilePath string) (*Recorder, error) {
|
||||
|
||||
rec.maxWriteSize = 65535
|
||||
|
||||
rec.writer, err = os.OpenFile(saveFilePath, os.O_RDWR|os.O_CREATE, 0755)
|
||||
rec.writer, err = os.OpenFile(saveFilePath, os.O_RDWR|os.O_CREATE, 0644)
|
||||
if err != nil {
|
||||
logger.Errorf("unable to open file: %s, error: %v", saveFilePath, err)
|
||||
return nil, err
|
||||
|
@ -165,6 +165,36 @@ func (msg *MsgKeyEvent) Write(c io.Writer) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// MsgKeyEvent holds the wire format message.
|
||||
type MsgQEMUExtKeyEvent struct {
|
||||
SubmessageType uint8 // submessage type
|
||||
DownFlag uint16 // down-flag
|
||||
KeySym Key // key symbol
|
||||
KeyCode uint32 // scan code
|
||||
}
|
||||
|
||||
func (*MsgQEMUExtKeyEvent) Type() common.ClientMessageType {
|
||||
return common.QEMUExtendedKeyEventMsgType
|
||||
}
|
||||
|
||||
func (*MsgQEMUExtKeyEvent) Read(c io.Reader) (common.ClientMessage, error) {
|
||||
msg := MsgKeyEvent{}
|
||||
if err := binary.Read(c, binary.BigEndian, &msg); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &msg, nil
|
||||
}
|
||||
|
||||
func (msg *MsgQEMUExtKeyEvent) Write(c io.Writer) error {
|
||||
if err := binary.Write(c, binary.BigEndian, msg.Type()); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := binary.Write(c, binary.BigEndian, msg); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// PointerEventMessage holds the wire format message.
|
||||
type MsgPointerEvent struct {
|
||||
Mask uint8 // button-mask
|
||||
|
Loading…
Reference in New Issue
Block a user