* Null-terminated list of keysyms which must be down for this keysym
* to be properly typed.
*/
- int* set_keysyms;
+ const int* set_keysyms;
/**
* Null-terminated list of keysyms which must be up for this keysym
* to be properly typed.
*/
- int* clear_keysyms;
+ const int* clear_keysyms;
} guac_rdp_scancode_map;
} guac_rdp_altcode_map;
/**
+ * Mapping from keysym to current state
+ */
+typedef int guac_rdp_keysym_state_map[256][256];
+
+/**
* Static mapping from keysyms to scancodes.
*/
typedef guac_rdp_scancode_map guac_rdp_keysym_scancode_map[256][256];
/**
* Simple macro for referencing the mapped value of an altcode or scancode for a given keysym.
*/
-#define GUAC_RDP_KEYSYM_LOOKUP(keysym_mapping, keysym) (&((keysym_mapping)[((keysym) & 0xFF00) >> 8][(keysym) & 0xFF]))
+#define GUAC_RDP_KEYSYM_LOOKUP(keysym_mapping, keysym) ((keysym_mapping)[((keysym) & 0xFF00) >> 8][(keysym) & 0xFF])
+
+/**
+ * Keysym string containing only the left "shift" key.
+ */
+extern const int GUAC_KEYSYMS_SHIFT[];
#endif