mirror of
https://github.com/Relintai/sdl2_frt.git
synced 2025-04-25 19:54:58 +02:00
Disable FreeBSD console mouse when initializing evdev input
Enable it again after quitting evdev input.
This commit is contained in:
parent
d4d32833f4
commit
c5f9e061b5
@ -87,15 +87,17 @@ static int fatal_signals[] =
|
|||||||
|
|
||||||
static void kbd_cleanup(void)
|
static void kbd_cleanup(void)
|
||||||
{
|
{
|
||||||
|
struct mouse_info mData;
|
||||||
SDL_EVDEV_keyboard_state* kbd = kbd_cleanup_state;
|
SDL_EVDEV_keyboard_state* kbd = kbd_cleanup_state;
|
||||||
if (kbd == NULL) {
|
if (kbd == NULL) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
kbd_cleanup_state = NULL;
|
kbd_cleanup_state = NULL;
|
||||||
|
mData.operation = MOUSE_SHOW;
|
||||||
ioctl(kbd->keyboard_fd, KDSKBMODE, kbd->old_kbd_mode);
|
ioctl(kbd->keyboard_fd, KDSKBMODE, kbd->old_kbd_mode);
|
||||||
if (kbd->keyboard_fd != kbd->console_fd) close(kbd->keyboard_fd);
|
if (kbd->keyboard_fd != kbd->console_fd) close(kbd->keyboard_fd);
|
||||||
ioctl(kbd->console_fd, CONS_SETKBD, (unsigned long)(kbd->kbInfo->kb_index));
|
ioctl(kbd->console_fd, CONS_SETKBD, (unsigned long)(kbd->kbInfo->kb_index));
|
||||||
|
ioctl(kbd->console_fd, CONS_MOUSECTL, &mData);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -221,9 +223,12 @@ SDL_EVDEV_keyboard_state *
|
|||||||
SDL_EVDEV_kbd_init(void)
|
SDL_EVDEV_kbd_init(void)
|
||||||
{
|
{
|
||||||
SDL_EVDEV_keyboard_state *kbd;
|
SDL_EVDEV_keyboard_state *kbd;
|
||||||
|
struct mouse_info mData;
|
||||||
char flag_state;
|
char flag_state;
|
||||||
char* devicePath;
|
char* devicePath;
|
||||||
|
|
||||||
|
memset(&mData, 0, sizeof(struct mouse_info));
|
||||||
|
mData.operation = MOUSE_HIDE;
|
||||||
kbd = (SDL_EVDEV_keyboard_state *)SDL_calloc(1, sizeof(SDL_EVDEV_keyboard_state));
|
kbd = (SDL_EVDEV_keyboard_state *)SDL_calloc(1, sizeof(SDL_EVDEV_keyboard_state));
|
||||||
if (!kbd) {
|
if (!kbd) {
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -241,7 +246,8 @@ SDL_EVDEV_kbd_init(void)
|
|||||||
kbd->kbInfo = SDL_calloc(sizeof(keyboard_info_t), 1);
|
kbd->kbInfo = SDL_calloc(sizeof(keyboard_info_t), 1);
|
||||||
|
|
||||||
ioctl(kbd->console_fd, KDGKBINFO, kbd->kbInfo);
|
ioctl(kbd->console_fd, KDGKBINFO, kbd->kbInfo);
|
||||||
|
ioctl(kbd->console_fd, CONS_MOUSECTL, &mData);
|
||||||
|
|
||||||
if (ioctl(kbd->console_fd, KDGKBSTATE, &flag_state) == 0) {
|
if (ioctl(kbd->console_fd, KDGKBSTATE, &flag_state) == 0) {
|
||||||
kbd->ledflagstate = flag_state;
|
kbd->ledflagstate = flag_state;
|
||||||
}
|
}
|
||||||
@ -292,9 +298,14 @@ SDL_EVDEV_kbd_init(void)
|
|||||||
void
|
void
|
||||||
SDL_EVDEV_kbd_quit(SDL_EVDEV_keyboard_state *kbd)
|
SDL_EVDEV_kbd_quit(SDL_EVDEV_keyboard_state *kbd)
|
||||||
{
|
{
|
||||||
|
struct mouse_info mData;
|
||||||
|
|
||||||
if (!kbd) {
|
if (!kbd) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
memset(&mData, 0, sizeof(struct mouse_data));
|
||||||
|
mData.operation = MOUSE_SHOW;
|
||||||
|
ioctl(kbd->console_fd, CONS_MOUSECTL, &mData);
|
||||||
|
|
||||||
kbd_unregister_emerg_cleanup();
|
kbd_unregister_emerg_cleanup();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user