feat: enable pixel mouse coordinates in libvaxis
This commit is contained in:
parent
453fb12055
commit
36f167221e
1 changed files with 29 additions and 21 deletions
|
@ -76,7 +76,7 @@ pub fn run(self: *Self) !void {
|
|||
const ws = try vaxis.Tty.getWinsize(self.input_fd_blocking());
|
||||
try self.vx.resize(self.a, ws);
|
||||
self.vx.queueRefresh();
|
||||
try self.vx.setMouseMode(true);
|
||||
try self.vx.setMouseMode(.pixels);
|
||||
}
|
||||
|
||||
pub fn render(self: *Self) !void {
|
||||
|
@ -158,44 +158,52 @@ pub fn process_input(self: *Self, input_: []const u8) !void {
|
|||
if (self.dispatch_input) |f| f(self.handler_ctx, cbor_msg);
|
||||
},
|
||||
.mouse => |mouse| {
|
||||
const ypos = mouse.row - 1;
|
||||
const xpos = mouse.col - 1;
|
||||
const ycell = self.vx.screen.height_pix / self.vx.screen.height;
|
||||
const xcell = self.vx.screen.width_pix / self.vx.screen.width;
|
||||
const y = ypos / ycell;
|
||||
const x = xpos / xcell;
|
||||
const ypx = ypos % ycell;
|
||||
const xpx = xpos % xcell;
|
||||
if (self.dispatch_mouse) |f| switch (mouse.type) {
|
||||
.motion => f(self.handler_ctx, @intCast(mouse.row), @intCast(mouse.col), try self.fmtmsg(.{
|
||||
.motion => f(self.handler_ctx, @intCast(y), @intCast(x), try self.fmtmsg(.{
|
||||
"M",
|
||||
mouse.col,
|
||||
mouse.row,
|
||||
0,
|
||||
0,
|
||||
x,
|
||||
y,
|
||||
xpx,
|
||||
ypx,
|
||||
})),
|
||||
.press => f(self.handler_ctx, @intCast(mouse.row), @intCast(mouse.col), try self.fmtmsg(.{
|
||||
.press => f(self.handler_ctx, @intCast(y), @intCast(x), try self.fmtmsg(.{
|
||||
"B",
|
||||
event_type.PRESS,
|
||||
@intFromEnum(mouse.button),
|
||||
input.utils.button_id_string(@intFromEnum(mouse.button)),
|
||||
mouse.col,
|
||||
mouse.row,
|
||||
0,
|
||||
0,
|
||||
x,
|
||||
y,
|
||||
xpx,
|
||||
ypx,
|
||||
})),
|
||||
.release => f(self.handler_ctx, @intCast(mouse.row), @intCast(mouse.col), try self.fmtmsg(.{
|
||||
.release => f(self.handler_ctx, @intCast(y), @intCast(x), try self.fmtmsg(.{
|
||||
"B",
|
||||
event_type.RELEASE,
|
||||
@intFromEnum(mouse.button),
|
||||
input.utils.button_id_string(@intFromEnum(mouse.button)),
|
||||
mouse.col,
|
||||
mouse.row,
|
||||
0,
|
||||
0,
|
||||
x,
|
||||
y,
|
||||
xpx,
|
||||
ypx,
|
||||
})),
|
||||
.drag => if (self.dispatch_mouse_drag) |f_|
|
||||
f_(self.handler_ctx, @intCast(mouse.row), @intCast(mouse.col), true, try self.fmtmsg(.{
|
||||
f_(self.handler_ctx, @intCast(y), @intCast(x), true, try self.fmtmsg(.{
|
||||
"D",
|
||||
event_type.PRESS,
|
||||
@intFromEnum(mouse.button),
|
||||
input.utils.button_id_string(@intFromEnum(mouse.button)),
|
||||
mouse.col,
|
||||
mouse.row,
|
||||
0,
|
||||
0,
|
||||
x,
|
||||
y,
|
||||
xpx,
|
||||
ypx,
|
||||
})),
|
||||
};
|
||||
},
|
||||
|
|
Loading…
Add table
Reference in a new issue