File: konami_watcher.rb

package info (click to toggle)
mikutter 3.8.6%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 10,544 kB
  • sloc: ruby: 20,548; sh: 99; makefile: 19
file content (30 lines) | stat: -rw-r--r-- 892 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# -*- coding: utf-8 -*-
# なーにがkonami_watcherじゃ

module Gtk
  KONAMI_SEQUENCE = [Gdk::Keyval::GDK_Up,
                     Gdk::Keyval::GDK_Up,
                     Gdk::Keyval::GDK_Down,
                     Gdk::Keyval::GDK_Down,
                     Gdk::Keyval::GDK_Left,
                     Gdk::Keyval::GDK_Right,
                     Gdk::Keyval::GDK_Left,
                     Gdk::Keyval::GDK_Right,
                     Gdk::Keyval::GDK_b,
                     Gdk::Keyval::GDK_a].freeze
  remain = KONAMI_SEQUENCE
  Gtk.key_snooper_install do |grab_widget, event|
    if Gdk::Event::KEY_PRESS == event.event_type
      if remain.first == event.keyval
        remain = remain.cdr
        unless remain
          Plugin.call :konami_activate
          remain = KONAMI_SEQUENCE
        end
      else
        remain = KONAMI_SEQUENCE
      end
    end
    false
  end
end