fixed qemu extended keys

This commit is contained in:
amitb 2018-10-25 01:53:57 +03:00
parent 7cecffecf2
commit 3cb1197d22
3 changed files with 37 additions and 4 deletions

View File

@ -310,3 +310,34 @@ func (msg *MsgClientCutText) Write(c io.Writer) error {
return nil return nil
} }
// MsgClientQemuExtendedKey holds the wire format message, for qemu keys
type MsgClientQemuExtendedKey struct {
SubType uint8 // sub type
IsDown uint16 // button down indicator
KeySym uint32 // key symbol
KeyCode uint32 // key code
}
func (*MsgClientQemuExtendedKey) Type() common.ClientMessageType {
return common.QEMUExtendedKeyEventMsgType
}
func (*MsgClientQemuExtendedKey) Read(c io.Reader) (common.ClientMessage, error) {
msg := MsgClientQemuExtendedKey{}
if err := binary.Read(c, binary.BigEndian, &msg); err != nil {
return nil, err
}
return &msg, nil
}
func (msg *MsgClientQemuExtendedKey) 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
}

View File

@ -168,16 +168,17 @@ func (c *ServerConn) handle() error {
default: default:
var messageType common.ClientMessageType var messageType common.ClientMessageType
if err := binary.Read(c, binary.BigEndian, &messageType); err != nil { if err := binary.Read(c, binary.BigEndian, &messageType); err != nil {
logger.Errorf("IServerConn.handle error: %v", err) logger.Errorf("ServerConn.handle error: %v", err)
return err return err
} }
logger.Debugf("ServerConn.handle: got messagetype, %d", messageType)
msg, ok := clientMessages[messageType] msg, ok := clientMessages[messageType]
logger.Debugf("ServerConn.handle: found message type, %v", ok)
if !ok { if !ok {
return fmt.Errorf("IServerConn.Handle: unsupported message-type: %v", messageType) logger.Errorf("ServerConn.handle: unsupported message-type: %v", messageType)
} }
parsedMsg, err := msg.Read(c) parsedMsg, err := msg.Read(c)
logger.Debugf("ServerConn.handle: got parsed messagetype, %v", parsedMsg)
//update connection for pixel format / color map changes //update connection for pixel format / color map changes
switch parsedMsg.Type() { switch parsedMsg.Type() {
case common.SetPixelFormatMsgType: case common.SetPixelFormatMsgType:

View File

@ -15,6 +15,7 @@ var DefaultClientMessages = []common.ClientMessage{
&MsgKeyEvent{}, &MsgKeyEvent{},
&MsgPointerEvent{}, &MsgPointerEvent{},
&MsgClientCutText{}, &MsgClientCutText{},
&MsgClientQemuExtendedKey{},
} }
// FramebufferUpdate holds a FramebufferUpdate wire format message. // FramebufferUpdate holds a FramebufferUpdate wire format message.