Refactor key encoding

Cannot have key names in global namespace as not all key names are valid
python identifiers. So move them into a dict.
This commit is contained in:
Kovid Goyal 2020-03-03 14:54:30 +05:30
parent 64b497589f
commit 8843ded1c9
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
7 changed files with 37 additions and 12 deletions

View File

@ -17,7 +17,7 @@
from kitty.cli import CONFIG_HELP, parse_args
from kitty.constants import appname
from kitty.fast_data_types import wcswidth
from kitty.key_encoding import ESCAPE, RELEASE, enter_key
from kitty.key_encoding import K, RELEASE, enter_key
from ..tui.handler import Handler
from ..tui.images import ImageManager
@ -40,6 +40,7 @@
INITIALIZING, COLLECTED, DIFFED, COMMAND, MESSAGE = range(5)
ESCAPE = K['ESCAPE']
def generate_diff(collection, context):

View File

@ -12,7 +12,7 @@
from kitty.cli import parse_args
from kitty.fast_data_types import set_clipboard_string
from kitty.key_encoding import ESCAPE, backspace_key, enter_key
from kitty.key_encoding import K, backspace_key, enter_key
from kitty.utils import screen_size_function
from ..tui.handler import Handler
@ -23,6 +23,7 @@
DEFAULT_HINT_ALPHABET = string.digits + string.ascii_lowercase
DEFAULT_REGEX = r'(?m)^\s*(.+)\s*$'
screen_size = screen_size_function()
ESCAPE = K['ESCAPE']
class Mark:

View File

@ -8,7 +8,7 @@
from kitty.cli import parse_args
from kitty.cmds import cmap, parse_subcommand_cli
from kitty.constants import version
from kitty.key_encoding import CTRL, ESCAPE, RELEASE, N, S, T, W
from kitty.key_encoding import CTRL, RELEASE, K
from kitty.remote_control import encode_send, parse_rc_args
from ..tui.handler import Handler
@ -16,6 +16,11 @@
from ..tui.operations import styled
global_opts = None
ESCAPE = K['ESCAPE']
N = K['N']
S = K['S']
T = K['T']
W = K['W']
class Resize(Handler):

View File

@ -3,7 +3,14 @@
# License: GPL v3 Copyright: 2018, Kovid Goyal <kovid at kovidgoyal.net>
from kitty.fast_data_types import truncate_point_for_length, wcswidth
from kitty.key_encoding import RELEASE, HOME, END, BACKSPACE, DELETE, LEFT, RIGHT
from kitty.key_encoding import RELEASE, K
HOME = K['HOME']
END = K['END']
BACKSPACE = K['BACKSPACE']
DELETE = K['DELETE']
LEFT = K['LEFT']
RIGHT = K['RIGHT']
class LineEdit:

View File

@ -19,8 +19,8 @@
close_tty, normal_tty, open_tty, parse_input_from_terminal, raw_tty
)
from kitty.key_encoding import (
ALT, CTRL, PRESS, RELEASE, REPEAT, SHIFT, C, D, backspace_key,
decode_key_event, enter_key
ALT, CTRL, PRESS, RELEASE, REPEAT, SHIFT, backspace_key,
decode_key_event, enter_key, K
)
from kitty.utils import screen_size_function, write_all
@ -28,6 +28,9 @@
from .operations import init_state, reset_state
C, D = K['C'], K['D']
def debug(*a, **kw):
from base64 import standard_b64encode
buf = io.StringIO()

View File

@ -13,11 +13,8 @@
from kitty.cli import parse_args
from kitty.config import cached_values_for
from kitty.constants import config_dir
from kitty.fast_data_types import wcswidth, is_emoji_presentation_base
from kitty.key_encoding import (
DOWN, ESCAPE, F1, F2, F3, F4, F12, LEFT, RELEASE, RIGHT, SHIFT, TAB, UP, CTRL,
enter_key
)
from kitty.fast_data_types import is_emoji_presentation_base, wcswidth
from kitty.key_encoding import CTRL, RELEASE, SHIFT, K, enter_key
from kitty.utils import get_editor
from ..tui.handler import Handler
@ -29,6 +26,17 @@
)
HEX, NAME, EMOTICONS, FAVORITES = 'HEX', 'NAME', 'EMOTICONS', 'FAVORITES'
UP = K['UP']
DOWN = K['DOWN']
LEFT = K['LEFT']
RIGHT = K['RIGHT']
TAB = K['TAB']
ESCAPE = K['ESCAPE']
F1 = K['F1']
F2 = K['F2']
F3 = K['F3']
F4 = K['F4']
F12 = K['F12']
favorites_path = os.path.join(config_dir, 'unicode-input-favorites.conf')
INDEX_CHAR = '.'
DEFAULT_SET = tuple(map(

2
kitty/key_encoding.py generated
View File

@ -459,7 +459,7 @@ def update_encoding():
mod_map = {c: i for i, c in enumerate('ABCDEFGHIJKLMNOP')}
rmod_map = {v: k for k, v in mod_map.items()}
key_rmap = {}
g = globals()
g = K = {}
config_key_map = {}
config_mod_map = {
'SHIFT': SHIFT,