macOS: Add an setting to have the option key not behave as alt
This commit is contained in:
parent
1f9acf99b0
commit
505ae90fd7
@ -12,8 +12,8 @@ version 0.5.0 [future]
|
||||
|
||||
- Add an option to have window focus follow mouse
|
||||
|
||||
- Fix handling of option key on macOS. It now behaves just like the alt key on
|
||||
Linux.
|
||||
- macOS: Fix handling of option key. It now behaves just like the alt key on
|
||||
Linux. There is an option to make it type unicode characters instead.
|
||||
|
||||
- Linux: Add support for startup notification on X11 desktops. kitty will
|
||||
now inform the window manager when its startup is complete.
|
||||
|
||||
@ -261,6 +261,7 @@ type_map = {
|
||||
'initial_window_height': positive_int,
|
||||
'use_system_wcwidth': to_bool,
|
||||
'macos_hide_titlebar': to_bool,
|
||||
'macos_option_as_alt': to_bool,
|
||||
}
|
||||
|
||||
for name in (
|
||||
|
||||
@ -21,6 +21,7 @@ key_to_bytes(int glfw_key, bool smkx, bool extended, int mods, int action) {
|
||||
}
|
||||
|
||||
#define SPECIAL_INDEX(key) ((key & 0x7f) | ( (mods & 0xF) << 7))
|
||||
#define IS_ALT_MODS(mods) (mods == GLFW_MOD_ALT || mods == (GLFW_MOD_ALT | GLFW_MOD_SHIFT))
|
||||
|
||||
void
|
||||
set_special_key_combo(int glfw_key, int mods) {
|
||||
@ -42,12 +43,15 @@ active_window() {
|
||||
void
|
||||
on_text_input(unsigned int codepoint, int mods) {
|
||||
Window *w = active_window();
|
||||
static char buf[10];
|
||||
static char buf[16];
|
||||
unsigned int sz = 0;
|
||||
|
||||
if (w != NULL) {
|
||||
bool is_text = mods <= GLFW_MOD_SHIFT;
|
||||
if (is_text) sz = encode_utf8(codepoint, buf);
|
||||
#ifdef __APPLE__
|
||||
if (!OPT(macos_option_as_alt) && IS_ALT_MODS(mods)) sz = encode_utf8(codepoint, buf);
|
||||
#endif
|
||||
if (sz) schedule_write_to_child(w->id, buf, sz);
|
||||
}
|
||||
}
|
||||
@ -156,6 +160,9 @@ on_key_input(int key, int scancode, int action, int mods) {
|
||||
if (screen->scrolled_by && action == GLFW_PRESS && !is_modifier_key(key)) {
|
||||
screen_history_scroll(screen, SCROLL_FULL, false); // scroll back to bottom
|
||||
}
|
||||
#ifdef __APPLE__
|
||||
if (!OPT(macos_option_as_alt) && IS_ALT_MODS(mods)) return;
|
||||
#endif
|
||||
if (
|
||||
action == GLFW_PRESS ||
|
||||
(action == GLFW_REPEAT && screen->modes.mDECARM) ||
|
||||
|
||||
@ -319,3 +319,9 @@ map ctrl+shift+backspace restore_font_size
|
||||
|
||||
# Hide the kitty window's title bar on macOS.
|
||||
macos_hide_titlebar no
|
||||
|
||||
# Use the option key as an alt key. With this set to no, kitty will use
|
||||
# the macOS native Option+Key = unicode character behavior. This will
|
||||
# break any Alt+key keyboard shortcuts in your terminal programs, but you
|
||||
# can use the macOS unicode input technique.
|
||||
macos_option_as_alt yes
|
||||
|
||||
@ -162,6 +162,7 @@ PYWRAP1(set_options) {
|
||||
S(url_color, color_as_int);
|
||||
S(repaint_delay, repaint_delay);
|
||||
S(input_delay, repaint_delay);
|
||||
S(macos_option_as_alt, PyObject_IsTrue);
|
||||
|
||||
PyObject *chars = PyObject_GetAttrString(args, "select_by_word_characters");
|
||||
if (chars == NULL) return NULL;
|
||||
|
||||
@ -19,6 +19,7 @@ typedef struct {
|
||||
color_type url_color;
|
||||
double repaint_delay, input_delay;
|
||||
bool focus_follows_mouse;
|
||||
bool macos_option_as_alt;
|
||||
} Options;
|
||||
|
||||
typedef struct {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user