mirror of
https://github.com/amitbet/vncproxy.git
synced 2025-06-23 04:47:29 +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
|
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:
|
||||||
|
@ -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 {
|
||||||
|
@ -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{})
|
||||||
|
@ -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{},
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user