diff --git a/TermTk/TTkCore/shortcut.py b/TermTk/TTkCore/shortcut.py new file mode 100644 index 00000000..9a0bc9e4 --- /dev/null +++ b/TermTk/TTkCore/shortcut.py @@ -0,0 +1,67 @@ +# MIT License +# +# Copyright (c) 2024 Eugenio Parodi +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +__all__ = ['TTkShortcut'] + +from TermTk.TTkCore.constant import TTkK +from TermTk.TTkCore.helper import TTkHelper +from TermTk.TTkCore.signal import pyTTkSlot, pyTTkSignal + +class TTkStandardKey(): + pass + +class TTkKeySequence(): + pass + +class TTkShortcut(): + _shortcuts = {} + __slots__ = ( + '_key', '_parent', '_shortcutContext', + # Signals + 'activated') + def __init__(self, + key, parent=None, + shortcutContext: TTkK.ShortcutContext = TTkK.ShortcutContext.WindowShortcut): + self._key = key + self._parent = parent + self._shortcutContext = shortcutContext + # Signals + self.activated = pyTTkSignal() + if key not in TTkShortcut._shortcuts: + TTkShortcut._shortcuts[key] = [] + TTkShortcut._shortcuts[key].append(self) + + @staticmethod + def processKey(key, focusWidget): + if key in TTkShortcut._shortcuts: + for sc in TTkShortcut._shortcuts[key]: + if ( ( sc._shortcutContext == TTkK.WidgetShortcut + and focusWidget == sc._parent ) + or ( sc._shortcutContext == TTkK.WidgetWithChildrenShortcut + and ( focusWidget == sc._parent + or TTkHelper.isParent(sc._parent,focusWidget) ) ) + or ( sc._shortcutContext == TTkK.WindowShortcut ) + or ( sc._shortcutContext == TTkK.ApplicationShortcut )): + if sc.activated._connected_slots: + sc.activated.emit() + return True + return False diff --git a/tests/timeit/16.dict.04.get.py b/tests/timeit/16.dict.04.get.py new file mode 100755 index 00000000..69d35cbc --- /dev/null +++ b/tests/timeit/16.dict.04.get.py @@ -0,0 +1,657 @@ +#!/usr/bin/env python3 + +# MIT License +# +# Copyright (c) 2023 Eugenio Parodi +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +import sys, os + +import timeit + +sys.path.append(os.path.join(sys.path[0],'../..')) +from TermTk import TTkK + +testInput = ['\033\x1a', '\033\x4f', '\033\x68', '\x08', "\033[1;5R", "\033[1;4F", "\033[1;3B", "\177"] + +def _translate_key1(key): + return { + "\177" : ( TTkK.Key_Backspace , TTkK.NoModifier ) , + "\t" : ( TTkK.Key_Tab , TTkK.NoModifier ) , + "\033[Z" : ( TTkK.Key_Tab , TTkK.ShiftModifier ) , + "\n" : ( TTkK.Key_Enter , TTkK.NoModifier ) , + "\r" : ( TTkK.Key_Enter , TTkK.NoModifier ) , + "\033[A" : ( TTkK.Key_Up , TTkK.NoModifier ) , + "\033[B" : ( TTkK.Key_Down , TTkK.NoModifier ) , + "\033[C" : ( TTkK.Key_Right , TTkK.NoModifier ) , + "\033[D" : ( TTkK.Key_Left , TTkK.NoModifier ) , + + "\033[1;2A" : ( TTkK.Key_Up , TTkK.ShiftModifier ) , + "\033[1;2B" : ( TTkK.Key_Down , TTkK.ShiftModifier ) , + "\033[1;2C" : ( TTkK.Key_Right , TTkK.ShiftModifier ) , + "\033[1;2D" : ( TTkK.Key_Left , TTkK.ShiftModifier ) , + "\033[1;3A" : ( TTkK.Key_Up , TTkK.AltModifier ) , + "\033[1;3B" : ( TTkK.Key_Down , TTkK.AltModifier ) , + "\033[1;3C" : ( TTkK.Key_Right , TTkK.AltModifier ) , + "\033[1;3D" : ( TTkK.Key_Left , TTkK.AltModifier ) , + "\033[1;4A" : ( TTkK.Key_Up , TTkK.AltModifier | TTkK.ShiftModifier ) , + "\033[1;4B" : ( TTkK.Key_Down , TTkK.AltModifier | TTkK.ShiftModifier ) , + "\033[1;4C" : ( TTkK.Key_Right , TTkK.AltModifier | TTkK.ShiftModifier ) , + "\033[1;4D" : ( TTkK.Key_Left , TTkK.AltModifier | TTkK.ShiftModifier ) , + "\033[1;5A" : ( TTkK.Key_Up , TTkK.ControlModifier ) , + "\033[1;5B" : ( TTkK.Key_Down , TTkK.ControlModifier ) , + "\033[1;5C" : ( TTkK.Key_Right , TTkK.ControlModifier ) , + "\033[1;5D" : ( TTkK.Key_Left , TTkK.ControlModifier ) , + + "\033[5~" : ( TTkK.Key_PageUp , TTkK.NoModifier ) , + "\033[6~" : ( TTkK.Key_PageDown , TTkK.NoModifier ) , + "\033[5;2~" : ( TTkK.Key_PageUp , TTkK.ShiftModifier ) , + "\033[6;2~" : ( TTkK.Key_PageDown , TTkK.ShiftModifier ) , + "\033[5;3~" : ( TTkK.Key_PageUp , TTkK.AltModifier ) , + "\033[6;3~" : ( TTkK.Key_PageDown , TTkK.AltModifier ) , + "\033[5;4~" : ( TTkK.Key_PageUp , TTkK.AltModifier | TTkK.ShiftModifier ) , + "\033[6;4~" : ( TTkK.Key_PageDown , TTkK.AltModifier | TTkK.ShiftModifier ) , + "\033[5;5~" : ( TTkK.Key_PageUp , TTkK.ControlModifier ) , + "\033[6;5~" : ( TTkK.Key_PageDown , TTkK.ControlModifier ) , + "\033[5;7~" : ( TTkK.Key_PageUp , TTkK.AltModifier | TTkK.ControlModifier ) , + "\033[6;7~" : ( TTkK.Key_PageDown , TTkK.AltModifier | TTkK.ControlModifier ) , + + # Xterm + "\033[F" : ( TTkK.Key_End , TTkK.NoModifier ) , + "\033[H" : ( TTkK.Key_Home , TTkK.NoModifier ) , + # Terminator + tmux + "\033[4~" : ( TTkK.Key_End , TTkK.NoModifier ) , + "\033[1~" : ( TTkK.Key_Home , TTkK.NoModifier ) , + "\033[2~" : ( TTkK.Key_Insert , TTkK.NoModifier ) , + "\033[3~" : ( TTkK.Key_Delete , TTkK.NoModifier ) , + + "\033[1;2F" : ( TTkK.Key_End , TTkK.ShiftModifier ) , + "\033[1;2H" : ( TTkK.Key_Home , TTkK.ShiftModifier ) , + "\033[2;2~" : ( TTkK.Key_Insert , TTkK.ShiftModifier ) , + "\033[3;2~" : ( TTkK.Key_Delete , TTkK.ShiftModifier ) , + + "\033[1;3F" : ( TTkK.Key_End , TTkK.AltModifier ) , + "\033[1;3H" : ( TTkK.Key_Home , TTkK.AltModifier ) , + "\033[2;3~" : ( TTkK.Key_Insert , TTkK.AltModifier ) , + "\033[3;3~" : ( TTkK.Key_Delete , TTkK.AltModifier ) , + + "\033[1;4F" : ( TTkK.Key_End , TTkK.ShiftModifier | TTkK.AltModifier ) , + "\033[1;4H" : ( TTkK.Key_Home , TTkK.ShiftModifier | TTkK.AltModifier ) , + "\033[2;4~" : ( TTkK.Key_Insert , TTkK.ShiftModifier | TTkK.AltModifier ) , + "\033[3;4~" : ( TTkK.Key_Delete , TTkK.ShiftModifier | TTkK.AltModifier ) , + + "\033[1;5F" : ( TTkK.Key_End , TTkK.ControlModifier ) , + "\033[1;5H" : ( TTkK.Key_Home , TTkK.ControlModifier ) , + "\033[2;5~" : ( TTkK.Key_Insert , TTkK.ControlModifier ) , + "\033[3;5~" : ( TTkK.Key_Delete , TTkK.ControlModifier ) , + + "\033[1;6F" : ( TTkK.Key_End , TTkK.ShiftModifier | TTkK.ControlModifier) , + "\033[1;6H" : ( TTkK.Key_Home , TTkK.ShiftModifier | TTkK.ControlModifier) , + "\033[2;6~" : ( TTkK.Key_Insert , TTkK.ShiftModifier | TTkK.ControlModifier) , + "\033[3;6~" : ( TTkK.Key_Delete , TTkK.ShiftModifier | TTkK.ControlModifier) , + + "\033[1;7F" : ( TTkK.Key_End , TTkK.AltModifier | TTkK.ControlModifier) , + "\033[1;7H" : ( TTkK.Key_Home , TTkK.AltModifier | TTkK.ControlModifier) , + "\033[2;7~" : ( TTkK.Key_Insert , TTkK.AltModifier | TTkK.ControlModifier) , + "\033[3;7~" : ( TTkK.Key_Delete , TTkK.AltModifier | TTkK.ControlModifier) , + + "\033[1;8F" : ( TTkK.Key_End , TTkK.ShiftModifier | TTkK.AltModifier | TTkK.ControlModifier) , + "\033[1;8H" : ( TTkK.Key_Home , TTkK.ShiftModifier | TTkK.AltModifier | TTkK.ControlModifier) , + "\033[2;8~" : ( TTkK.Key_Insert , TTkK.ShiftModifier | TTkK.AltModifier | TTkK.ControlModifier) , + "\033[3;8~" : ( TTkK.Key_Delete , TTkK.ShiftModifier | TTkK.AltModifier | TTkK.ControlModifier) , + + "\033" : ( TTkK.Key_Escape , TTkK.NoModifier ) , + # Function Key + "\033OP" : ( TTkK.Key_F1 , TTkK.NoModifier ) , + "\033OQ" : ( TTkK.Key_F2 , TTkK.NoModifier ) , + "\033OR" : ( TTkK.Key_F3 , TTkK.NoModifier ) , + "\033OS" : ( TTkK.Key_F4 , TTkK.NoModifier ) , + "\033[15~" : ( TTkK.Key_F5 , TTkK.NoModifier ) , + "\033[17~" : ( TTkK.Key_F6 , TTkK.NoModifier ) , + "\033[18~" : ( TTkK.Key_F7 , TTkK.NoModifier ) , + "\033[19~" : ( TTkK.Key_F8 , TTkK.NoModifier ) , + "\033[20~" : ( TTkK.Key_F9 , TTkK.NoModifier ) , + "\033[21~" : ( TTkK.Key_F10 , TTkK.NoModifier ) , + "\033[23~" : ( TTkK.Key_F11 , TTkK.NoModifier ) , + "\033[24~" : ( TTkK.Key_F12 , TTkK.NoModifier ) , + "\033[1;2P" : ( TTkK.Key_F1 , TTkK.ShiftModifier ) , + "\033[1;2Q" : ( TTkK.Key_F2 , TTkK.ShiftModifier ) , + "\033[1;2R" : ( TTkK.Key_F3 , TTkK.ShiftModifier ) , + "\033[1;2S" : ( TTkK.Key_F4 , TTkK.ShiftModifier ) , + "\033[15;2~": ( TTkK.Key_F5 , TTkK.ShiftModifier ) , + "\033[17;2~": ( TTkK.Key_F6 , TTkK.ShiftModifier ) , + "\033[18;2~": ( TTkK.Key_F7 , TTkK.ShiftModifier ) , + "\033[19;2~": ( TTkK.Key_F8 , TTkK.ShiftModifier ) , + "\033[20;2~": ( TTkK.Key_F9 , TTkK.ShiftModifier ) , + "\033[21;2~": ( TTkK.Key_F10 , TTkK.ShiftModifier ) , + "\033[23;2~": ( TTkK.Key_F11 , TTkK.ShiftModifier ) , + "\033[24;2~": ( TTkK.Key_F12 , TTkK.ShiftModifier ) , + "\033[1;5P" : ( TTkK.Key_F1 , TTkK.ControlModifier ) , + "\033[1;5Q" : ( TTkK.Key_F2 , TTkK.ControlModifier ) , + "\033[1;5R" : ( TTkK.Key_F3 , TTkK.ControlModifier ) , + "\033[1;5S" : ( TTkK.Key_F4 , TTkK.ControlModifier ) , + "\033[15;5~": ( TTkK.Key_F5 , TTkK.ControlModifier ) , + "\033[17;5~": ( TTkK.Key_F6 , TTkK.ControlModifier ) , + "\033[18;5~": ( TTkK.Key_F7 , TTkK.ControlModifier ) , + "\033[19;5~": ( TTkK.Key_F8 , TTkK.ControlModifier ) , + "\033[20;5~": ( TTkK.Key_F9 , TTkK.ControlModifier ) , + "\033[21;5~": ( TTkK.Key_F10 , TTkK.ControlModifier ) , + "\033[23;5~": ( TTkK.Key_F11 , TTkK.ControlModifier ) , + "\033[24;5~": ( TTkK.Key_F12 , TTkK.ControlModifier ) , + # "\033[1;3P" : ( TTkK.Key_F1 , TTkK.AltModifier ) , + # "\033[1;3Q" : ( TTkK.Key_F2 , TTkK.AltModifier ) , + "\033[1;3R" : ( TTkK.Key_F3 , TTkK.AltModifier ) , + # "\033[1;3S" : ( TTkK.Key_F4 , TTkK.AltModifier ) , + # "\033[15;3~": ( TTkK.Key_F5 , TTkK.AltModifier ) , + "\033[17;3~": ( TTkK.Key_F6 , TTkK.AltModifier ) , + # "\033[18;3~": ( TTkK.Key_F7 , TTkK.AltModifier ) , + # "\033[19;3~": ( TTkK.Key_F8 , TTkK.AltModifier ) , + "\033[20;3~": ( TTkK.Key_F9 , TTkK.AltModifier ) , + # "\033[21;3~": ( TTkK.Key_F10 , TTkK.AltModifier ) , + "\033[23;3~": ( TTkK.Key_F11 , TTkK.AltModifier ) , + "\033[24;3~": ( TTkK.Key_F12 , TTkK.AltModifier ) , + + '\x01': ( TTkK.Key_A , TTkK.ControlModifier ), + '\x02': ( TTkK.Key_B , TTkK.ControlModifier ), + '\x03': ( TTkK.Key_C , TTkK.ControlModifier ), + '\x04': ( TTkK.Key_D , TTkK.ControlModifier ), + '\x05': ( TTkK.Key_E , TTkK.ControlModifier ), + '\x06': ( TTkK.Key_F , TTkK.ControlModifier ), + '\x07': ( TTkK.Key_G , TTkK.ControlModifier ), + '\x08': ( TTkK.Key_H , TTkK.ControlModifier ), + # '\x09': ( TTkK.Key_I , TTkK.ControlModifier ), # Tab = '\t' = 0x09 + '\x0a': ( TTkK.Key_J , TTkK.ControlModifier ), # Enter = '\n' = 0x0a + '\x0b': ( TTkK.Key_K , TTkK.ControlModifier ), + '\x0c': ( TTkK.Key_L , TTkK.ControlModifier ), + # '\x0d': ( TTkK.Key_M , TTkK.ControlModifier ), # Enter = '\r' = 0x0d + '\x0e': ( TTkK.Key_N , TTkK.ControlModifier ), + '\x0f': ( TTkK.Key_O , TTkK.ControlModifier ), + '\x10': ( TTkK.Key_P , TTkK.ControlModifier ), + '\x11': ( TTkK.Key_Q , TTkK.ControlModifier ), + '\x12': ( TTkK.Key_R , TTkK.ControlModifier ), + '\x13': ( TTkK.Key_S , TTkK.ControlModifier ), + '\x14': ( TTkK.Key_T , TTkK.ControlModifier ), + '\x15': ( TTkK.Key_U , TTkK.ControlModifier ), + '\x16': ( TTkK.Key_V , TTkK.ControlModifier ), + '\x17': ( TTkK.Key_W , TTkK.ControlModifier ), + '\x18': ( TTkK.Key_X , TTkK.ControlModifier ), + '\x19': ( TTkK.Key_Y , TTkK.ControlModifier ), + '\x1a': ( TTkK.Key_Z , TTkK.ControlModifier ), + + '\033\x61': ( TTkK.Key_A , TTkK.AltModifier ), + '\033\x62': ( TTkK.Key_B , TTkK.AltModifier ), + '\033\x63': ( TTkK.Key_C , TTkK.AltModifier ), + '\033\x64': ( TTkK.Key_D , TTkK.AltModifier ), + '\033\x65': ( TTkK.Key_E , TTkK.AltModifier ), + '\033\x66': ( TTkK.Key_F , TTkK.AltModifier ), + '\033\x67': ( TTkK.Key_G , TTkK.AltModifier ), + '\033\x68': ( TTkK.Key_H , TTkK.AltModifier ), + '\033\x69': ( TTkK.Key_I , TTkK.AltModifier ), + '\033\x6a': ( TTkK.Key_J , TTkK.AltModifier ), + '\033\x6b': ( TTkK.Key_K , TTkK.AltModifier ), + '\033\x6c': ( TTkK.Key_L , TTkK.AltModifier ), + '\033\x6d': ( TTkK.Key_M , TTkK.AltModifier ), + '\033\x6e': ( TTkK.Key_N , TTkK.AltModifier ), + '\033\x6f': ( TTkK.Key_O , TTkK.AltModifier ), + '\033\x70': ( TTkK.Key_P , TTkK.AltModifier ), + '\033\x71': ( TTkK.Key_Q , TTkK.AltModifier ), + '\033\x72': ( TTkK.Key_R , TTkK.AltModifier ), + '\033\x73': ( TTkK.Key_S , TTkK.AltModifier ), + '\033\x74': ( TTkK.Key_T , TTkK.AltModifier ), + '\033\x75': ( TTkK.Key_U , TTkK.AltModifier ), + '\033\x76': ( TTkK.Key_V , TTkK.AltModifier ), + '\033\x77': ( TTkK.Key_W , TTkK.AltModifier ), + '\033\x78': ( TTkK.Key_X , TTkK.AltModifier ), + '\033\x79': ( TTkK.Key_Y , TTkK.AltModifier ), + '\033\x7a': ( TTkK.Key_Z , TTkK.AltModifier ), + + '\033\x41': ( TTkK.Key_A , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x42': ( TTkK.Key_B , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x43': ( TTkK.Key_C , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x44': ( TTkK.Key_D , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x45': ( TTkK.Key_E , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x46': ( TTkK.Key_F , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x47': ( TTkK.Key_G , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x48': ( TTkK.Key_H , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x49': ( TTkK.Key_I , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x4a': ( TTkK.Key_J , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x4b': ( TTkK.Key_K , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x4c': ( TTkK.Key_L , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x4d': ( TTkK.Key_M , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x4e': ( TTkK.Key_N , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x4f': ( TTkK.Key_O , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x50': ( TTkK.Key_P , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x51': ( TTkK.Key_Q , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x52': ( TTkK.Key_R , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x53': ( TTkK.Key_S , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x54': ( TTkK.Key_T , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x55': ( TTkK.Key_U , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x56': ( TTkK.Key_V , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x57': ( TTkK.Key_W , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x58': ( TTkK.Key_X , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x59': ( TTkK.Key_Y , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x5a': ( TTkK.Key_Z , TTkK.AltModifier | TTkK.ShiftModifier ), + + '\033\x01': ( TTkK.Key_A , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x02': ( TTkK.Key_B , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x03': ( TTkK.Key_C , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x04': ( TTkK.Key_D , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x05': ( TTkK.Key_E , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x06': ( TTkK.Key_F , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x07': ( TTkK.Key_G , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x08': ( TTkK.Key_H , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x09': ( TTkK.Key_I , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x0a': ( TTkK.Key_J , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x0b': ( TTkK.Key_K , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x0c': ( TTkK.Key_L , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x0d': ( TTkK.Key_M , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x0e': ( TTkK.Key_N , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x0f': ( TTkK.Key_O , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x10': ( TTkK.Key_P , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x11': ( TTkK.Key_Q , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x12': ( TTkK.Key_R , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x13': ( TTkK.Key_S , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x14': ( TTkK.Key_T , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x15': ( TTkK.Key_U , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x16': ( TTkK.Key_V , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x17': ( TTkK.Key_W , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x18': ( TTkK.Key_X , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x19': ( TTkK.Key_Y , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x1a': ( TTkK.Key_Z , TTkK.ControlModifier | TTkK.AltModifier ), + + # # "\033": return( ey_Tab ) , + # if True: return None + # "\033": return( ey_Backtab ) , + # "\033": return( ey_Backspace ) , + # "\033": return( ey_Return ) , + # "\033": return( ey_Enter ) , + # "\033": return( ey_Pause ) , + # "\033": return( ey_Print ) , + # "\033": return( ey_SysReq ) , + # "\033": return( ey_Clear ) , + # "\033": return( ey_Shift ) , + # "\033": return( ey_Control ) , + # "\033": return( ey_Meta ) , + # "\033": return( ey_Alt ) , + # "\033": return( ey_AltGr ) , + # "\033": return( ey_CapsLock ) , + # "\033": return( ey_NumLock ) , + # "\033": return( ey_ScrollLock ) , + # "\033": return( ey_F13 ) , + # "\033": return( ey_F14 ) , + # "\033": return( ey_F15 ) , + # "\033": return( ey_F16 ) , + # "\033": return( ey_F17 ) , + # "\033": return( ey_F18 ) , + # "\033": return( ey_F19 ) , + # "\033": return( ey_F20 ) , + # "\033": return( ey_F21 ) , + # "\033": return( ey_F22 ) , + # "\033": return( ey_F23 ) , + # "\033": return( ey_F24 ) , + # "\033": return( ey_F25 ) , + # "\033": return( ey_F26 ) , + # "\033": return( ey_F27 ) , + # "\033": return( ey_F28 ) , + # "\033": return( ey_F29 ) , + # "\033": return( ey_F30 ) , + # "\033": return( ey_F31 ) , + # "\033": return( ey_F32 ) , + # "\033": return( ey_F33 ) , + # "\033": return( ey_F34 ) , + # "\033": return( ey_F35 ) , + # "\033": return( ey_Super_L ) , + # "\033": return( ey_Super_R ) , + # "\033": return( ey_Menu ) , + # "\033": return( ey_Hyper_L ) , + # "\033": return( ey_Hyper_R ) , + # "\033": return( ey_Help ) , + # "\033": return( ey_Direction_L ) , + # "\033": return( ey_Direction_R ) , + # "\033": return( ey_Space ) , + # "\033": return( ey_Any ) , + # return TTkK.NONE + }.get(key,(None, None)) + +keyList = { + "\177" : ( TTkK.Key_Backspace , TTkK.NoModifier ) , + "\t" : ( TTkK.Key_Tab , TTkK.NoModifier ) , + "\033[Z" : ( TTkK.Key_Tab , TTkK.ShiftModifier ) , + "\n" : ( TTkK.Key_Enter , TTkK.NoModifier ) , + "\r" : ( TTkK.Key_Enter , TTkK.NoModifier ) , + "\033[A" : ( TTkK.Key_Up , TTkK.NoModifier ) , + "\033[B" : ( TTkK.Key_Down , TTkK.NoModifier ) , + "\033[C" : ( TTkK.Key_Right , TTkK.NoModifier ) , + "\033[D" : ( TTkK.Key_Left , TTkK.NoModifier ) , + + "\033[1;2A" : ( TTkK.Key_Up , TTkK.ShiftModifier ) , + "\033[1;2B" : ( TTkK.Key_Down , TTkK.ShiftModifier ) , + "\033[1;2C" : ( TTkK.Key_Right , TTkK.ShiftModifier ) , + "\033[1;2D" : ( TTkK.Key_Left , TTkK.ShiftModifier ) , + "\033[1;3A" : ( TTkK.Key_Up , TTkK.AltModifier ) , + "\033[1;3B" : ( TTkK.Key_Down , TTkK.AltModifier ) , + "\033[1;3C" : ( TTkK.Key_Right , TTkK.AltModifier ) , + "\033[1;3D" : ( TTkK.Key_Left , TTkK.AltModifier ) , + "\033[1;4A" : ( TTkK.Key_Up , TTkK.AltModifier | TTkK.ShiftModifier ) , + "\033[1;4B" : ( TTkK.Key_Down , TTkK.AltModifier | TTkK.ShiftModifier ) , + "\033[1;4C" : ( TTkK.Key_Right , TTkK.AltModifier | TTkK.ShiftModifier ) , + "\033[1;4D" : ( TTkK.Key_Left , TTkK.AltModifier | TTkK.ShiftModifier ) , + "\033[1;5A" : ( TTkK.Key_Up , TTkK.ControlModifier ) , + "\033[1;5B" : ( TTkK.Key_Down , TTkK.ControlModifier ) , + "\033[1;5C" : ( TTkK.Key_Right , TTkK.ControlModifier ) , + "\033[1;5D" : ( TTkK.Key_Left , TTkK.ControlModifier ) , + + "\033[5~" : ( TTkK.Key_PageUp , TTkK.NoModifier ) , + "\033[6~" : ( TTkK.Key_PageDown , TTkK.NoModifier ) , + "\033[5;2~" : ( TTkK.Key_PageUp , TTkK.ShiftModifier ) , + "\033[6;2~" : ( TTkK.Key_PageDown , TTkK.ShiftModifier ) , + "\033[5;3~" : ( TTkK.Key_PageUp , TTkK.AltModifier ) , + "\033[6;3~" : ( TTkK.Key_PageDown , TTkK.AltModifier ) , + "\033[5;4~" : ( TTkK.Key_PageUp , TTkK.AltModifier | TTkK.ShiftModifier ) , + "\033[6;4~" : ( TTkK.Key_PageDown , TTkK.AltModifier | TTkK.ShiftModifier ) , + "\033[5;5~" : ( TTkK.Key_PageUp , TTkK.ControlModifier ) , + "\033[6;5~" : ( TTkK.Key_PageDown , TTkK.ControlModifier ) , + "\033[5;7~" : ( TTkK.Key_PageUp , TTkK.AltModifier | TTkK.ControlModifier ) , + "\033[6;7~" : ( TTkK.Key_PageDown , TTkK.AltModifier | TTkK.ControlModifier ) , + + # Xterm + "\033[F" : ( TTkK.Key_End , TTkK.NoModifier ) , + "\033[H" : ( TTkK.Key_Home , TTkK.NoModifier ) , + # Terminator + tmux + "\033[4~" : ( TTkK.Key_End , TTkK.NoModifier ) , + "\033[1~" : ( TTkK.Key_Home , TTkK.NoModifier ) , + "\033[2~" : ( TTkK.Key_Insert , TTkK.NoModifier ) , + "\033[3~" : ( TTkK.Key_Delete , TTkK.NoModifier ) , + + "\033[1;2F" : ( TTkK.Key_End , TTkK.ShiftModifier ) , + "\033[1;2H" : ( TTkK.Key_Home , TTkK.ShiftModifier ) , + "\033[2;2~" : ( TTkK.Key_Insert , TTkK.ShiftModifier ) , + "\033[3;2~" : ( TTkK.Key_Delete , TTkK.ShiftModifier ) , + + "\033[1;3F" : ( TTkK.Key_End , TTkK.AltModifier ) , + "\033[1;3H" : ( TTkK.Key_Home , TTkK.AltModifier ) , + "\033[2;3~" : ( TTkK.Key_Insert , TTkK.AltModifier ) , + "\033[3;3~" : ( TTkK.Key_Delete , TTkK.AltModifier ) , + + "\033[1;4F" : ( TTkK.Key_End , TTkK.ShiftModifier | TTkK.AltModifier ) , + "\033[1;4H" : ( TTkK.Key_Home , TTkK.ShiftModifier | TTkK.AltModifier ) , + "\033[2;4~" : ( TTkK.Key_Insert , TTkK.ShiftModifier | TTkK.AltModifier ) , + "\033[3;4~" : ( TTkK.Key_Delete , TTkK.ShiftModifier | TTkK.AltModifier ) , + + "\033[1;5F" : ( TTkK.Key_End , TTkK.ControlModifier ) , + "\033[1;5H" : ( TTkK.Key_Home , TTkK.ControlModifier ) , + "\033[2;5~" : ( TTkK.Key_Insert , TTkK.ControlModifier ) , + "\033[3;5~" : ( TTkK.Key_Delete , TTkK.ControlModifier ) , + + "\033[1;6F" : ( TTkK.Key_End , TTkK.ShiftModifier | TTkK.ControlModifier) , + "\033[1;6H" : ( TTkK.Key_Home , TTkK.ShiftModifier | TTkK.ControlModifier) , + "\033[2;6~" : ( TTkK.Key_Insert , TTkK.ShiftModifier | TTkK.ControlModifier) , + "\033[3;6~" : ( TTkK.Key_Delete , TTkK.ShiftModifier | TTkK.ControlModifier) , + + "\033[1;7F" : ( TTkK.Key_End , TTkK.AltModifier | TTkK.ControlModifier) , + "\033[1;7H" : ( TTkK.Key_Home , TTkK.AltModifier | TTkK.ControlModifier) , + "\033[2;7~" : ( TTkK.Key_Insert , TTkK.AltModifier | TTkK.ControlModifier) , + "\033[3;7~" : ( TTkK.Key_Delete , TTkK.AltModifier | TTkK.ControlModifier) , + + "\033[1;8F" : ( TTkK.Key_End , TTkK.ShiftModifier | TTkK.AltModifier | TTkK.ControlModifier) , + "\033[1;8H" : ( TTkK.Key_Home , TTkK.ShiftModifier | TTkK.AltModifier | TTkK.ControlModifier) , + "\033[2;8~" : ( TTkK.Key_Insert , TTkK.ShiftModifier | TTkK.AltModifier | TTkK.ControlModifier) , + "\033[3;8~" : ( TTkK.Key_Delete , TTkK.ShiftModifier | TTkK.AltModifier | TTkK.ControlModifier) , + + "\033" : ( TTkK.Key_Escape , TTkK.NoModifier ) , + # Function Key + "\033OP" : ( TTkK.Key_F1 , TTkK.NoModifier ) , + "\033OQ" : ( TTkK.Key_F2 , TTkK.NoModifier ) , + "\033OR" : ( TTkK.Key_F3 , TTkK.NoModifier ) , + "\033OS" : ( TTkK.Key_F4 , TTkK.NoModifier ) , + "\033[15~" : ( TTkK.Key_F5 , TTkK.NoModifier ) , + "\033[17~" : ( TTkK.Key_F6 , TTkK.NoModifier ) , + "\033[18~" : ( TTkK.Key_F7 , TTkK.NoModifier ) , + "\033[19~" : ( TTkK.Key_F8 , TTkK.NoModifier ) , + "\033[20~" : ( TTkK.Key_F9 , TTkK.NoModifier ) , + "\033[21~" : ( TTkK.Key_F10 , TTkK.NoModifier ) , + "\033[23~" : ( TTkK.Key_F11 , TTkK.NoModifier ) , + "\033[24~" : ( TTkK.Key_F12 , TTkK.NoModifier ) , + "\033[1;2P" : ( TTkK.Key_F1 , TTkK.ShiftModifier ) , + "\033[1;2Q" : ( TTkK.Key_F2 , TTkK.ShiftModifier ) , + "\033[1;2R" : ( TTkK.Key_F3 , TTkK.ShiftModifier ) , + "\033[1;2S" : ( TTkK.Key_F4 , TTkK.ShiftModifier ) , + "\033[15;2~": ( TTkK.Key_F5 , TTkK.ShiftModifier ) , + "\033[17;2~": ( TTkK.Key_F6 , TTkK.ShiftModifier ) , + "\033[18;2~": ( TTkK.Key_F7 , TTkK.ShiftModifier ) , + "\033[19;2~": ( TTkK.Key_F8 , TTkK.ShiftModifier ) , + "\033[20;2~": ( TTkK.Key_F9 , TTkK.ShiftModifier ) , + "\033[21;2~": ( TTkK.Key_F10 , TTkK.ShiftModifier ) , + "\033[23;2~": ( TTkK.Key_F11 , TTkK.ShiftModifier ) , + "\033[24;2~": ( TTkK.Key_F12 , TTkK.ShiftModifier ) , + "\033[1;5P" : ( TTkK.Key_F1 , TTkK.ControlModifier ) , + "\033[1;5Q" : ( TTkK.Key_F2 , TTkK.ControlModifier ) , + "\033[1;5R" : ( TTkK.Key_F3 , TTkK.ControlModifier ) , + "\033[1;5S" : ( TTkK.Key_F4 , TTkK.ControlModifier ) , + "\033[15;5~": ( TTkK.Key_F5 , TTkK.ControlModifier ) , + "\033[17;5~": ( TTkK.Key_F6 , TTkK.ControlModifier ) , + "\033[18;5~": ( TTkK.Key_F7 , TTkK.ControlModifier ) , + "\033[19;5~": ( TTkK.Key_F8 , TTkK.ControlModifier ) , + "\033[20;5~": ( TTkK.Key_F9 , TTkK.ControlModifier ) , + "\033[21;5~": ( TTkK.Key_F10 , TTkK.ControlModifier ) , + "\033[23;5~": ( TTkK.Key_F11 , TTkK.ControlModifier ) , + "\033[24;5~": ( TTkK.Key_F12 , TTkK.ControlModifier ) , + # "\033[1;3P" : ( TTkK.Key_F1 , TTkK.AltModifier ) , + # "\033[1;3Q" : ( TTkK.Key_F2 , TTkK.AltModifier ) , + "\033[1;3R" : ( TTkK.Key_F3 , TTkK.AltModifier ) , + # "\033[1;3S" : ( TTkK.Key_F4 , TTkK.AltModifier ) , + # "\033[15;3~": ( TTkK.Key_F5 , TTkK.AltModifier ) , + "\033[17;3~": ( TTkK.Key_F6 , TTkK.AltModifier ) , + # "\033[18;3~": ( TTkK.Key_F7 , TTkK.AltModifier ) , + # "\033[19;3~": ( TTkK.Key_F8 , TTkK.AltModifier ) , + "\033[20;3~": ( TTkK.Key_F9 , TTkK.AltModifier ) , + # "\033[21;3~": ( TTkK.Key_F10 , TTkK.AltModifier ) , + "\033[23;3~": ( TTkK.Key_F11 , TTkK.AltModifier ) , + "\033[24;3~": ( TTkK.Key_F12 , TTkK.AltModifier ) , + + '\x01': ( TTkK.Key_A , TTkK.ControlModifier ), + '\x02': ( TTkK.Key_B , TTkK.ControlModifier ), + '\x03': ( TTkK.Key_C , TTkK.ControlModifier ), + '\x04': ( TTkK.Key_D , TTkK.ControlModifier ), + '\x05': ( TTkK.Key_E , TTkK.ControlModifier ), + '\x06': ( TTkK.Key_F , TTkK.ControlModifier ), + '\x07': ( TTkK.Key_G , TTkK.ControlModifier ), + '\x08': ( TTkK.Key_H , TTkK.ControlModifier ), + # '\x09': ( TTkK.Key_I , TTkK.ControlModifier ), # Tab = '\t' = 0x09 + '\x0a': ( TTkK.Key_J , TTkK.ControlModifier ), # Enter = '\n' = 0x0a + '\x0b': ( TTkK.Key_K , TTkK.ControlModifier ), + '\x0c': ( TTkK.Key_L , TTkK.ControlModifier ), + # '\x0d': ( TTkK.Key_M , TTkK.ControlModifier ), # Enter = '\r' = 0x0d + '\x0e': ( TTkK.Key_N , TTkK.ControlModifier ), + '\x0f': ( TTkK.Key_O , TTkK.ControlModifier ), + '\x10': ( TTkK.Key_P , TTkK.ControlModifier ), + '\x11': ( TTkK.Key_Q , TTkK.ControlModifier ), + '\x12': ( TTkK.Key_R , TTkK.ControlModifier ), + '\x13': ( TTkK.Key_S , TTkK.ControlModifier ), + '\x14': ( TTkK.Key_T , TTkK.ControlModifier ), + '\x15': ( TTkK.Key_U , TTkK.ControlModifier ), + '\x16': ( TTkK.Key_V , TTkK.ControlModifier ), + '\x17': ( TTkK.Key_W , TTkK.ControlModifier ), + '\x18': ( TTkK.Key_X , TTkK.ControlModifier ), + '\x19': ( TTkK.Key_Y , TTkK.ControlModifier ), + '\x1a': ( TTkK.Key_Z , TTkK.ControlModifier ), + + '\033\x61': ( TTkK.Key_A , TTkK.AltModifier ), + '\033\x62': ( TTkK.Key_B , TTkK.AltModifier ), + '\033\x63': ( TTkK.Key_C , TTkK.AltModifier ), + '\033\x64': ( TTkK.Key_D , TTkK.AltModifier ), + '\033\x65': ( TTkK.Key_E , TTkK.AltModifier ), + '\033\x66': ( TTkK.Key_F , TTkK.AltModifier ), + '\033\x67': ( TTkK.Key_G , TTkK.AltModifier ), + '\033\x68': ( TTkK.Key_H , TTkK.AltModifier ), + '\033\x69': ( TTkK.Key_I , TTkK.AltModifier ), + '\033\x6a': ( TTkK.Key_J , TTkK.AltModifier ), + '\033\x6b': ( TTkK.Key_K , TTkK.AltModifier ), + '\033\x6c': ( TTkK.Key_L , TTkK.AltModifier ), + '\033\x6d': ( TTkK.Key_M , TTkK.AltModifier ), + '\033\x6e': ( TTkK.Key_N , TTkK.AltModifier ), + '\033\x6f': ( TTkK.Key_O , TTkK.AltModifier ), + '\033\x70': ( TTkK.Key_P , TTkK.AltModifier ), + '\033\x71': ( TTkK.Key_Q , TTkK.AltModifier ), + '\033\x72': ( TTkK.Key_R , TTkK.AltModifier ), + '\033\x73': ( TTkK.Key_S , TTkK.AltModifier ), + '\033\x74': ( TTkK.Key_T , TTkK.AltModifier ), + '\033\x75': ( TTkK.Key_U , TTkK.AltModifier ), + '\033\x76': ( TTkK.Key_V , TTkK.AltModifier ), + '\033\x77': ( TTkK.Key_W , TTkK.AltModifier ), + '\033\x78': ( TTkK.Key_X , TTkK.AltModifier ), + '\033\x79': ( TTkK.Key_Y , TTkK.AltModifier ), + '\033\x7a': ( TTkK.Key_Z , TTkK.AltModifier ), + + '\033\x41': ( TTkK.Key_A , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x42': ( TTkK.Key_B , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x43': ( TTkK.Key_C , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x44': ( TTkK.Key_D , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x45': ( TTkK.Key_E , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x46': ( TTkK.Key_F , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x47': ( TTkK.Key_G , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x48': ( TTkK.Key_H , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x49': ( TTkK.Key_I , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x4a': ( TTkK.Key_J , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x4b': ( TTkK.Key_K , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x4c': ( TTkK.Key_L , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x4d': ( TTkK.Key_M , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x4e': ( TTkK.Key_N , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x4f': ( TTkK.Key_O , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x50': ( TTkK.Key_P , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x51': ( TTkK.Key_Q , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x52': ( TTkK.Key_R , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x53': ( TTkK.Key_S , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x54': ( TTkK.Key_T , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x55': ( TTkK.Key_U , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x56': ( TTkK.Key_V , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x57': ( TTkK.Key_W , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x58': ( TTkK.Key_X , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x59': ( TTkK.Key_Y , TTkK.AltModifier | TTkK.ShiftModifier ), + '\033\x5a': ( TTkK.Key_Z , TTkK.AltModifier | TTkK.ShiftModifier ), + + '\033\x01': ( TTkK.Key_A , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x02': ( TTkK.Key_B , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x03': ( TTkK.Key_C , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x04': ( TTkK.Key_D , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x05': ( TTkK.Key_E , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x06': ( TTkK.Key_F , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x07': ( TTkK.Key_G , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x08': ( TTkK.Key_H , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x09': ( TTkK.Key_I , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x0a': ( TTkK.Key_J , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x0b': ( TTkK.Key_K , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x0c': ( TTkK.Key_L , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x0d': ( TTkK.Key_M , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x0e': ( TTkK.Key_N , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x0f': ( TTkK.Key_O , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x10': ( TTkK.Key_P , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x11': ( TTkK.Key_Q , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x12': ( TTkK.Key_R , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x13': ( TTkK.Key_S , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x14': ( TTkK.Key_T , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x15': ( TTkK.Key_U , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x16': ( TTkK.Key_V , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x17': ( TTkK.Key_W , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x18': ( TTkK.Key_X , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x19': ( TTkK.Key_Y , TTkK.ControlModifier | TTkK.AltModifier ), + '\033\x1a': ( TTkK.Key_Z , TTkK.ControlModifier | TTkK.AltModifier ), + + # # "\033": return( ey_Tab ) , + # if True: return None + # "\033": return( ey_Backtab ) , + # "\033": return( ey_Backspace ) , + # "\033": return( ey_Return ) , + # "\033": return( ey_Enter ) , + # "\033": return( ey_Pause ) , + # "\033": return( ey_Print ) , + # "\033": return( ey_SysReq ) , + # "\033": return( ey_Clear ) , + # "\033": return( ey_Shift ) , + # "\033": return( ey_Control ) , + # "\033": return( ey_Meta ) , + # "\033": return( ey_Alt ) , + # "\033": return( ey_AltGr ) , + # "\033": return( ey_CapsLock ) , + # "\033": return( ey_NumLock ) , + # "\033": return( ey_ScrollLock ) , + # "\033": return( ey_F13 ) , + # "\033": return( ey_F14 ) , + # "\033": return( ey_F15 ) , + # "\033": return( ey_F16 ) , + # "\033": return( ey_F17 ) , + # "\033": return( ey_F18 ) , + # "\033": return( ey_F19 ) , + # "\033": return( ey_F20 ) , + # "\033": return( ey_F21 ) , + # "\033": return( ey_F22 ) , + # "\033": return( ey_F23 ) , + # "\033": return( ey_F24 ) , + # "\033": return( ey_F25 ) , + # "\033": return( ey_F26 ) , + # "\033": return( ey_F27 ) , + # "\033": return( ey_F28 ) , + # "\033": return( ey_F29 ) , + # "\033": return( ey_F30 ) , + # "\033": return( ey_F31 ) , + # "\033": return( ey_F32 ) , + # "\033": return( ey_F33 ) , + # "\033": return( ey_F34 ) , + # "\033": return( ey_F35 ) , + # "\033": return( ey_Super_L ) , + # "\033": return( ey_Super_R ) , + # "\033": return( ey_Menu ) , + # "\033": return( ey_Hyper_L ) , + # "\033": return( ey_Hyper_R ) , + # "\033": return( ey_Help ) , + # "\033": return( ey_Direction_L ) , + # "\033": return( ey_Direction_R ) , + # "\033": return( ey_Space ) , + # "\033": return( ey_Any ) , + # return TTkK.NONE + } + +def _translate_key2(key): + return keyList.get(key,(None, None)) + + +def test1(_ti=testInput): + ret = "" + for x in _ti: + ret += str(_translate_key1(x)) + return ret + +def test2(_ti=testInput): + ret = "" + for x in _ti: + ret += str(_translate_key2(x)) + return ret + +loop = 1000 + +a={} + +iii = 1 +while (testName := f'test{iii}') and (testName in globals()): + result = timeit.timeit(f'{testName}(*a)', globals=globals(), number=loop) + # print(f"test{iii}) fps {loop / result :.3f} - s {result / loop:.10f} - {result / loop} {globals()[testName](*a)}") + print(f"test{iii:02}) | {result / loop:.10f} sec. | {loop / result : 15.3f} Fps ╞╡-> {globals()[testName](*a)}") + iii+=1 +