55#include " ../fb/fb_info.h"
66
77// #define DEBUG_INPUT_EVENT 1
8-
8+ // #define DEBUG_INPUT_INIT 1
99namespace input :
1010 extern int next_id = 1234
1111
@@ -97,13 +97,29 @@ namespace input:
9797 int slot = 0 , left = -1
9898 bool lifted= false
9999
100- float scale_y= 1.0 , scale_x= 1.0
101- int swap_xy= false , invert_x= false , invert_y= false
102100 static int MAX_SLOTS = 10
103101 struct Point:
104102 int x= -1 , y= -1 , left = -1
105103 ;
106104
105+ static float scale_x= 1.0
106+ static float scale_y= 1.0
107+ int swap_xy= false , invert_x= false , invert_y= false
108+ static void set_extents(int w, h, dw, dh):
109+ #ifdef DEV
110+ scale_x = MT_X_SCALAR
111+ scale_y = MT_Y_SCALAR
112+ return
113+ #endif
114+
115+ scale_x = float(dw) / float(w)
116+ scale_y = float(dh) / float(h)
117+ #ifdef DEBUG_INPUT_INIT
118+ debug " TW, TH:" , w, h
119+ debug " SET SCALING TO" , scale_x, scale_y
120+ #endif
121+
122+
107123 // kobo libra rot0: swap_xy, invert_x
108124 // kobo libra rot180: swap_xy, invert_y
109125 // rm1: scale_x, scale_y, invert_x, invert_y
@@ -116,8 +132,6 @@ namespace input:
116132 // rM1
117133 invert_y = true
118134 if not rm2fb::IN_RM2FB_SHIM :
119- scale_x = MT_X_SCALAR
120- scale_y = MT_Y_SCALAR
121135 invert_x = true
122136 #elif KOBO
123137 rotation := util::rotation ::get ()
@@ -228,6 +242,29 @@ namespace input:
228242 int btn_touch = -1
229243 int eraser = -1
230244
245+ // rM has swapped axis and inverted y by default
246+ static float scale_x= 1.0
247+ static float scale_y= 1.0
248+ int swap_xy= false , invert_x= false , invert_y= false
249+ static void set_extents(int w, h, dw, dh):
250+ #ifdef DEV
251+ scale_x = WACOM_X_SCALAR
252+ scale_y = WACOM_Y_SCALAR
253+ return
254+ #endif
255+ scale_x = float(dw) / float(w)
256+ scale_y = float(dh) / float(h)
257+ #ifdef DEBUG_INPUT_INIT
258+ debug " WW, WH:" , w, h
259+ debug " SET SCALING TO" , scale_x, scale_y
260+ #endif
261+
262+ WacomEvent():
263+ #if defined(REMARKABLE) | defined(DEV)
264+ swap_xy = true
265+ invert_y = true
266+ #endif
267+
231268 def marshal():
232269 SynMotionEvent syn_ev;
233270 syn_ev.x = self .x
@@ -256,12 +293,24 @@ namespace input:
256293
257294 handle_abs(input_event data ):
258295 #if defined(REMARKABLE) | defined(DEV)
296+ if swap_xy:
297+ if data .code == ABS_X:
298+ data .code = ABS_Y
299+ else if data .code == ABS_Y:
300+ data .code = ABS_X
301+
259302 switch data .code :
260303 case ABS_Y:
261- self .x = data .value * WACOM_X_SCALAR
304+ if invert_y:
305+ self .y = framebuffer::fb_info ::display_height - data .value * scale_y
306+ else :
307+ self .y = data .value * scale_y
262308 break
263309 case ABS_X:
264- self .y = (WACOMHEIGHT - data .value ) * WACOM_Y_SCALAR
310+ if invert_x:
311+ self .x = framebuffer::fb_info ::display_width - data .value * scale_x
312+ else :
313+ self .x = data .value * scale_x
265314 break
266315 case ABS_TILT_X:
267316 self .tilt_x = data .value
0 commit comments