diff --git a/generate_layout.rb b/generate_layout.rb index 4c8a0fd..4a05349 100755 --- a/generate_layout.rb +++ b/generate_layout.rb @@ -22,34 +22,66 @@ LayoutFile = "#{LayoutDir}/layout.c" puts "generating #{LayoutFile}..." -Layer = Struct.new :code, :up, :down +class Layer + @@layers = {} + @@primitives = 0 + + def initialize name + case name + when Symbol + raise "layer already defined: #{name}" if @@layers.include? name + + @@primitives += 1 + @@layers[name] = @@primitives + + when Array + name.each do |prim| + raise "unknown layers: #{prim}" if not @@layers.include? prim + raise "can only combo primitive layers: #{prim}" if not prim.is_a? Symbol + end + + combo = name.reduce(0) do |code, prim| + code | (@@layers[prim]) + end + + combo_name = name.sort_by{|p| @@layers[p]}.join("_").to_sym + + @@layers[combo_name] = combo + + else + raise "invalid layer definition: #{name}" + end + end +end + +Keydef = Struct.new :code, :func class Key - attr_reader :layers + attr_reader :keydefs - Layers = [ :basic, :punc, :nav, :func ] + Layers = [ :basic, :punc, :nav, :func, ] Functions = { - # down up - "basic" => [ "&kbfun_normal_press_release", ], - "media" => [ "&kbfun_mediakey_press_release", ], - # down up - "mod" => [ "&kbfun_modifier_press_release", ], - "sticky_mod" => [ "&kbfun_modifier_sticky", ], - # down up - "layer" => [ "&kbfun_layer_press_release", ], - "sticky" => [ "&kbfun_layer_sticky", ], - # down up - "shift" => [ "&kbfun_shift_press_release", ], - "ctrl" => [ "&kbfun_control_press_release", ], - "alt" => [ "&kbfun_alt_press_release", ], - "win" => [ "&kbfun_win_press_release", ], - "shift_layer" => [ "&kbfun_shift_layer_press_release", ], - "ctrl_layer" => [ "&kbfun_control_layer_press_release", ], - "alt_layer" => [ "&kbfun_alt_layer_press_release", ], - "win_layer" => [ "&kbfun_win_layer_press_release", ], - # down up - "capslock" => [ "&kbfun_capslock_press_release", ], + # + "basic" => "&kbfun_normal_press_release", + "media" => "&kbfun_mediakey_press_release", + # + "mod" => "&kbfun_modifier_press_release", + "sticky_mod" => "&kbfun_modifier_sticky", + # + "layer" => "&kbfun_layer_press_release", + "sticky" => "&kbfun_layer_sticky", + # + "shift" => "&kbfun_shift_press_release", + "ctrl" => "&kbfun_control_press_release", + "alt" => "&kbfun_alt_press_release", + "win" => "&kbfun_win_press_release", + "shift_layer" => "&kbfun_shift_layer_press_release", + "ctrl_layer" => "&kbfun_control_layer_press_release", + "alt_layer" => "&kbfun_alt_layer_press_release", + "win_layer" => "&kbfun_win_layer_press_release", + # + "capslock" => "&kbfun_capslock_press_release", } Keys = { @@ -208,11 +240,11 @@ class Key end def initialize layers - @layers = Array.new(layers.size) + @keydefs = Array.new(layers.size) layers.each.with_index do |(key, type), i| if type.nil? and key.nil? - @layers[i] = @layers[i-1] + @keydefs[i] = @keydefs[i-1] next end @@ -220,14 +252,13 @@ class Key keycode, default_type = Keys[key] # keyfunc - type ||= default_type || "basic" - up, down = Functions[type] - down ||= up + type ||= default_type || "basic" + keyfunc = Functions[type] raise "overwriting shift key: #{key}, #{type}" if default_type == "shift" and type != default_type raise "key not found: #{key}" if keycode.nil? - raise "type not found: #{type}" if up.nil? or down.nil? + raise "func not found: #{type}" if keyfunc.nil? case type when "layer", "sticky" @@ -245,10 +276,10 @@ class Key end end - @layers[i] = Layer.new(keycode, down, up) + @keydefs[i] = Keydef.new(keycode, keyfunc) end - raise "transparency error: #{layers}" if @layers.any?(&:nil?) + raise "transparency error: #{layers}" if @keydefs.any?(&:nil?) end end @@ -260,7 +291,7 @@ class Layout def keys_to_matrix type, method Key::Layers.map.with_index do |_, layer| - "KB_MATRIX_LAYER(\n#{@keys.map{|key| "(#{type}) " + key.layers[layer].send(method)}.join(",\n")}),\n" + "KB_MATRIX_LAYER(\n#{@keys.map{|key| "(#{type}) " + key.keydefs[layer].send(method)}.join(",\n")}),\n" end.join("\n") end @@ -275,15 +306,13 @@ class Layout HEADER keys = keys_to_matrix "keycode", :code - downs = keys_to_matrix "keyfunc", :down - ups = keys_to_matrix "keyfunc", :up + funcs = keys_to_matrix "keyfunc", :func File.open(LayoutFile, "w+") do |f| f.puts header f.puts "#define KB_LAYERS #{Key::Layers.size}" - f.puts "static const keycode PROGMEM _kb_layout[KB_LAYERS][KB_ROWS][KB_COLUMNS] = { #{keys} };" - f.puts "static const keyfunc PROGMEM _kb_layout_press[KB_LAYERS][KB_ROWS][KB_COLUMNS] = { #{downs} };" - f.puts "static const keyfunc PROGMEM _kb_layout_release[KB_LAYERS][KB_ROWS][KB_COLUMNS] = { #{ups} };" + f.puts "static const keycode PROGMEM _kb_layout_code[KB_LAYERS][KB_ROWS][KB_COLUMNS] = { #{keys} };" + f.puts "static const keyfunc PROGMEM _kb_layout_func[KB_LAYERS][KB_ROWS][KB_COLUMNS] = { #{funcs} };" end end end diff --git a/src/keyboard/layout.c b/src/keyboard/layout.c index 06e1959..4373af1 100644 --- a/src/keyboard/layout.c +++ b/src/keyboard/layout.c @@ -3,7 +3,7 @@ // ---------------------------------------------------------------------------- #define KB_LAYERS 4 -static const keycode PROGMEM _kb_layout[KB_LAYERS][KB_ROWS][KB_COLUMNS] = { KB_MATRIX_LAYER( +static const keycode PROGMEM _kb_layout_code[KB_LAYERS][KB_ROWS][KB_COLUMNS] = { KB_MATRIX_LAYER( (keycode) KEY_NULL, (keycode) KEY_0_RightParenthesis, (keycode) KEY_1_Exclamation, @@ -335,7 +335,7 @@ KB_MATRIX_LAYER( (keycode) 3, (keycode) 1), }; -static const keyfunc PROGMEM _kb_layout_press[KB_LAYERS][KB_ROWS][KB_COLUMNS] = { KB_MATRIX_LAYER( +static const keyfunc PROGMEM _kb_layout_func[KB_LAYERS][KB_ROWS][KB_COLUMNS] = { KB_MATRIX_LAYER( (keyfunc) &kbfun_normal_press_release, (keyfunc) &kbfun_normal_press_release, (keyfunc) &kbfun_normal_press_release, @@ -667,335 +667,3 @@ KB_MATRIX_LAYER( (keyfunc) &kbfun_layer_press_release, (keyfunc) &kbfun_layer_sticky), }; -static const keyfunc PROGMEM _kb_layout_release[KB_LAYERS][KB_ROWS][KB_COLUMNS] = { KB_MATRIX_LAYER( -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_modifier_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_capslock_press_release, -(keyfunc) &kbfun_shift_press_release, -(keyfunc) &kbfun_shift_press_release, -(keyfunc) &kbfun_shift_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_modifier_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_layer_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_modifier_press_release, -(keyfunc) &kbfun_modifier_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_modifier_sticky, -(keyfunc) &kbfun_modifier_sticky, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_modifier_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_capslock_press_release, -(keyfunc) &kbfun_layer_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_layer_press_release, -(keyfunc) &kbfun_control_layer_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_layer_press_release, -(keyfunc) &kbfun_layer_sticky, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_layer_press_release, -(keyfunc) &kbfun_layer_sticky), - -KB_MATRIX_LAYER( -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_shift_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_shift_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_modifier_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_shift_press_release, -(keyfunc) &kbfun_shift_press_release, -(keyfunc) &kbfun_shift_press_release, -(keyfunc) &kbfun_shift_press_release, -(keyfunc) &kbfun_capslock_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_shift_press_release, -(keyfunc) &kbfun_shift_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_shift_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_modifier_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_layer_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_modifier_press_release, -(keyfunc) &kbfun_modifier_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_modifier_sticky, -(keyfunc) &kbfun_modifier_sticky, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_shift_press_release, -(keyfunc) &kbfun_shift_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_shift_press_release, -(keyfunc) &kbfun_shift_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_shift_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_modifier_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_shift_press_release, -(keyfunc) &kbfun_shift_press_release, -(keyfunc) &kbfun_shift_press_release, -(keyfunc) &kbfun_shift_press_release, -(keyfunc) &kbfun_shift_press_release, -(keyfunc) &kbfun_capslock_press_release, -(keyfunc) &kbfun_layer_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_layer_press_release, -(keyfunc) &kbfun_control_layer_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_layer_press_release, -(keyfunc) &kbfun_layer_sticky, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_layer_press_release, -(keyfunc) &kbfun_layer_sticky), - -KB_MATRIX_LAYER( -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_modifier_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_capslock_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_shift_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_modifier_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_layer_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_modifier_press_release, -(keyfunc) &kbfun_modifier_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_modifier_sticky, -(keyfunc) &kbfun_modifier_sticky, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_modifier_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_capslock_press_release, -(keyfunc) &kbfun_layer_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_layer_press_release, -(keyfunc) &kbfun_control_layer_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_layer_press_release, -(keyfunc) &kbfun_layer_sticky, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_layer_press_release, -(keyfunc) &kbfun_layer_sticky), - -KB_MATRIX_LAYER( -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_modifier_press_release, -(keyfunc) &kbfun_mediakey_press_release, -(keyfunc) &kbfun_mediakey_press_release, -(keyfunc) &kbfun_mediakey_press_release, -(keyfunc) &kbfun_mediakey_press_release, -(keyfunc) &kbfun_mediakey_press_release, -(keyfunc) &kbfun_capslock_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_shift_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_modifier_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_layer_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_modifier_press_release, -(keyfunc) &kbfun_modifier_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_modifier_sticky, -(keyfunc) &kbfun_modifier_sticky, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_modifier_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_capslock_press_release, -(keyfunc) &kbfun_layer_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_layer_press_release, -(keyfunc) &kbfun_control_layer_press_release, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_layer_press_release, -(keyfunc) &kbfun_layer_sticky, -(keyfunc) &kbfun_normal_press_release, -(keyfunc) &kbfun_layer_press_release, -(keyfunc) &kbfun_layer_sticky), - }; diff --git a/src/main.c b/src/main.c index 83b9ab6..bf17a84 100644 --- a/src/main.c +++ b/src/main.c @@ -43,9 +43,10 @@ typedef void (*keyfunc)(keycode, bool); #include "./keyboard/layout.c" // defines: // #define KB_LAYERS #{Layers.size} -// static const keycode PROGMEM _kb_layout[KB_LAYERS][KB_ROWS][KB_COLUMNS]; -// static const keyfunc PROGMEM _kb_layout_press[KB_LAYERS][KB_ROWS][KB_COLUMNS]; -// static const keyfunc PROGMEM _kb_layout_release[KB_LAYERS][KB_ROWS][KB_COLUMNS]; +// static const keycode PROGMEM _kb_layout_code[KB_LAYERS][KB_ROWS][KB_COLUMNS]; +// static const keyfunc PROGMEM _kb_layout_func[KB_LAYERS][KB_ROWS][KB_COLUMNS]; + +/* static u8 layers[KB_LAYERS] = {0, 1, 1+2, 3, 4, 2+3+4}; */ #if KB_LAYERS > 8 #error "can only handle 8 layers for now" @@ -257,7 +258,7 @@ void layer_disable(layer l) { for (u8 row=0; row