Xnest: replace XChangeKeyboardControl() by xcb_change_keyboard_control()

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
Enrico Weigelt, metux IT consult 2024-08-05 10:40:43 +02:00
parent 1795698202
commit db2743387b
3 changed files with 47 additions and 3 deletions

View File

@ -81,7 +81,7 @@ xnestChangeKeyboardControl(DeviceIntPtr pDev, KeybdCtrl * ctrl)
{
#if 0
unsigned long value_mask;
XKeyboardControl values;
XnKeyboardControl values;
int i;
value_mask = KBKeyClickPercent |
@ -94,7 +94,9 @@ xnestChangeKeyboardControl(DeviceIntPtr pDev, KeybdCtrl * ctrl)
values.auto_repeat_mode = ctrl->autoRepeat ?
AutoRepeatModeOn : AutoRepeatModeOff;
XChangeKeyboardControl(xnestDisplay, value_mask, &values);
uint32_t value_list[16];
xnestEncodeKeyboardControl(values, value_mask, value_list);
xcb_change_keyboard_control(xnestUpstreamConn(), value_mask, value_list);
/*
value_mask = KBKey | KBAutoRepeatMode;
@ -107,7 +109,9 @@ xnestChangeKeyboardControl(DeviceIntPtr pDev, KeybdCtrl * ctrl)
values.led = i;
values.led_mode =
(ctrl->leds & (1 << (i - 1))) ? LedModeOn : LedModeOff;
XChangeKeyboardControl(xnestDisplay, value_mask, &values);
xnestEncodeKeyboardControl(values, value_mask, value_list);
xcb_change_keyboard_control(xnestUpstreamConn(), value_mask, value_list);
}
#endif
}

View File

@ -88,3 +88,30 @@ void xnest_configure_window(xcb_connection_t *conn, uint32_t window,
xcb_configure_window(conn, window, mask, value_list);
}
}
void xnestEncodeKeyboardControl(XnKeyboardControl ctrl, long mask, uint32_t *value)
{
if (mask & KBKeyClickPercent)
*value++ = ctrl.key_click_percent;
if (mask & KBBellPercent)
*value++ = ctrl.bell_percent;
if (mask & KBBellPitch)
*value++ = ctrl.bell_pitch;
if (mask & KBBellDuration)
*value++ = ctrl.bell_duration;
if (mask & KBLed)
*value++ = ctrl.led;
if (mask & KBLedMode)
*value++ = ctrl.led_mode;
if (mask & KBKey)
*value++ = ctrl.key;
if (mask & KBAutoRepeatMode)
*value++ = ctrl.auto_repeat_mode;
}

View File

@ -52,4 +52,17 @@ typedef struct {
void xnest_configure_window(xcb_connection_t *conn, uint32_t window, uint32_t mask, XnWindowChanges values);
typedef struct {
int key_click_percent;
int bell_percent;
int bell_pitch;
int bell_duration;
int led;
int led_mode;
int key;
int auto_repeat_mode;
} XnKeyboardControl;
void xnestEncodeKeyboardControl(XnKeyboardControl ctrl, long mask, uint32_t *value);
#endif /* __XNEST__XCB_H */