fixed tight encoding, added the QEMU extended keys message (no way to test it)

This commit is contained in:
amit bezalel 2018-02-10 01:41:02 +02:00
parent 37e11cd72e
commit f05c96d449
6 changed files with 40 additions and 7 deletions

View File

@ -17,7 +17,8 @@ const (
KeyEventMsgType KeyEventMsgType
PointerEventMsgType PointerEventMsgType
ClientCutTextMsgType ClientCutTextMsgType
ClientFenceMsgType = 248 ClientFenceMsgType = 248
QEMUExtendedKeyEventMsgType = 255
) )
// Color represents a single color in a color map. // Color represents a single color in a color map.
@ -47,6 +48,8 @@ func (cmt ClientMessageType) String() string {
return "FramebufferUpdateRequest" return "FramebufferUpdateRequest"
case KeyEventMsgType: case KeyEventMsgType:
return "KeyEvent" return "KeyEvent"
case QEMUExtendedKeyEventMsgType:
return "QEMUExtendedKeyEvent"
case PointerEventMsgType: case PointerEventMsgType:
return "PointerEvent" return "PointerEvent"
case ClientCutTextMsgType: case ClientCutTextMsgType:

View File

@ -155,7 +155,7 @@ func handleTightFilters(subencoding uint8, pixelFmt *common.PixelFormat, rect *c
if paletteSize == 2 { if paletteSize == 2 {
dataLength = int(rect.Height) * ((int(rect.Width) + 7) / 8) dataLength = int(rect.Height) * ((int(rect.Width) + 7) / 8)
} else { } else {
dataLength = int(rect.Width * rect.Height) dataLength = int(rect.Width) * int(rect.Height)
} }
_, err = r.ReadTightData(dataLength) _, err = r.ReadTightData(dataLength)
if err != nil { if err != nil {

View File

@ -2,7 +2,7 @@ package logger
import "fmt" import "fmt"
var simpleLogger = SimpleLogger{LogLevelInfo} var simpleLogger = SimpleLogger{LogLevelDebug}
type Logger interface { type Logger interface {
Debug(v ...interface{}) Debug(v ...interface{})

View File

@ -81,9 +81,9 @@ func main() {
encs := []common.IEncoding{ encs := []common.IEncoding{
&encodings.TightEncoding{}, &encodings.TightEncoding{},
//&encodings.TightPngEncoding{}, //&encodings.TightPngEncoding{},
//rre := encodings.RREEncoding{}, //&encodings.RREEncoding{},
//zlib := encodings.ZLibEncoding{}, //&encodings.ZLibEncoding{},
//zrle := encodings.ZRLEEncoding{}, //&encodings.ZRLEEncoding{},
//&encodings.CopyRectEncoding{}, //&encodings.CopyRectEncoding{},
//coRRE := encodings.CoRREEncoding{}, //coRRE := encodings.CoRREEncoding{},
//hextile := encodings.HextileEncoding{}, //hextile := encodings.HextileEncoding{},

View File

@ -38,7 +38,7 @@ func NewRecorder(saveFilePath string) (*Recorder, error) {
rec.maxWriteSize = 65535 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 { if err != nil {
logger.Errorf("unable to open file: %s, error: %v", saveFilePath, err) logger.Errorf("unable to open file: %s, error: %v", saveFilePath, err)
return nil, err return nil, err

View File

@ -165,6 +165,36 @@ func (msg *MsgKeyEvent) Write(c io.Writer) error {
return nil 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. // PointerEventMessage holds the wire format message.
type MsgPointerEvent struct { type MsgPointerEvent struct {
Mask uint8 // button-mask Mask uint8 // button-mask