Method: Xkbcommon::Keymap::Parser#keys

Defined in:
lib/xkbcommon/keymap/parser.rb

#keysObject



10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/xkbcommon/keymap/parser.rb', line 10

def keys
  @keys ||= begin
    min_code = Libxkbcommon.xkb_keymap_min_keycode(@keymap.to_native)
    max_code = Libxkbcommon.xkb_keymap_max_keycode(@keymap.to_native)
    keycode_range = min_code..max_code

    codes = keycode_range.select do |code|
      # Todo: This does not seem to filter out keys that do not exist on the keyboard?
      0 < Libxkbcommon.xkb_keymap_num_layouts_for_key(@keymap.to_native, code)
    end
    codes.map{ |code| Key.new(self, code) }
  end
end