diff --git a/glfw.py b/glfw.py index 47e4eba2e..90999e563 100644 --- a/glfw.py +++ b/glfw.py @@ -70,6 +70,7 @@ def glfwGetVersion(): _glfw.glfwGetVersion(byref(major), byref(minor), byref(rev)) return major.value, minor.value, rev.value + version = glfwGetVersion() if version[0] != 3: @@ -83,259 +84,6 @@ GLFW_VERSION_MINOR = version[1] GLFW_VERSION_REVISION = version[2] __version__ = GLFW_VERSION_MAJOR, GLFW_VERSION_MINOR, GLFW_VERSION_REVISION -# --- Input handling definitions ---------------------------------------------- -GLFW_RELEASE = 0 -GLFW_PRESS = 1 -GLFW_REPEAT = 2 - -# --- Keys -------------------------------------------------------------------- - -# --- The unknown key --------------------------------------------------------- -GLFW_KEY_UNKNOWN = -1 - -# --- Printable keys ---------------------------------------------------------- -GLFW_KEY_SPACE = 32 -GLFW_KEY_APOSTROPHE = 39 # '' -GLFW_KEY_COMMA = 44 # , -GLFW_KEY_MINUS = 45 # - -GLFW_KEY_PERIOD = 46 # . -GLFW_KEY_SLASH = 47 # / -GLFW_KEY_0 = 48 -GLFW_KEY_1 = 49 -GLFW_KEY_2 = 50 -GLFW_KEY_3 = 51 -GLFW_KEY_4 = 52 -GLFW_KEY_5 = 53 -GLFW_KEY_6 = 54 -GLFW_KEY_7 = 55 -GLFW_KEY_8 = 56 -GLFW_KEY_9 = 57 -GLFW_KEY_SEMICOLON = 59 # ; -GLFW_KEY_EQUAL = 61 # = -GLFW_KEY_A = 65 -GLFW_KEY_B = 66 -GLFW_KEY_C = 67 -GLFW_KEY_D = 68 -GLFW_KEY_E = 69 -GLFW_KEY_F = 70 -GLFW_KEY_G = 71 -GLFW_KEY_H = 72 -GLFW_KEY_I = 73 -GLFW_KEY_J = 74 -GLFW_KEY_K = 75 -GLFW_KEY_L = 76 -GLFW_KEY_M = 77 -GLFW_KEY_N = 78 -GLFW_KEY_O = 79 -GLFW_KEY_P = 80 -GLFW_KEY_Q = 81 -GLFW_KEY_R = 82 -GLFW_KEY_S = 83 -GLFW_KEY_T = 84 -GLFW_KEY_U = 85 -GLFW_KEY_V = 86 -GLFW_KEY_W = 87 -GLFW_KEY_X = 88 -GLFW_KEY_Y = 89 -GLFW_KEY_Z = 90 -GLFW_KEY_LEFT_BRACKET = 91 # [ -GLFW_KEY_BACKSLASH = 92 # \ -GLFW_KEY_RIGHT_BRACKET = 93 # ] -GLFW_KEY_GRAVE_ACCENT = 96 # ` -GLFW_KEY_WORLD_1 = 161 # non-US #1 -GLFW_KEY_WORLD_2 = 162 # non-US #2 - -# --- Function keys ----------------------------------------------------------- -GLFW_KEY_ESCAPE = 256 -GLFW_KEY_ENTER = 257 -GLFW_KEY_TAB = 258 -GLFW_KEY_BACKSPACE = 259 -GLFW_KEY_INSERT = 260 -GLFW_KEY_DELETE = 261 -GLFW_KEY_RIGHT = 262 -GLFW_KEY_LEFT = 263 -GLFW_KEY_DOWN = 264 -GLFW_KEY_UP = 265 -GLFW_KEY_PAGE_UP = 266 -GLFW_KEY_PAGE_DOWN = 267 -GLFW_KEY_HOME = 268 -GLFW_KEY_END = 269 -GLFW_KEY_CAPS_LOCK = 280 -GLFW_KEY_SCROLL_LOCK = 281 -GLFW_KEY_NUM_LOCK = 282 -GLFW_KEY_PRINT_SCREEN = 283 -GLFW_KEY_PAUSE = 284 -GLFW_KEY_F1 = 290 -GLFW_KEY_F2 = 291 -GLFW_KEY_F3 = 292 -GLFW_KEY_F4 = 293 -GLFW_KEY_F5 = 294 -GLFW_KEY_F6 = 295 -GLFW_KEY_F7 = 296 -GLFW_KEY_F8 = 297 -GLFW_KEY_F9 = 298 -GLFW_KEY_F10 = 299 -GLFW_KEY_F11 = 300 -GLFW_KEY_F12 = 301 -GLFW_KEY_F13 = 302 -GLFW_KEY_F14 = 303 -GLFW_KEY_F15 = 304 -GLFW_KEY_F16 = 305 -GLFW_KEY_F17 = 306 -GLFW_KEY_F18 = 307 -GLFW_KEY_F19 = 308 -GLFW_KEY_F20 = 309 -GLFW_KEY_F21 = 310 -GLFW_KEY_F22 = 311 -GLFW_KEY_F23 = 312 -GLFW_KEY_F24 = 313 -GLFW_KEY_F25 = 314 -GLFW_KEY_KP_0 = 320 -GLFW_KEY_KP_1 = 321 -GLFW_KEY_KP_2 = 322 -GLFW_KEY_KP_3 = 323 -GLFW_KEY_KP_4 = 324 -GLFW_KEY_KP_5 = 325 -GLFW_KEY_KP_6 = 326 -GLFW_KEY_KP_7 = 327 -GLFW_KEY_KP_8 = 328 -GLFW_KEY_KP_9 = 329 -GLFW_KEY_KP_DECIMAL = 330 -GLFW_KEY_KP_DIVIDE = 331 -GLFW_KEY_KP_MULTIPLY = 332 -GLFW_KEY_KP_SUBTRACT = 333 -GLFW_KEY_KP_ADD = 334 -GLFW_KEY_KP_ENTER = 335 -GLFW_KEY_KP_EQUAL = 336 -GLFW_KEY_LEFT_SHIFT = 340 -GLFW_KEY_LEFT_CONTROL = 341 -GLFW_KEY_LEFT_ALT = 342 -GLFW_KEY_LEFT_SUPER = 343 -GLFW_KEY_RIGHT_SHIFT = 344 -GLFW_KEY_RIGHT_CONTROL = 345 -GLFW_KEY_RIGHT_ALT = 346 -GLFW_KEY_RIGHT_SUPER = 347 -GLFW_KEY_MENU = 348 -GLFW_KEY_LAST = GLFW_KEY_MENU - - -# --- Modifiers --------------------------------------------------------------- -GLFW_MOD_SHIFT = 0x0001 -GLFW_MOD_CONTROL = 0x0002 -GLFW_MOD_ALT = 0x0004 -GLFW_MOD_SUPER = 0x0008 - -# --- Mouse ------------------------------------------------------------------- -GLFW_MOUSE_BUTTON_1 = 0 -GLFW_MOUSE_BUTTON_2 = 1 -GLFW_MOUSE_BUTTON_3 = 2 -GLFW_MOUSE_BUTTON_4 = 3 -GLFW_MOUSE_BUTTON_5 = 4 -GLFW_MOUSE_BUTTON_6 = 5 -GLFW_MOUSE_BUTTON_7 = 6 -GLFW_MOUSE_BUTTON_8 = 7 -GLFW_MOUSE_BUTTON_LAST = GLFW_MOUSE_BUTTON_8 -GLFW_MOUSE_BUTTON_LEFT = GLFW_MOUSE_BUTTON_1 -GLFW_MOUSE_BUTTON_RIGHT = GLFW_MOUSE_BUTTON_2 -GLFW_MOUSE_BUTTON_MIDDLE = GLFW_MOUSE_BUTTON_3 - - -# --- Joystick ---------------------------------------------------------------- -GLFW_JOYSTICK_1 = 0 -GLFW_JOYSTICK_2 = 1 -GLFW_JOYSTICK_3 = 2 -GLFW_JOYSTICK_4 = 3 -GLFW_JOYSTICK_5 = 4 -GLFW_JOYSTICK_6 = 5 -GLFW_JOYSTICK_7 = 6 -GLFW_JOYSTICK_8 = 7 -GLFW_JOYSTICK_9 = 8 -GLFW_JOYSTICK_10 = 9 -GLFW_JOYSTICK_11 = 10 -GLFW_JOYSTICK_12 = 11 -GLFW_JOYSTICK_13 = 12 -GLFW_JOYSTICK_14 = 13 -GLFW_JOYSTICK_15 = 14 -GLFW_JOYSTICK_16 = 15 -GLFW_JOYSTICK_LAST = GLFW_JOYSTICK_16 - - -# --- Error codes ------------------------------------------------------------- -GLFW_NOT_INITIALIZED = 0x00010001 -GLFW_NO_CURRENT_CONTEXT = 0x00010002 -GLFW_INVALID_ENUM = 0x00010003 -GLFW_INVALID_VALUE = 0x00010004 -GLFW_OUT_OF_MEMORY = 0x00010005 -GLFW_API_UNAVAILABLE = 0x00010006 -GLFW_VERSION_UNAVAILABLE = 0x00010007 -GLFW_PLATFORM_ERROR = 0x00010008 -GLFW_FORMAT_UNAVAILABLE = 0x00010009 - -# --- -GLFW_FOCUSED = 0x00020001 -GLFW_ICONIFIED = 0x00020002 -GLFW_RESIZABLE = 0x00020003 -GLFW_VISIBLE = 0x00020004 -GLFW_DECORATED = 0x00020005 -GLFW_AUTO_ICONIFY = 0x00020006 -GLFW_FLOATING = 0x00020007 - -# --- -GLFW_RED_BITS = 0x00021001 -GLFW_GREEN_BITS = 0x00021002 -GLFW_BLUE_BITS = 0x00021003 -GLFW_ALPHA_BITS = 0x00021004 -GLFW_DEPTH_BITS = 0x00021005 -GLFW_STENCIL_BITS = 0x00021006 -GLFW_ACCUM_RED_BITS = 0x00021007 -GLFW_ACCUM_GREEN_BITS = 0x00021008 -GLFW_ACCUM_BLUE_BITS = 0x00021009 -GLFW_ACCUM_ALPHA_BITS = 0x0002100A -GLFW_AUX_BUFFERS = 0x0002100B -GLFW_STEREO = 0x0002100C -GLFW_SAMPLES = 0x0002100D -GLFW_SRGB_CAPABLE = 0x0002100E -GLFW_REFRESH_RATE = 0x0002100F -GLFW_DOUBLEBUFFER = 0x00021010 - -# --- -GLFW_CLIENT_API = 0x00022001 -GLFW_CONTEXT_VERSION_MAJOR = 0x00022002 -GLFW_CONTEXT_VERSION_MINOR = 0x00022003 -GLFW_CONTEXT_REVISION = 0x00022004 -GLFW_CONTEXT_ROBUSTNESS = 0x00022005 -GLFW_OPENGL_FORWARD_COMPAT = 0x00022006 -GLFW_OPENGL_DEBUG_CONTEXT = 0x00022007 -GLFW_OPENGL_PROFILE = 0x00022008 - -# --- -GLFW_OPENGL_API = 0x00030001 -GLFW_OPENGL_ES_API = 0x00030002 - -# --- -GLFW_NO_ROBUSTNESS = 0 -GLFW_NO_RESET_NOTIFICATION = 0x00031001 -GLFW_LOSE_CONTEXT_ON_RESET = 0x00031002 - -# --- -GLFW_OPENGL_ANY_PROFILE = 0 -GLFW_OPENGL_CORE_PROFILE = 0x00032001 -GLFW_OPENGL_COMPAT_PROFILE = 0x00032002 - -# --- -GLFW_CURSOR = 0x00033001 -GLFW_STICKY_KEYS = 0x00033002 -GLFW_STICKY_MOUSE_BUTTONS = 0x00033003 - -# --- -GLFW_CURSOR_NORMAL = 0x00034001 -GLFW_CURSOR_HIDDEN = 0x00034002 -GLFW_CURSOR_DISABLED = 0x00034003 - -# --- -GLFW_CONNECTED = 0x00040001 -GLFW_DISCONNECTED = 0x00040002 - # --- Structures -------------------------------------------------------------- class GLFWvidmode(Structure): @@ -361,6 +109,7 @@ class GLFWwindow(Structure): class GLFWmonitor(Structure): pass + # --- Callbacks --------------------------------------------------------------- errorfun = CFUNCTYPE(None, c_int, c_char_p) windowposfun = CFUNCTYPE(None, POINTER(GLFWwindow), c_int, c_int) diff --git a/glfw_constants.py b/glfw_constants.py new file mode 100644 index 000000000..793f0c4a9 --- /dev/null +++ b/glfw_constants.py @@ -0,0 +1,256 @@ +#!/usr/bin/env python +# vim:fileencoding=utf-8 +# License: GPL v3 Copyright: 2016, Kovid Goyal + +# --- Input handling definitions ---------------------------------------------- +GLFW_RELEASE = 0 +GLFW_PRESS = 1 +GLFW_REPEAT = 2 + +# --- Keys -------------------------------------------------------------------- + +# --- The unknown key --------------------------------------------------------- +GLFW_KEY_UNKNOWN = -1 + +# --- Printable keys ---------------------------------------------------------- +GLFW_KEY_SPACE = 32 +GLFW_KEY_APOSTROPHE = 39 # '' +GLFW_KEY_COMMA = 44 # , +GLFW_KEY_MINUS = 45 # - +GLFW_KEY_PERIOD = 46 # . +GLFW_KEY_SLASH = 47 # / +GLFW_KEY_0 = 48 +GLFW_KEY_1 = 49 +GLFW_KEY_2 = 50 +GLFW_KEY_3 = 51 +GLFW_KEY_4 = 52 +GLFW_KEY_5 = 53 +GLFW_KEY_6 = 54 +GLFW_KEY_7 = 55 +GLFW_KEY_8 = 56 +GLFW_KEY_9 = 57 +GLFW_KEY_SEMICOLON = 59 # ; +GLFW_KEY_EQUAL = 61 # = +GLFW_KEY_A = 65 +GLFW_KEY_B = 66 +GLFW_KEY_C = 67 +GLFW_KEY_D = 68 +GLFW_KEY_E = 69 +GLFW_KEY_F = 70 +GLFW_KEY_G = 71 +GLFW_KEY_H = 72 +GLFW_KEY_I = 73 +GLFW_KEY_J = 74 +GLFW_KEY_K = 75 +GLFW_KEY_L = 76 +GLFW_KEY_M = 77 +GLFW_KEY_N = 78 +GLFW_KEY_O = 79 +GLFW_KEY_P = 80 +GLFW_KEY_Q = 81 +GLFW_KEY_R = 82 +GLFW_KEY_S = 83 +GLFW_KEY_T = 84 +GLFW_KEY_U = 85 +GLFW_KEY_V = 86 +GLFW_KEY_W = 87 +GLFW_KEY_X = 88 +GLFW_KEY_Y = 89 +GLFW_KEY_Z = 90 +GLFW_KEY_LEFT_BRACKET = 91 # [ +GLFW_KEY_BACKSLASH = 92 # \ +GLFW_KEY_RIGHT_BRACKET = 93 # ] +GLFW_KEY_GRAVE_ACCENT = 96 # ` +GLFW_KEY_WORLD_1 = 161 # non-US #1 +GLFW_KEY_WORLD_2 = 162 # non-US #2 + +# --- Function keys ----------------------------------------------------------- +GLFW_KEY_ESCAPE = 256 +GLFW_KEY_ENTER = 257 +GLFW_KEY_TAB = 258 +GLFW_KEY_BACKSPACE = 259 +GLFW_KEY_INSERT = 260 +GLFW_KEY_DELETE = 261 +GLFW_KEY_RIGHT = 262 +GLFW_KEY_LEFT = 263 +GLFW_KEY_DOWN = 264 +GLFW_KEY_UP = 265 +GLFW_KEY_PAGE_UP = 266 +GLFW_KEY_PAGE_DOWN = 267 +GLFW_KEY_HOME = 268 +GLFW_KEY_END = 269 +GLFW_KEY_CAPS_LOCK = 280 +GLFW_KEY_SCROLL_LOCK = 281 +GLFW_KEY_NUM_LOCK = 282 +GLFW_KEY_PRINT_SCREEN = 283 +GLFW_KEY_PAUSE = 284 +GLFW_KEY_F1 = 290 +GLFW_KEY_F2 = 291 +GLFW_KEY_F3 = 292 +GLFW_KEY_F4 = 293 +GLFW_KEY_F5 = 294 +GLFW_KEY_F6 = 295 +GLFW_KEY_F7 = 296 +GLFW_KEY_F8 = 297 +GLFW_KEY_F9 = 298 +GLFW_KEY_F10 = 299 +GLFW_KEY_F11 = 300 +GLFW_KEY_F12 = 301 +GLFW_KEY_F13 = 302 +GLFW_KEY_F14 = 303 +GLFW_KEY_F15 = 304 +GLFW_KEY_F16 = 305 +GLFW_KEY_F17 = 306 +GLFW_KEY_F18 = 307 +GLFW_KEY_F19 = 308 +GLFW_KEY_F20 = 309 +GLFW_KEY_F21 = 310 +GLFW_KEY_F22 = 311 +GLFW_KEY_F23 = 312 +GLFW_KEY_F24 = 313 +GLFW_KEY_F25 = 314 +GLFW_KEY_KP_0 = 320 +GLFW_KEY_KP_1 = 321 +GLFW_KEY_KP_2 = 322 +GLFW_KEY_KP_3 = 323 +GLFW_KEY_KP_4 = 324 +GLFW_KEY_KP_5 = 325 +GLFW_KEY_KP_6 = 326 +GLFW_KEY_KP_7 = 327 +GLFW_KEY_KP_8 = 328 +GLFW_KEY_KP_9 = 329 +GLFW_KEY_KP_DECIMAL = 330 +GLFW_KEY_KP_DIVIDE = 331 +GLFW_KEY_KP_MULTIPLY = 332 +GLFW_KEY_KP_SUBTRACT = 333 +GLFW_KEY_KP_ADD = 334 +GLFW_KEY_KP_ENTER = 335 +GLFW_KEY_KP_EQUAL = 336 +GLFW_KEY_LEFT_SHIFT = 340 +GLFW_KEY_LEFT_CONTROL = 341 +GLFW_KEY_LEFT_ALT = 342 +GLFW_KEY_LEFT_SUPER = 343 +GLFW_KEY_RIGHT_SHIFT = 344 +GLFW_KEY_RIGHT_CONTROL = 345 +GLFW_KEY_RIGHT_ALT = 346 +GLFW_KEY_RIGHT_SUPER = 347 +GLFW_KEY_MENU = 348 +GLFW_KEY_LAST = GLFW_KEY_MENU + + +# --- Modifiers --------------------------------------------------------------- +GLFW_MOD_SHIFT = 0x0001 +GLFW_MOD_CONTROL = 0x0002 +GLFW_MOD_ALT = 0x0004 +GLFW_MOD_SUPER = 0x0008 + +# --- Mouse ------------------------------------------------------------------- +GLFW_MOUSE_BUTTON_1 = 0 +GLFW_MOUSE_BUTTON_2 = 1 +GLFW_MOUSE_BUTTON_3 = 2 +GLFW_MOUSE_BUTTON_4 = 3 +GLFW_MOUSE_BUTTON_5 = 4 +GLFW_MOUSE_BUTTON_6 = 5 +GLFW_MOUSE_BUTTON_7 = 6 +GLFW_MOUSE_BUTTON_8 = 7 +GLFW_MOUSE_BUTTON_LAST = GLFW_MOUSE_BUTTON_8 +GLFW_MOUSE_BUTTON_LEFT = GLFW_MOUSE_BUTTON_1 +GLFW_MOUSE_BUTTON_RIGHT = GLFW_MOUSE_BUTTON_2 +GLFW_MOUSE_BUTTON_MIDDLE = GLFW_MOUSE_BUTTON_3 + + +# --- Joystick ---------------------------------------------------------------- +GLFW_JOYSTICK_1 = 0 +GLFW_JOYSTICK_2 = 1 +GLFW_JOYSTICK_3 = 2 +GLFW_JOYSTICK_4 = 3 +GLFW_JOYSTICK_5 = 4 +GLFW_JOYSTICK_6 = 5 +GLFW_JOYSTICK_7 = 6 +GLFW_JOYSTICK_8 = 7 +GLFW_JOYSTICK_9 = 8 +GLFW_JOYSTICK_10 = 9 +GLFW_JOYSTICK_11 = 10 +GLFW_JOYSTICK_12 = 11 +GLFW_JOYSTICK_13 = 12 +GLFW_JOYSTICK_14 = 13 +GLFW_JOYSTICK_15 = 14 +GLFW_JOYSTICK_16 = 15 +GLFW_JOYSTICK_LAST = GLFW_JOYSTICK_16 + + +# --- Error codes ------------------------------------------------------------- +GLFW_NOT_INITIALIZED = 0x00010001 +GLFW_NO_CURRENT_CONTEXT = 0x00010002 +GLFW_INVALID_ENUM = 0x00010003 +GLFW_INVALID_VALUE = 0x00010004 +GLFW_OUT_OF_MEMORY = 0x00010005 +GLFW_API_UNAVAILABLE = 0x00010006 +GLFW_VERSION_UNAVAILABLE = 0x00010007 +GLFW_PLATFORM_ERROR = 0x00010008 +GLFW_FORMAT_UNAVAILABLE = 0x00010009 + +# --- +GLFW_FOCUSED = 0x00020001 +GLFW_ICONIFIED = 0x00020002 +GLFW_RESIZABLE = 0x00020003 +GLFW_VISIBLE = 0x00020004 +GLFW_DECORATED = 0x00020005 +GLFW_AUTO_ICONIFY = 0x00020006 +GLFW_FLOATING = 0x00020007 + +# --- +GLFW_RED_BITS = 0x00021001 +GLFW_GREEN_BITS = 0x00021002 +GLFW_BLUE_BITS = 0x00021003 +GLFW_ALPHA_BITS = 0x00021004 +GLFW_DEPTH_BITS = 0x00021005 +GLFW_STENCIL_BITS = 0x00021006 +GLFW_ACCUM_RED_BITS = 0x00021007 +GLFW_ACCUM_GREEN_BITS = 0x00021008 +GLFW_ACCUM_BLUE_BITS = 0x00021009 +GLFW_ACCUM_ALPHA_BITS = 0x0002100A +GLFW_AUX_BUFFERS = 0x0002100B +GLFW_STEREO = 0x0002100C +GLFW_SAMPLES = 0x0002100D +GLFW_SRGB_CAPABLE = 0x0002100E +GLFW_REFRESH_RATE = 0x0002100F +GLFW_DOUBLEBUFFER = 0x00021010 + +# --- +GLFW_CLIENT_API = 0x00022001 +GLFW_CONTEXT_VERSION_MAJOR = 0x00022002 +GLFW_CONTEXT_VERSION_MINOR = 0x00022003 +GLFW_CONTEXT_REVISION = 0x00022004 +GLFW_CONTEXT_ROBUSTNESS = 0x00022005 +GLFW_OPENGL_FORWARD_COMPAT = 0x00022006 +GLFW_OPENGL_DEBUG_CONTEXT = 0x00022007 +GLFW_OPENGL_PROFILE = 0x00022008 + +# --- +GLFW_OPENGL_API = 0x00030001 +GLFW_OPENGL_ES_API = 0x00030002 + +# --- +GLFW_NO_ROBUSTNESS = 0 +GLFW_NO_RESET_NOTIFICATION = 0x00031001 +GLFW_LOSE_CONTEXT_ON_RESET = 0x00031002 + +# --- +GLFW_OPENGL_ANY_PROFILE = 0 +GLFW_OPENGL_CORE_PROFILE = 0x00032001 +GLFW_OPENGL_COMPAT_PROFILE = 0x00032002 + +# --- +GLFW_CURSOR = 0x00033001 +GLFW_STICKY_KEYS = 0x00033002 +GLFW_STICKY_MOUSE_BUTTONS = 0x00033003 + +# --- +GLFW_CURSOR_NORMAL = 0x00034001 +GLFW_CURSOR_HIDDEN = 0x00034002 +GLFW_CURSOR_DISABLED = 0x00034003 + +# --- +GLFW_CONNECTED = 0x00040001 +GLFW_DISCONNECTED = 0x00040002 diff --git a/kitty/boss.py b/kitty/boss.py index 75f525944..5fb8ac41f 100644 --- a/kitty/boss.py +++ b/kitty/boss.py @@ -15,6 +15,7 @@ from threading import Thread, current_thread from queue import Queue, Empty import glfw +import glfw_constants from .constants import appname from .char_grid import CharGrid @@ -107,8 +108,8 @@ class Boss(Thread): self.write_to_child(b'\x1b[O') def on_mouse_button(self, window, button, action, mods): - if action == glfw.GLFW_RELEASE: - if button == glfw.GLFW_MOUSE_BUTTON_MIDDLE: + if action == glfw_constants.GLFW_RELEASE: + if button == glfw_constants.GLFW_MOUSE_BUTTON_MIDDLE: # glfw has no way to get the primary selection # text = glfw.glfwGetClipboardString(window) text = subprocess.check_output(['xsel']) @@ -118,7 +119,7 @@ class Boss(Thread): self.write_to_child(text) def on_key(self, window, key, scancode, action, mods): - if action == glfw.GLFW_PRESS or action == glfw.GLFW_REPEAT: + if action == glfw_constants.GLFW_PRESS or action == glfw_constants.GLFW_REPEAT: data = interpret_key_event(key, scancode, mods) if data: self.write_to_child(data) diff --git a/kitty/config.py b/kitty/config.py index d7e1c04be..9c7842043 100644 --- a/kitty/config.py +++ b/kitty/config.py @@ -7,7 +7,7 @@ import sys from collections import namedtuple from itertools import repeat -import glfw +import glfw_constants as glfw from .fast_data_types import CURSOR_BLOCK, CURSOR_BEAM, CURSOR_UNDERLINE diff --git a/kitty/keys.py b/kitty/keys.py index 61916a619..96ba0c0a4 100644 --- a/kitty/keys.py +++ b/kitty/keys.py @@ -2,62 +2,62 @@ # vim:fileencoding=utf-8 # License: GPL v3 Copyright: 2016, Kovid Goyal -import glfw +import glfw_constants as defines key_map = { - glfw.GLFW_KEY_UP: b'OA', - glfw.GLFW_KEY_DOWN: b'OB', - glfw.GLFW_KEY_LEFT: b'OD', - glfw.GLFW_KEY_RIGHT: b'OC', - glfw.GLFW_KEY_HOME: b'OH', - glfw.GLFW_KEY_END: b'OF', - glfw.GLFW_KEY_ESCAPE: b'', - glfw.GLFW_KEY_INSERT: b'[2~', - glfw.GLFW_KEY_DELETE: b'[3~', - glfw.GLFW_KEY_PAGE_UP: b'[5~', - glfw.GLFW_KEY_PAGE_DOWN: b'[6~', - glfw.GLFW_KEY_F1: b'OP', - glfw.GLFW_KEY_F2: b'OQ', - glfw.GLFW_KEY_F3: b'OR', - glfw.GLFW_KEY_F4: b'OS', - glfw.GLFW_KEY_F5: b'[15~', - glfw.GLFW_KEY_F6: b'[17~', - glfw.GLFW_KEY_F7: b'[18~', - glfw.GLFW_KEY_F8: b'[19~', - glfw.GLFW_KEY_F9: b'[20~', - glfw.GLFW_KEY_F10: b'[21~', - glfw.GLFW_KEY_F11: b'[23~', - glfw.GLFW_KEY_F12: b'[24~', + defines.GLFW_KEY_UP: b'OA', + defines.GLFW_KEY_DOWN: b'OB', + defines.GLFW_KEY_LEFT: b'OD', + defines.GLFW_KEY_RIGHT: b'OC', + defines.GLFW_KEY_HOME: b'OH', + defines.GLFW_KEY_END: b'OF', + defines.GLFW_KEY_ESCAPE: b'', + defines.GLFW_KEY_INSERT: b'[2~', + defines.GLFW_KEY_DELETE: b'[3~', + defines.GLFW_KEY_PAGE_UP: b'[5~', + defines.GLFW_KEY_PAGE_DOWN: b'[6~', + defines.GLFW_KEY_F1: b'OP', + defines.GLFW_KEY_F2: b'OQ', + defines.GLFW_KEY_F3: b'OR', + defines.GLFW_KEY_F4: b'OS', + defines.GLFW_KEY_F5: b'[15~', + defines.GLFW_KEY_F6: b'[17~', + defines.GLFW_KEY_F7: b'[18~', + defines.GLFW_KEY_F8: b'[19~', + defines.GLFW_KEY_F9: b'[20~', + defines.GLFW_KEY_F10: b'[21~', + defines.GLFW_KEY_F11: b'[23~', + defines.GLFW_KEY_F12: b'[24~', } key_map = {k: b'\x1b' + v for k, v in key_map.items()} -key_map[glfw.GLFW_KEY_ENTER] = b'\r' -key_map[glfw.GLFW_KEY_BACKSPACE] = b'\x08' -key_map[glfw.GLFW_KEY_TAB] = b'\t' +key_map[defines.GLFW_KEY_ENTER] = b'\r' +key_map[defines.GLFW_KEY_BACKSPACE] = b'\x08' +key_map[defines.GLFW_KEY_TAB] = b'\t' -control_codes = {k: 1 + i for i, k in enumerate(range(glfw.GLFW_KEY_A, glfw.GLFW_KEY_RIGHT_BRACKET))} -alt_codes = {k: (0x1b, k) for i, k in enumerate(range(glfw.GLFW_KEY_A, glfw.GLFW_KEY_RIGHT_BRACKET))} +control_codes = {k: 1 + i for i, k in enumerate(range(defines.GLFW_KEY_A, defines.GLFW_KEY_RIGHT_BRACKET))} +alt_codes = {k: (0x1b, k) for i, k in enumerate(range(defines.GLFW_KEY_A, defines.GLFW_KEY_RIGHT_BRACKET))} def interpret_key_event(key, scancode, mods): data = bytearray() - if mods == glfw.GLFW_MOD_CONTROL and key in control_codes: + if mods == defines.GLFW_MOD_CONTROL and key in control_codes: # Map Ctrl-key to ascii control code data.append(control_codes[key]) - elif mods == glfw.GLFW_MOD_ALT and key in alt_codes: + elif mods == defines.GLFW_MOD_ALT and key in alt_codes: # Map Alt+key to Esc-key data.extend(alt_codes[key]) else: x = key_map.get(key) if x is not None: - if mods == glfw.GLFW_MOD_SHIFT: - if key == glfw.GLFW_KEY_TAB: + if mods == defines.GLFW_MOD_SHIFT: + if key == defines.GLFW_KEY_TAB: x = b'\x1b[Z' data.extend(x) return bytes(data) def interpret_text_event(codepoint, mods): - if mods > glfw.GLFW_MOD_SHIFT: + if mods > defines.GLFW_MOD_SHIFT: return b'' # Handled by interpret_key_event above data = chr(codepoint).encode('utf-8') return data diff --git a/kitty/main.py b/kitty/main.py index 2f3b9e1a2..5b50007f1 100644 --- a/kitty/main.py +++ b/kitty/main.py @@ -16,7 +16,7 @@ from .constants import appname, str_version, config_dir from .boss import Boss from .shaders import GL_VERSION from .fast_data_types import glewInit, enable_automatic_opengl_error_checking -import glfw +import glfw, glfw_constants def option_parser(): @@ -37,11 +37,11 @@ def option_parser(): def setup_opengl(): - glfw.glfwWindowHint(glfw.GLFW_CONTEXT_VERSION_MAJOR, GL_VERSION[0]) - glfw.glfwWindowHint(glfw.GLFW_CONTEXT_VERSION_MINOR, GL_VERSION[1]) - glfw.glfwWindowHint(glfw.GLFW_OPENGL_PROFILE, glfw.GLFW_OPENGL_CORE_PROFILE) - glfw.glfwWindowHint(glfw.GLFW_OPENGL_FORWARD_COMPAT, True) - glfw.glfwWindowHint(glfw.GLFW_SAMPLES, 0) + glfw.glfwWindowHint(glfw_constants.GLFW_CONTEXT_VERSION_MAJOR, GL_VERSION[0]) + glfw.glfwWindowHint(glfw_constants.GLFW_CONTEXT_VERSION_MINOR, GL_VERSION[1]) + glfw.glfwWindowHint(glfw_constants.GLFW_OPENGL_PROFILE, glfw_constants.GLFW_OPENGL_CORE_PROFILE) + glfw.glfwWindowHint(glfw_constants.GLFW_OPENGL_FORWARD_COMPAT, True) + glfw.glfwWindowHint(glfw_constants.GLFW_SAMPLES, 0) def run_app(opts, args, child):