Recognize extended keyboard mode

This commit is contained in:
Kovid Goyal 2017-02-10 12:13:31 +05:30
parent 96921e3a39
commit 45334d6b35
3 changed files with 8 additions and 1 deletions

View File

@ -245,7 +245,7 @@ PyTypeObject ChangeTracker_Type;
typedef struct { typedef struct {
bool mLNM, mIRM, mDECTCEM, mDECSCNM, mDECOM, mDECAWM, mDECCOLM, mDECARM, mDECCKM, 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; unsigned long mouse_tracking_mode, mouse_tracking_protocol;
} ScreenModes; } ScreenModes;
PyTypeObject ScreenModes_Type; PyTypeObject ScreenModes_Type;

View File

@ -75,3 +75,6 @@
#define BRACKETED_PASTE (2004 << 5) #define BRACKETED_PASTE (2004 << 5)
#define BRACKETED_PASTE_START "\033[200~" #define BRACKETED_PASTE_START "\033[200~"
#define BRACKETED_PASTE_END "\033[201~" #define BRACKETED_PASTE_END "\033[201~"
// Extended keyboard protocol
#define EXTENDED_KEYBOARD (2017 << 5)

View File

@ -396,6 +396,7 @@ set_mode_from_const(Screen *self, unsigned int mode, bool val) {
SIMPLE_MODE(IRM) SIMPLE_MODE(IRM)
SIMPLE_MODE(DECARM) SIMPLE_MODE(DECARM)
SIMPLE_MODE(BRACKETED_PASTE) SIMPLE_MODE(BRACKETED_PASTE)
SIMPLE_MODE(EXTENDED_KEYBOARD)
SIMPLE_MODE(FOCUS_TRACKING) SIMPLE_MODE(FOCUS_TRACKING)
MOUSE_MODE(MOUSE_BUTTON_TRACKING, mouse_tracking_mode, BUTTON_MODE) MOUSE_MODE(MOUSE_BUTTON_TRACKING, mouse_tracking_mode, BUTTON_MODE)
MOUSE_MODE(MOUSE_MOTION_TRACKING, mouse_tracking_mode, MOTION_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(DECARM);
KNOWN_MODE(DECCKM); KNOWN_MODE(DECCKM);
KNOWN_MODE(BRACKETED_PASTE); KNOWN_MODE(BRACKETED_PASTE);
KNOWN_MODE(EXTENDED_KEYBOARD);
KNOWN_MODE(FOCUS_TRACKING); KNOWN_MODE(FOCUS_TRACKING);
#undef KNOWN_MODE #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; } 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(in_bracketed_paste_mode, BRACKETED_PASTE)
MODE_GETSET(extended_keyboard, EXTENDED_KEYBOARD)
MODE_GETSET(focus_tracking_enabled, FOCUS_TRACKING) MODE_GETSET(focus_tracking_enabled, FOCUS_TRACKING)
MODE_GETSET(auto_repeat_enabled, DECARM) MODE_GETSET(auto_repeat_enabled, DECARM)
MODE_GETSET(cursor_visible, DECTCEM) MODE_GETSET(cursor_visible, DECTCEM)
@ -1275,6 +1278,7 @@ static PyMethodDef methods[] = {
static PyGetSetDef getsetters[] = { static PyGetSetDef getsetters[] = {
GETSET(in_bracketed_paste_mode) GETSET(in_bracketed_paste_mode)
GETSET(extended_keyboard)
GETSET(auto_repeat_enabled) GETSET(auto_repeat_enabled)
GETSET(focus_tracking_enabled) GETSET(focus_tracking_enabled)
GETSET(cursor_visible) GETSET(cursor_visible)