diff --git a/kitty/data-types.h b/kitty/data-types.h index 479a1eb68..4a0c3fbbf 100644 --- a/kitty/data-types.h +++ b/kitty/data-types.h @@ -245,7 +245,7 @@ PyTypeObject ChangeTracker_Type; typedef struct { bool mLNM, mIRM, mDECTCEM, mDECSCNM, mDECOM, mDECAWM, mDECCOLM, mDECARM, mDECCKM, - mBRACKETED_PASTE, mFOCUS_TRACKING; + mBRACKETED_PASTE, mFOCUS_TRACKING, mEXTENDED_KEYBOARD; unsigned long mouse_tracking_mode, mouse_tracking_protocol; } ScreenModes; PyTypeObject ScreenModes_Type; diff --git a/kitty/modes.h b/kitty/modes.h index 0131f38ca..f4c83f676 100644 --- a/kitty/modes.h +++ b/kitty/modes.h @@ -75,3 +75,6 @@ #define BRACKETED_PASTE (2004 << 5) #define BRACKETED_PASTE_START "\033[200~" #define BRACKETED_PASTE_END "\033[201~" + +// Extended keyboard protocol +#define EXTENDED_KEYBOARD (2017 << 5) diff --git a/kitty/screen.c b/kitty/screen.c index e7377a90d..bb0d5aa98 100644 --- a/kitty/screen.c +++ b/kitty/screen.c @@ -396,6 +396,7 @@ set_mode_from_const(Screen *self, unsigned int mode, bool val) { SIMPLE_MODE(IRM) SIMPLE_MODE(DECARM) SIMPLE_MODE(BRACKETED_PASTE) + SIMPLE_MODE(EXTENDED_KEYBOARD) SIMPLE_MODE(FOCUS_TRACKING) MOUSE_MODE(MOUSE_BUTTON_TRACKING, mouse_tracking_mode, BUTTON_MODE) MOUSE_MODE(MOUSE_MOTION_TRACKING, mouse_tracking_mode, MOTION_MODE) @@ -919,6 +920,7 @@ report_mode_status(Screen *self, unsigned int which, bool private) { KNOWN_MODE(DECARM); KNOWN_MODE(DECCKM); KNOWN_MODE(BRACKETED_PASTE); + KNOWN_MODE(EXTENDED_KEYBOARD); KNOWN_MODE(FOCUS_TRACKING); #undef KNOWN_MODE } @@ -1071,6 +1073,7 @@ WRAP1B(erase_in_display, 0) static int name##_set(Screen *self, PyObject *val, void UNUSED *closure) { if (val == NULL) { PyErr_SetString(PyExc_TypeError, "Cannot delete attribute"); return -1; } set_mode_from_const(self, uname, PyObject_IsTrue(val) ? true : false); return 0; } MODE_GETSET(in_bracketed_paste_mode, BRACKETED_PASTE) +MODE_GETSET(extended_keyboard, EXTENDED_KEYBOARD) MODE_GETSET(focus_tracking_enabled, FOCUS_TRACKING) MODE_GETSET(auto_repeat_enabled, DECARM) MODE_GETSET(cursor_visible, DECTCEM) @@ -1275,6 +1278,7 @@ static PyMethodDef methods[] = { static PyGetSetDef getsetters[] = { GETSET(in_bracketed_paste_mode) + GETSET(extended_keyboard) GETSET(auto_repeat_enabled) GETSET(focus_tracking_enabled) GETSET(cursor_visible)