Support for turning off auto-repeat
This commit is contained in:
parent
256a5318f1
commit
f25b2d241f
@ -226,7 +226,7 @@ PyTypeObject ChangeTracker_Type;
|
||||
|
||||
|
||||
typedef struct {
|
||||
bool mLNM, mIRM, mDECTCEM, mDECSCNM, mDECOM, mDECAWM, mDECCOLM,
|
||||
bool mLNM, mIRM, mDECTCEM, mDECSCNM, mDECOM, mDECAWM, mDECCOLM, mDECARM,
|
||||
mBRACKETED_PASTE, mFOCUS_TRACKING, mMOUSE_BUTTON_TRACKING,
|
||||
mMOUSE_MOTION_TRACKING, mMOUSE_SGR_MODE, mMOUSE_MOVE_TRACKING;
|
||||
} ScreenModes;
|
||||
|
||||
@ -30,10 +30,15 @@
|
||||
// on the screen.
|
||||
#define DECCOLM (3 << 5)
|
||||
|
||||
// Scroll speed
|
||||
#define DECSCLM (4 << 5)
|
||||
|
||||
// *Screen Mode*: toggles screen-wide reverse-video mode.
|
||||
#define DECSCNM (5 << 5)
|
||||
|
||||
// Auto-repeat of keys
|
||||
#define DECARM (8 << 5)
|
||||
|
||||
/* *Origin Mode*: allows cursor addressing relative to a user-defined
|
||||
origin. This mode resets when the terminal is powered up or reset.
|
||||
It does not affect the erase in display (ED) function.
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
#include "tracker.h"
|
||||
#include "modes.h"
|
||||
|
||||
static const ScreenModes empty_modes = {0, .mDECAWM=true, .mDECTCEM=true};
|
||||
static const ScreenModes empty_modes = {0, .mDECAWM=true, .mDECTCEM=true, .mDECARM=true};
|
||||
|
||||
// Constructor/destructor {{{
|
||||
|
||||
@ -305,6 +305,7 @@ set_mode_from_const(Screen *self, unsigned int mode, bool val) {
|
||||
switch(mode) {
|
||||
SIMPLE_MODE(LNM)
|
||||
SIMPLE_MODE(IRM)
|
||||
SIMPLE_MODE(DECARM)
|
||||
SIMPLE_MODE(BRACKETED_PASTE)
|
||||
SIMPLE_MODE(MOUSE_BUTTON_TRACKING)
|
||||
SIMPLE_MODE(MOUSE_MOVE_TRACKING)
|
||||
@ -313,7 +314,8 @@ set_mode_from_const(Screen *self, unsigned int mode, bool val) {
|
||||
SIMPLE_MODE(FOCUS_TRACKING)
|
||||
|
||||
case DECCKM:
|
||||
break; // we ignore this mode
|
||||
case DECSCLM:
|
||||
break; // we ignore these modes
|
||||
case DECTCEM:
|
||||
self->modes.mDECTCEM = val;
|
||||
if ((val && self->cursor->hidden) || (!val && !self->cursor->hidden)) {
|
||||
@ -918,6 +920,7 @@ MODE_GETTER(mouse_button_tracking_enabled, MOUSE_BUTTON_TRACKING)
|
||||
MODE_GETTER(mouse_motion_tracking_enabled, MOUSE_MOTION_TRACKING)
|
||||
MODE_GETTER(mouse_move_tracking_enabled, MOUSE_MOVE_TRACKING)
|
||||
MODE_GETTER(mouse_in_sgr_mode, MOUSE_SGR_MODE)
|
||||
MODE_GETTER(auto_repeat_enabled, DECARM)
|
||||
|
||||
|
||||
static PyObject*
|
||||
@ -1086,6 +1089,7 @@ static PyMethodDef methods[] = {
|
||||
MND(set_scroll_cell_data, METH_VARARGS)
|
||||
MND(apply_selection, METH_VARARGS)
|
||||
MND(in_bracketed_paste_mode, METH_NOARGS)
|
||||
MND(auto_repeat_enabled, METH_NOARGS)
|
||||
MND(focus_tracking_enabled, METH_NOARGS)
|
||||
MND(mouse_button_tracking_enabled, METH_NOARGS)
|
||||
MND(mouse_motion_tracking_enabled, METH_NOARGS)
|
||||
|
||||
@ -274,11 +274,12 @@ class TabManager(Thread):
|
||||
if not passthrough:
|
||||
return
|
||||
if window:
|
||||
if window.char_grid.scrolled_by and key not in MODIFIER_KEYS:
|
||||
window.scroll_end()
|
||||
data = interpret_key_event(key, scancode, mods)
|
||||
if data:
|
||||
window.write_to_child(data)
|
||||
if window.screen.auto_repeat_enabled() or action == GLFW_PRESS:
|
||||
if window.char_grid.scrolled_by and key not in MODIFIER_KEYS:
|
||||
window.scroll_end()
|
||||
data = interpret_key_event(key, scancode, mods)
|
||||
if data:
|
||||
window.write_to_child(data)
|
||||
|
||||
def on_focus(self, window, focused):
|
||||
w = self.active_window
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user