examples/wgt18.c working with full mouse movement

This commit is contained in:
Adam Greenwood-Byrne 2021-03-23 21:07:28 +00:00
parent 95f7cc8baf
commit d9a0eaa864
3 changed files with 18 additions and 8 deletions

View file

@ -35,13 +35,16 @@ bleno.on('advertisingStart', function(error) {
var ioHook = require('iohook'); var ioHook = require('iohook');
var buf = Buffer.allocUnsafe(1); var buf = Buffer.allocUnsafe(4);
var obuf = Buffer.allocUnsafe(1); var obuf = Buffer.allocUnsafe(4);
const scrwidth = 1440; const scrwidth = 1440;
const divisor = scrwidth / 160; const scrheight = 900;
const divisorx = scrwidth / 320;
const divisory = scrheight / 200;
ioHook.on( 'mousemove', event => { ioHook.on( 'mousemove', event => {
buf.writeUInt8(Math.round(event.x / divisor), 0); buf.writeUInt16LE(Math.round(event.x / divisorx), 0);
buf.writeUInt16LE(Math.round(event.y / divisory), 2);
if (Buffer.compare(buf, obuf)) { if (Buffer.compare(buf, obuf)) {
e._value = buf; e._value = buf;

View file

@ -159,18 +159,18 @@ void acl_poll()
unsigned char d2 = bt_waitReadByte(); unsigned char d2 = bt_waitReadByte();
unsigned int dlen = d1 | (d2 << 8); unsigned int dlen = d1 | (d2 << 8);
unsigned char data[dlen];
if (dlen > 7) { if (dlen > 7) {
unsigned char data[dlen];
for (int i=0;i<dlen;i++) data[i] = bt_waitReadByte(); for (int i=0;i<dlen;i++) data[i] = bt_waitReadByte();
unsigned int length = data[0] | (data[1] << 8); unsigned int length = data[0] | (data[1] << 8);
unsigned int channel = data[2] | (data[3] << 8); unsigned int channel = data[2] | (data[3] << 8);
unsigned char opcode = data[4]; unsigned char opcode = data[4];
if (thandle == connection_handle && length == 4 && opcode == 0x1b) { if (thandle == connection_handle && length == 7 && opcode == 0x1b) {
if (channel == 4 && data[5] == 0x2a && data[6] == 0x00) { if (channel == 4 && data[5] == 0x2a && data[6] == 0x00) {
mx = data[7] * 2; msetxy(data[7] | (data[8] << 8), data[9] | (data[10] << 8));
} }
} }
} }
@ -178,6 +178,12 @@ void acl_poll()
} }
} }
void msetxy (short x, short y)
{
mx = x;
my = y;
}
void mdeinit() void mdeinit()
{ {
comms_up = 0; comms_up = 0;

View file

@ -154,3 +154,4 @@ void whollowpoly(tpolypoint *vertexlist, short numvertex, short x, short y, shor
void wbezier (tpolypoint *rawpts, short numraw, tpolypoint *curvepts, short numcurve); void wbezier (tpolypoint *rawpts, short numraw, tpolypoint *curvepts, short numcurve);
void minit(); void minit();
void mdeinit(); void mdeinit();
void msetxy (short x, short y);