/****************************************************************************
- * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_mouse.c,v 1.174 2017/06/10 23:27:20 tom Exp $")
+MODULE_ID("$Id: lib_mouse.c,v 1.177 2018/09/22 19:54:21 tom Exp $")
#include <tic.h>
{
sp->_mouse_gpm_found = FALSE;
if ((sp->_dlopen_gpm = dlopen(LIBGPM_SONAME, my_RTLD)) != 0) {
-#pragma GCC diagnostic push
#if (defined(__GNUC__) && (__GNUC__ >= 5)) || defined(__clang__)
+#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
#endif
if (GET_DLSYM(gpm_fd) == 0 ||
GET_DLSYM(Gpm_Open) == 0 ||
GET_DLSYM(Gpm_Close) == 0 ||
GET_DLSYM(Gpm_GetEvent) == 0) {
+#if (defined(__GNUC__) && (__GNUC__ >= 5)) || defined(__clang__)
#pragma GCC diagnostic pop
+#endif
T(("GPM initialization failed: %s", dlerror()));
unload_gpm_library(sp);
} else {
/* OS/2 VIO */
#if USE_EMX_MOUSE
if (!sp->_emxmouse_thread
- && strstr(TerminalOf(sp)->type.term_names, "xterm") == 0
+ && strstr(SP_TERMTYPE term_names, "xterm") == 0
&& key_mouse) {
int handles[2];
/* we know how to recognize mouse events under "xterm" */
if (key_mouse != 0) {
if (!strcmp(key_mouse, xterm_kmous)
- || strstr(TerminalOf(sp)->type.term_names, "xterm") != 0) {
+ || strstr(SP_TERMTYPE term_names, "xterm") != 0) {
init_xterm_mouse(sp);
}
- } else if (strstr(TerminalOf(sp)->type.term_names, "xterm") != 0) {
+ } else if (strstr(SP_TERMTYPE term_names, "xterm") != 0) {
if (_nc_add_to_try(&(sp->_keytry), xterm_kmous, KEY_MOUSE) == OK)
init_xterm_mouse(sp);
}
{
bool result;
+ _tracef("decode_X10_bstate %#x", intro);
eventp->bstate = 0;
if (!handle_wheel(sp, eventp, (int) intro, (intro & 96) == 96)) {
} else {
eventp->bstate = REPORT_MOUSE_POSITION;
}
+ if (b & 4) {
+ eventp->bstate |= BUTTON_SHIFT;
+ }
+ if (b & 8) {
+ eventp->bstate |= BUTTON_ALT;
+ }
+ if (b & 16) {
+ eventp->bstate |= BUTTON_CTRL;
+ }
}
result = (eventp->bstate & REPORT_MOUSE_POSITION) ? TRUE : FALSE;
eventp->x = (data.params[1] ? (data.params[1] - 1) : 0);