summaryrefslogtreecommitdiff
path: root/vba/vba_keyboard.py
diff options
context:
space:
mode:
authorBryan Bishop <kanzure@gmail.com>2013-09-08 22:52:50 -0500
committerBryan Bishop <kanzure@gmail.com>2013-09-08 22:52:50 -0500
commit72cdd7ba645e02c928fd56def4465e38e4c03709 (patch)
treea3f6411a4170d07a67e1ae03155176a72f535b8f /vba/vba_keyboard.py
parent5ce5342833f8170390c0112ed6047243e67465a9 (diff)
move vba/ -> pokemontools/vba/
Diffstat (limited to 'vba/vba_keyboard.py')
-rw-r--r--vba/vba_keyboard.py562
1 files changed, 0 insertions, 562 deletions
diff --git a/vba/vba_keyboard.py b/vba/vba_keyboard.py
deleted file mode 100644
index 7d57953..0000000
--- a/vba/vba_keyboard.py
+++ /dev/null
@@ -1,562 +0,0 @@
-# -*- encoding: utf-8 -*-
-"""
-This file constructs a networkx.DiGraph object called graph, which can be used
-to find the shortest path of keypresses on the keyboard to type a word.
-"""
-
-import itertools
-import networkx
-
-graph = networkx.DiGraph()
-
-graph_data = """
-A a select
-A B r
-A I l
-A lower-upper-column-1 u
-A J d
-
-B b select
-B A l
-B C r
-B lower-upper-column-2 u
-B K d
-
-C c select
-C D r
-C B l
-C lower-upper-column-3 u
-C L d
-
-D d select
-D E r
-D C l
-D del-upper-column-1 u
-D M d
-
-E e select
-E del-upper-column-2 u
-E N d
-E D l
-E F r
-
-F f select
-F del-upper-column-3 u
-F O d
-F E l
-F G r
-
-G g select
-G end-upper-column-1 u
-G P d
-G F l
-G H r
-
-H h select
-H end-upper-column-2 u
-H Q d
-H G l
-H I r
-
-I i select
-I end-upper-column-3 u
-I R d
-I H l
-I A r
-
-J j select
-J A u
-J S d
-J R l
-J K r
-
-K k select
-K B u
-K T d
-K J l
-K L r
-
-L l select
-L C u
-L U d
-L K l
-L M r
-
-M m select
-M D u
-M V d
-M L l
-M N r
-
-N n select
-N E u
-N W d
-N M l
-N O r
-
-O o select
-O F u
-O X d
-O N l
-O P r
-
-P p select
-P G u
-P Y d
-P O l
-P Q r
-
-Q q select
-Q H u
-Q Z d
-Q P l
-Q R r
-
-R r select
-R I u
-R space-upper-x8-y2 d
-R Q l
-R J r
-
-S s select
-S J u
-S - d
-S space-upper-x8-y2 l
-
-T t select
-T K u
-T ? d
-T S l
-T U r
-
-U u select
-U L u
-U ! d
-U T l
-U V r
-
-V v select
-V M u
-V / d
-V U l
-V W r
-
-W w select
-W N u
-W . d
-W V l
-W X r
-
-X x select
-X O u
-X , d
-X W l
-X Y r
-
-Y y select
-Y P u
-Y space-upper-x6-y3 d
-Y X l
-Y Z r
-
-Z z select
-Z Q u
-Z space-upper-x7-y3 d
-Z Y l
-Z space-upper-x8-y2 r
-
-end-upper-column-1 lower-upper-column-1 r
-end-upper-column-2 lower-upper-column-1 r
-end-upper-column-3 lower-upper-column-1 r
-end-upper-column-1 del-upper-column-1 l
-end-upper-column-2 del-upper-column-1 l
-end-upper-column-3 del-upper-column-1 l
-lower-upper-column-1 end-upper-column-1 l
-lower-upper-column-2 end-upper-column-1 l
-lower-upper-column-3 end-upper-column-1 l
-lower-upper-column-1 del-upper-column-1 r
-lower-upper-column-2 del-upper-column-1 r
-lower-upper-column-3 del-upper-column-1 r
-del-upper-column-1 lower-upper-column-1 l
-del-upper-column-2 lower-upper-column-1 l
-del-upper-column-3 lower-upper-column-1 l
-del-upper-column-1 end-upper-column-1 r
-del-upper-column-2 end-upper-column-1 r
-del-upper-column-3 end-upper-column-1 r
-
-lower-upper-column-1 A d
-lower-upper-column-2 B d
-lower-upper-column-3 C d
-lower-upper-column-1 - u
-lower-upper-column-2 ? u
-lower-upper-column-3 ! u
-
-del-upper-column-1 D d
-del-upper-column-2 E d
-del-upper-column-3 F d
-del-upper-column-1 / u
-del-upper-column-2 . u
-del-upper-column-3 , u
-
-end-upper-column-1 G d
-end-upper-column-2 H d
-end-upper-column-3 I d
-end-upper-column-1 space-upper-x6-y3 u
-end-upper-column-2 space-upper-x7-y3 u
-end-upper-column-3 space-upper-x8-y3 u
-
-space-upper-x8-y2 space-lower-x8-y2 select
-space-upper-x8-y2 R u
-space-upper-x8-y2 space-upper-x8-y3 d
-space-upper-x8-y2 Z l
-space-upper-x8-y2 S r
-
-space-upper-x8-y3 MN select
-space-upper-x8-y3 space-upper-x8-y2 u
-space-upper-x8-y3 end-upper-column-3 d
-space-upper-x8-y3 space-upper-x7-y3 l
-space-upper-x8-y3 - r
-
-space-upper-x7-y3 PK select
-space-upper-x7-y3 Z u
-space-upper-x7-y3 end-upper-column-2 d
-space-upper-x7-y3 space-upper-x6-y3 l
-space-upper-x7-y3 space-upper-x8-y3 r
-
-space-upper-x6-y3 ] select
-space-upper-x6-y3 Y u
-space-upper-x6-y3 end-upper-column-1 d
-space-upper-x6-y3 , l
-space-upper-x6-y3 space-upper-x7-y3 r
-
-end-upper-column-1 end-lower-column-1 select
-end-upper-column-2 end-lower-column-2 select
-end-upper-column-3 end-lower-column-3 select
-lower-upper-column-1 lower-lower-column-1 select
-lower-upper-column-2 lower-lower-column-2 select
-lower-upper-column-3 lower-lower-column-3 select
-del-upper-column-1 del-lower-column-1 select
-del-upper-column-2 del-lower-column-2 select
-del-upper-column-3 del-lower-column-3 select
-
-lower-lower-column-1 × u
-lower-lower-column-2 ( u
-lower-lower-column-3 ) u
-lower-lower-column-1 a d
-lower-lower-column-2 b d
-lower-lower-column-3 c d
-
-end-lower-column-1 ] u
-end-lower-column-2 PK u
-end-lower-column-3 MN u
-end-lower-column-1 g d
-end-lower-column-2 h d
-end-lower-column-3 i d
-
-del-lower-column-1 : u
-del-lower-column-2 ; u
-del-lower-column-3 [ u
-del-lower-column-1 d d
-del-lower-column-2 e d
-del-lower-column-3 f d
-
-- × select
-- S u
-- lower-upper-column-1 d
-- space-upper-x8-y3 l
-- ? r
-
-? ( select
-? T u
-? lower-upper-column-2 d
-? - l
-? ! r
-
-! ) select
-! U u
-! lower-upper-column-3 d
-! ? l
-! / r
-
-/ : select
-/ V u
-/ del-upper-column-1 d
-/ ! l
-/ . r
-
-. ; select
-. W u
-. del-upper-column-2 d
-. / l
-. , r
-
-, [ select
-, X u
-, del-upper-column-3 d
-, . l
-, space-upper-x6-y3 r
-
-× - select
-× s u
-× upper-lower-column-1 d
-× MN l
-× ( r
-
-( ? select
-( t u
-( upper-lower-column-2 d
-( × l
-( ) r
-
-) ! select
-) u u
-) upper-lower-column-3 d
-) ( l
-) : r
-
-: / select
-: v u
-: del-lower-column-1 d
-: ) l
-: ; r
-
-; . select
-; w u
-; del-lower-column-2 d
-; : l
-; [ r
-
-[ , select
-[ x u
-[ del-lower-column-3 d
-[ ; l
-[ ] r
-
-] space-upper-x6-y3 select
-] y u
-] end-lower-column-1 d
-] [ l
-] PK r
-
-PK space-upper-x7-y3 select
-PK z u
-PK end-lower-column-2 d
-PK ] l
-PK MN r
-
-MN space-upper-x8-y3 select
-MN space-lower-x8-y2 u
-MN end-lower-column-3 d
-MN PK l
-MN × r
-
-space-lower-x8-y2 space-upper-x8-y2 select
-space-lower-x8-y2 r u
-space-lower-x8-y2 MN d
-space-lower-x8-y2 z l
-space-lower-x8-y2 s r
-
-a A select
-a upper-lower-column-1 u
-a j d
-a i l
-a b r
-
-b B select
-b upper-lower-column-2 u
-b k d
-b a l
-b c r
-
-c C select
-c upper-lower-column-3 u
-c l d
-c b l
-c d r
-
-d D select
-d del-lower-column-1 u
-d m d
-d c l
-d e r
-
-e E select
-e del-lower-column-2 u
-e n d
-e d l
-e f r
-
-f F select
-f del-lower-column-3 u
-f o d
-f e l
-f g r
-
-g G select
-g end-lower-column-1 u
-g p d
-g f l
-g h r
-
-h H select
-h end-lower-column-2 u
-h q d
-h g l
-h i r
-
-i I select
-i end-lower-column-3 u
-i r d
-i h l
-i a r
-
-j J select
-j a u
-j s d
-j r l
-j k r
-
-k K select
-k b u
-k t d
-k j l
-k l r
-
-l L select
-l c u
-l u d
-l k l
-l m r
-
-m M select
-m d u
-m v d
-m l l
-m n r
-
-n N select
-n e u
-n w d
-n m l
-n o r
-
-o O select
-o f u
-o x d
-o n l
-o p r
-
-p P select
-p g u
-p y d
-p o l
-p q r
-
-q Q select
-q h u
-q z d
-q p l
-q r r
-
-r R select
-r i u
-r space-lower-x8-y2 d
-r q l
-r j r
-
-s S select
-s j u
-s × d
-s space-lower-x8-y2 l
-s t r
-
-t T select
-t k u
-t ( d
-t s l
-t u r
-
-u U select
-u l u
-u ) d
-u t l
-u v r
-
-v V select
-v m u
-v : d
-v u l
-v w r
-
-w W select
-w n u
-w ; d
-w v l
-w x r
-
-x X select
-x o u
-x [ d
-x w l
-x y r
-
-y Y select
-y p u
-y ] d
-y x l
-y z r
-
-z Z select
-z q u
-z PK d
-z y l
-z space-lower-x8-y2 r"""
-
-for line in graph_data.split("\n"):
- if line == "":
- continue
- elif line[0] == "#":
- continue
-
- (node1, node2, edge_name) = line.split(" ")
- graph.add_edge(node1, node2, key=edge_name)
-
- #print "Adding edge ("+edge_name+") "+node1+" -> "+node2
-
-def shortest_path(node1, node2):
- """
- Figures out the shortest list of button presses to move from one letter to
- another.
- """
- buttons = []
- last = None
- path = networkx.shortest_path(graph, node1, node2)
- for each in path:
- if last != None:
- buttons.append(convert_nodes_to_button_press(last, each))
- last = each
- return buttons
- #return [convert_nodes_to_button_press(node3, node4) for (node3, node4) in zip(*(iter(networkx.shortest_path(graph, node1, node2)),) * 2)]
-
-def convert_nodes_to_button_press(node1, node2):
- """
- Determines the button necessary to switch from node1 to node2.
- """
- print "getting button press for state transition: " + node1 + " -> " + node2
- return graph.get_edge_data(node1, node2)["key"]
-
-def plan_typing(text, current="A"):
- """
- Plans a sequence of button presses to spell out the given text.
- """
- buttons = []
- for target in text:
- if target == current:
- buttons.append("a")
- else:
- print "Finding the shortest path between " + current + " and " + target
- more_buttons = shortest_path(current, target)
- buttons.extend(more_buttons)
- buttons.append("a")
- current = target
- return buttons