next_keycode.py
  1  # SPDX-FileCopyrightText: 2022 Jeff Epler for Adafruit Industries
  2  # SPDX-License-Identifier: MIT
  3  from adafruit_hid.consumer_control_code import ConsumerControlCode as C
  4  from adafruit_hid.keycode import Keycode as K
  5  
  6  MASK_CC = 1 << 15
  7  
  8  
  9  def is_cc(value):
 10      return isinstance(value, int) and (value & MASK_CC)
 11  
 12  
 13  def cc_value(value):
 14      return value & ~MASK_CC
 15  
 16  
 17  next_modifiers = [
 18      K.RIGHT_ALT,
 19      K.ALT,
 20      K.APPLICATION,  # right command
 21      K.COMMAND,
 22      K.RIGHT_SHIFT,
 23      K.SHIFT,
 24      K.CONTROL,
 25  ]
 26  
 27  shift_modifiers = (1<<4) | (1<<5)
 28  
 29  next_scancodes = {
 30      3: K.BACKSLASH,
 31      4: K.RIGHT_BRACKET,
 32      5: K.LEFT_BRACKET,
 33      6: K.I,
 34      7: K.O,
 35      8: K.P,
 36      9: K.LEFT_ARROW,
 37      11: K.KEYPAD_ZERO,
 38      12: K.KEYPAD_PERIOD,
 39      13: K.KEYPAD_ENTER,
 40      15: K.DOWN_ARROW,
 41      16: K.RIGHT_ARROW,
 42      17: K.KEYPAD_ONE,
 43      18: K.KEYPAD_FOUR,
 44      19: K.KEYPAD_SIX,
 45      20: K.KEYPAD_THREE,
 46      21: K.KEYPAD_PLUS,
 47      22: K.UP_ARROW,
 48      23: K.KEYPAD_TWO,
 49      24: K.KEYPAD_FIVE,
 50      27: K.BACKSPACE,
 51      28: K.EQUALS,
 52      29: K.MINUS,
 53      30: K.EIGHT,
 54      31: K.NINE,
 55      32: K.ZERO,
 56      33: K.KEYPAD_SEVEN,
 57      34: K.KEYPAD_EIGHT,
 58      35: K.KEYPAD_NINE,
 59      36: K.KEYPAD_MINUS,
 60      37: K.KEYPAD_ASTERISK,
 61      38: K.GRAVE_ACCENT,
 62      39: K.KEYPAD_EQUALS,
 63      40: K.KEYPAD_FORWARD_SLASH,
 64      42: K.RETURN,
 65      43: K.QUOTE,
 66      44: K.SEMICOLON,
 67      45: K.L,
 68      46: K.COMMA,
 69      47: K.PERIOD,
 70      48: K.FORWARD_SLASH,
 71      49: K.Z,
 72      50: K.X,
 73      51: K.C,
 74      52: K.V,
 75      53: K.B,
 76      54: K.M,
 77      55: K.N,
 78      56: K.SPACE,
 79      57: K.A,
 80      58: K.S,
 81      59: K.D,
 82      60: K.F,
 83      61: K.G,
 84      62: K.K,
 85      63: K.J,
 86      64: K.H,
 87      65: K.TAB,
 88      66: K.Q,
 89      67: K.W,
 90      68: K.E,
 91      69: K.R,
 92      70: K.U,
 93      71: K.Y,
 94      72: K.T,
 95      73: K.ESCAPE,
 96      74: K.ONE,
 97      75: K.TWO,
 98      76: K.THREE,
 99      77: K.FOUR,
100      78: K.SEVEN,
101      79: K.SIX,
102      80: K.FIVE,
103      26: C.VOLUME_INCREMENT | MASK_CC,
104      2: C.VOLUME_DECREMENT | MASK_CC,
105      25: C.BRIGHTNESS_INCREMENT | MASK_CC,
106      1: C.BRIGHTNESS_DECREMENT | MASK_CC,
107  }
108  
109  shifted_codes = {
110      39: K.BACKSLASH, # already shifted
111      40: (K.BACKSLASH,), # will temporarily undo shift
112  }