...

Source file src/code.rocket9labs.com/tslocum/etk/kibodo/keys.go

Documentation: code.rocket9labs.com/tslocum/etk/kibodo

     1  package kibodo
     2  
     3  import (
     4  	"github.com/hajimehoshi/ebiten/v2"
     5  )
     6  
     7  // KeyToggleExtended is a sentinel key value. Any key with this value set will
     8  // toggle the extended set of keys, if any defined via SetExtendedKeys.
     9  var KeyToggleExtended = ebiten.Key(-10)
    10  
    11  // KeysQWERTY is a standard QWERTY keyboard layout.
    12  var KeysQWERTY = [][]*Key{
    13  	{
    14  		{
    15  			LowerLabel: "`",
    16  			UpperLabel: "~",
    17  			LowerInput: &Input{Rune: '`'},
    18  			UpperInput: &Input{Rune: '~'},
    19  		},
    20  		{
    21  			LowerLabel: "1",
    22  			UpperLabel: "!",
    23  			LowerInput: &Input{Rune: '1'},
    24  			UpperInput: &Input{Rune: '!'},
    25  		},
    26  		{
    27  			LowerLabel: "2",
    28  			UpperLabel: "@",
    29  			LowerInput: &Input{Rune: '2'},
    30  			UpperInput: &Input{Rune: '@'},
    31  		},
    32  		{
    33  			LowerLabel: "3",
    34  			UpperLabel: "#",
    35  			LowerInput: &Input{Rune: '3'},
    36  			UpperInput: &Input{Rune: '#'},
    37  		},
    38  		{
    39  			LowerLabel: "4",
    40  			UpperLabel: "$",
    41  			LowerInput: &Input{Rune: '4'},
    42  			UpperInput: &Input{Rune: '$'},
    43  		},
    44  		{
    45  			LowerLabel: "5",
    46  			UpperLabel: "%",
    47  			LowerInput: &Input{Rune: '5'},
    48  			UpperInput: &Input{Rune: '%'},
    49  		},
    50  		{
    51  			LowerLabel: "6",
    52  			UpperLabel: "^",
    53  			LowerInput: &Input{Rune: '6'},
    54  			UpperInput: &Input{Rune: '^'},
    55  		},
    56  		{
    57  			LowerLabel: "7",
    58  			UpperLabel: "&",
    59  			LowerInput: &Input{Rune: '7'},
    60  			UpperInput: &Input{Rune: '&'},
    61  		},
    62  		{
    63  			LowerLabel: "8",
    64  			UpperLabel: "*",
    65  			LowerInput: &Input{Rune: '8'},
    66  			UpperInput: &Input{Rune: '*'},
    67  		},
    68  		{
    69  			LowerLabel: "9",
    70  			UpperLabel: "(",
    71  			LowerInput: &Input{Rune: '9'},
    72  			UpperInput: &Input{Rune: '('},
    73  		},
    74  		{
    75  			LowerLabel: "0",
    76  			UpperLabel: ")",
    77  			LowerInput: &Input{Rune: '0'},
    78  			UpperInput: &Input{Rune: ')'},
    79  		},
    80  		{
    81  			LowerLabel: "-",
    82  			UpperLabel: "_",
    83  			LowerInput: &Input{Rune: '-'},
    84  			UpperInput: &Input{Rune: '_'},
    85  		},
    86  		{
    87  			LowerLabel: "=",
    88  			UpperLabel: "+",
    89  			LowerInput: &Input{Rune: '='},
    90  			UpperInput: &Input{Rune: '+'},
    91  		},
    92  		{
    93  			LowerLabel: "Backspace",
    94  			UpperLabel: "BACKSPACE",
    95  			LowerInput: &Input{Key: ebiten.KeyBackspace},
    96  			UpperInput: &Input{Key: ebiten.KeyBackspace},
    97  		},
    98  	},
    99  	{
   100  		{
   101  			LowerLabel: "q",
   102  			UpperLabel: "Q",
   103  			LowerInput: &Input{Rune: 'q'},
   104  			UpperInput: &Input{Rune: 'Q'},
   105  		},
   106  		{
   107  			LowerLabel: "w",
   108  			UpperLabel: "W",
   109  			LowerInput: &Input{Rune: 'w'},
   110  			UpperInput: &Input{Rune: 'W'},
   111  		},
   112  		{
   113  			LowerLabel: "e",
   114  			UpperLabel: "E",
   115  			LowerInput: &Input{Rune: 'e'},
   116  			UpperInput: &Input{Rune: 'E'},
   117  		},
   118  		{
   119  			LowerLabel: "r",
   120  			UpperLabel: "R",
   121  			LowerInput: &Input{Rune: 'r'},
   122  			UpperInput: &Input{Rune: 'R'},
   123  		},
   124  		{
   125  			LowerLabel: "t",
   126  			UpperLabel: "T",
   127  			LowerInput: &Input{Rune: 't'},
   128  			UpperInput: &Input{Rune: 'T'},
   129  		},
   130  		{
   131  			LowerLabel: "y",
   132  			UpperLabel: "Y",
   133  			LowerInput: &Input{Rune: 'y'},
   134  			UpperInput: &Input{Rune: 'Y'},
   135  		},
   136  		{
   137  			LowerLabel: "u",
   138  			UpperLabel: "U",
   139  			LowerInput: &Input{Rune: 'u'},
   140  			UpperInput: &Input{Rune: 'U'},
   141  		},
   142  		{
   143  			LowerLabel: "i",
   144  			UpperLabel: "I",
   145  			LowerInput: &Input{Rune: 'i'},
   146  			UpperInput: &Input{Rune: 'I'},
   147  		},
   148  		{
   149  			LowerLabel: "o",
   150  			UpperLabel: "O",
   151  			LowerInput: &Input{Rune: 'o'},
   152  			UpperInput: &Input{Rune: 'O'},
   153  		},
   154  		{
   155  			LowerLabel: "p",
   156  			UpperLabel: "P",
   157  			LowerInput: &Input{Rune: 'p'},
   158  			UpperInput: &Input{Rune: 'P'},
   159  		},
   160  		{
   161  			LowerLabel: "[",
   162  			UpperLabel: "{",
   163  			LowerInput: &Input{Rune: '['},
   164  			UpperInput: &Input{Rune: '{'},
   165  		},
   166  		{
   167  			LowerLabel: "]",
   168  			UpperLabel: "}",
   169  			LowerInput: &Input{Rune: ']'},
   170  			UpperInput: &Input{Rune: '}'},
   171  		},
   172  		{
   173  			LowerLabel: "\\",
   174  			UpperLabel: "|",
   175  			LowerInput: &Input{Rune: '\\'},
   176  			UpperInput: &Input{Rune: '|'},
   177  		},
   178  	},
   179  	{
   180  		{
   181  			LowerLabel: "a",
   182  			UpperLabel: "A",
   183  			LowerInput: &Input{Rune: 'a'},
   184  			UpperInput: &Input{Rune: 'A'},
   185  		},
   186  		{
   187  			LowerLabel: "s",
   188  			UpperLabel: "S",
   189  			LowerInput: &Input{Rune: 's'},
   190  			UpperInput: &Input{Rune: 'S'},
   191  		},
   192  		{
   193  			LowerLabel: "d",
   194  			UpperLabel: "D",
   195  			LowerInput: &Input{Rune: 'd'},
   196  			UpperInput: &Input{Rune: 'D'},
   197  		},
   198  		{
   199  			LowerLabel: "f",
   200  			UpperLabel: "F",
   201  			LowerInput: &Input{Rune: 'f'},
   202  			UpperInput: &Input{Rune: 'F'},
   203  		},
   204  		{
   205  			LowerLabel: "g",
   206  			UpperLabel: "G",
   207  			LowerInput: &Input{Rune: 'g'},
   208  			UpperInput: &Input{Rune: 'G'},
   209  		},
   210  		{
   211  			LowerLabel: "h",
   212  			UpperLabel: "H",
   213  			LowerInput: &Input{Rune: 'h'},
   214  			UpperInput: &Input{Rune: 'H'},
   215  		},
   216  		{
   217  			LowerLabel: "j",
   218  			UpperLabel: "J",
   219  			LowerInput: &Input{Rune: 'j'},
   220  			UpperInput: &Input{Rune: 'J'},
   221  		},
   222  		{
   223  			LowerLabel: "k",
   224  			UpperLabel: "K",
   225  			LowerInput: &Input{Rune: 'k'},
   226  			UpperInput: &Input{Rune: 'K'},
   227  		},
   228  		{
   229  			LowerLabel: "l",
   230  			UpperLabel: "L",
   231  			LowerInput: &Input{Rune: 'l'},
   232  			UpperInput: &Input{Rune: 'L'},
   233  		},
   234  		{
   235  			LowerLabel: ";",
   236  			UpperLabel: ":",
   237  			LowerInput: &Input{Rune: ';'},
   238  			UpperInput: &Input{Rune: ':'},
   239  		},
   240  		{
   241  			LowerLabel: `'`,
   242  			UpperLabel: `"`,
   243  			LowerInput: &Input{Rune: '\''},
   244  			UpperInput: &Input{Rune: '"'},
   245  		},
   246  		{
   247  			LowerLabel: "Enter",
   248  			UpperLabel: "ENTER",
   249  			LowerInput: &Input{Key: ebiten.KeyEnter},
   250  			UpperInput: &Input{Key: ebiten.KeyEnter},
   251  		},
   252  	},
   253  	{
   254  		{
   255  			LowerLabel: "Shift",
   256  			UpperLabel: "SHIFT",
   257  			LowerInput: &Input{Key: ebiten.KeyShift},
   258  			UpperInput: &Input{Key: ebiten.KeyShift},
   259  		},
   260  		{
   261  			LowerLabel: "z",
   262  			UpperLabel: "Z",
   263  			LowerInput: &Input{Rune: 'z'},
   264  			UpperInput: &Input{Rune: 'Z'},
   265  		},
   266  		{
   267  			LowerLabel: "x",
   268  			UpperLabel: "X",
   269  			LowerInput: &Input{Rune: 'x'},
   270  			UpperInput: &Input{Rune: 'X'},
   271  		},
   272  		{
   273  			LowerLabel: "c",
   274  			UpperLabel: "C",
   275  			LowerInput: &Input{Rune: 'c'},
   276  			UpperInput: &Input{Rune: 'C'},
   277  		},
   278  		{
   279  			LowerLabel: "v",
   280  			UpperLabel: "V",
   281  			LowerInput: &Input{Rune: 'v'},
   282  			UpperInput: &Input{Rune: 'V'},
   283  		},
   284  		{
   285  			LowerLabel: "b",
   286  			UpperLabel: "B",
   287  			LowerInput: &Input{Rune: 'b'},
   288  			UpperInput: &Input{Rune: 'B'},
   289  		},
   290  		{
   291  			LowerLabel: "n",
   292  			UpperLabel: "N",
   293  			LowerInput: &Input{Rune: 'n'},
   294  			UpperInput: &Input{Rune: 'N'},
   295  		},
   296  		{
   297  			LowerLabel: "m",
   298  			UpperLabel: "M",
   299  			LowerInput: &Input{Rune: 'm'},
   300  			UpperInput: &Input{Rune: 'M'},
   301  		},
   302  		{
   303  			LowerLabel: ",",
   304  			UpperLabel: "<",
   305  			LowerInput: &Input{Rune: ','},
   306  			UpperInput: &Input{Rune: '<'},
   307  		},
   308  		{
   309  			LowerLabel: ".",
   310  			UpperLabel: ">",
   311  			LowerInput: &Input{Rune: '.'},
   312  			UpperInput: &Input{Rune: '>'},
   313  		},
   314  		{
   315  			LowerLabel: "/",
   316  			UpperLabel: "?",
   317  			LowerInput: &Input{Rune: '/'},
   318  			UpperInput: &Input{Rune: '?'},
   319  		},
   320  	},
   321  	{
   322  		{
   323  			LowerLabel: "Space",
   324  			UpperLabel: "SPACE",
   325  			LowerInput: &Input{Rune: ' '},
   326  			UpperInput: &Input{Rune: ' '},
   327  		},
   328  	},
   329  }
   330  
   331  // KeysMobileQWERTY is a QWERTY keyboard layout optimized for mobile devices.
   332  var KeysMobileQWERTY = [][]*Key{
   333  	{
   334  		{
   335  			LowerLabel: "q",
   336  			UpperLabel: "Q",
   337  			LowerInput: &Input{Rune: 'q'},
   338  			UpperInput: &Input{Rune: 'Q'},
   339  		},
   340  		{
   341  			LowerLabel: "w",
   342  			UpperLabel: "W",
   343  			LowerInput: &Input{Rune: 'w'},
   344  			UpperInput: &Input{Rune: 'W'},
   345  		},
   346  		{
   347  			LowerLabel: "e",
   348  			UpperLabel: "E",
   349  			LowerInput: &Input{Rune: 'e'},
   350  			UpperInput: &Input{Rune: 'E'},
   351  		},
   352  		{
   353  			LowerLabel: "r",
   354  			UpperLabel: "R",
   355  			LowerInput: &Input{Rune: 'r'},
   356  			UpperInput: &Input{Rune: 'R'},
   357  		},
   358  		{
   359  			LowerLabel: "t",
   360  			UpperLabel: "T",
   361  			LowerInput: &Input{Rune: 't'},
   362  			UpperInput: &Input{Rune: 'T'},
   363  		},
   364  		{
   365  			LowerLabel: "y",
   366  			UpperLabel: "Y",
   367  			LowerInput: &Input{Rune: 'y'},
   368  			UpperInput: &Input{Rune: 'Y'},
   369  		},
   370  		{
   371  			LowerLabel: "u",
   372  			UpperLabel: "U",
   373  			LowerInput: &Input{Rune: 'u'},
   374  			UpperInput: &Input{Rune: 'U'},
   375  		},
   376  		{
   377  			LowerLabel: "i",
   378  			UpperLabel: "I",
   379  			LowerInput: &Input{Rune: 'i'},
   380  			UpperInput: &Input{Rune: 'I'},
   381  		},
   382  		{
   383  			LowerLabel: "o",
   384  			UpperLabel: "O",
   385  			LowerInput: &Input{Rune: 'o'},
   386  			UpperInput: &Input{Rune: 'O'},
   387  		},
   388  		{
   389  			LowerLabel: "p",
   390  			UpperLabel: "P",
   391  			LowerInput: &Input{Rune: 'p'},
   392  			UpperInput: &Input{Rune: 'P'},
   393  		},
   394  	},
   395  	{
   396  		{
   397  			LowerLabel: "a",
   398  			UpperLabel: "A",
   399  			LowerInput: &Input{Rune: 'a'},
   400  			UpperInput: &Input{Rune: 'A'},
   401  		},
   402  		{
   403  			LowerLabel: "s",
   404  			UpperLabel: "S",
   405  			LowerInput: &Input{Rune: 's'},
   406  			UpperInput: &Input{Rune: 'S'},
   407  		},
   408  		{
   409  			LowerLabel: "d",
   410  			UpperLabel: "D",
   411  			LowerInput: &Input{Rune: 'd'},
   412  			UpperInput: &Input{Rune: 'D'},
   413  		},
   414  		{
   415  			LowerLabel: "f",
   416  			UpperLabel: "F",
   417  			LowerInput: &Input{Rune: 'f'},
   418  			UpperInput: &Input{Rune: 'F'},
   419  		},
   420  		{
   421  			LowerLabel: "g",
   422  			UpperLabel: "G",
   423  			LowerInput: &Input{Rune: 'g'},
   424  			UpperInput: &Input{Rune: 'G'},
   425  		},
   426  		{
   427  			LowerLabel: "h",
   428  			UpperLabel: "H",
   429  			LowerInput: &Input{Rune: 'h'},
   430  			UpperInput: &Input{Rune: 'H'},
   431  		},
   432  		{
   433  			LowerLabel: "j",
   434  			UpperLabel: "J",
   435  			LowerInput: &Input{Rune: 'j'},
   436  			UpperInput: &Input{Rune: 'J'},
   437  		},
   438  		{
   439  			LowerLabel: "k",
   440  			UpperLabel: "K",
   441  			LowerInput: &Input{Rune: 'k'},
   442  			UpperInput: &Input{Rune: 'K'},
   443  		},
   444  		{
   445  			LowerLabel: "l",
   446  			UpperLabel: "L",
   447  			LowerInput: &Input{Rune: 'l'},
   448  			UpperInput: &Input{Rune: 'L'},
   449  		},
   450  	},
   451  	{
   452  		{
   453  			LowerLabel: "Shift",
   454  			UpperLabel: "SHIFT",
   455  			LowerInput: &Input{Key: ebiten.KeyShift},
   456  			UpperInput: &Input{Key: ebiten.KeyShift},
   457  		},
   458  		{
   459  			LowerLabel: "z",
   460  			UpperLabel: "Z",
   461  			LowerInput: &Input{Rune: 'z'},
   462  			UpperInput: &Input{Rune: 'Z'},
   463  		},
   464  		{
   465  			LowerLabel: "x",
   466  			UpperLabel: "X",
   467  			LowerInput: &Input{Rune: 'x'},
   468  			UpperInput: &Input{Rune: 'X'},
   469  		},
   470  		{
   471  			LowerLabel: "c",
   472  			UpperLabel: "C",
   473  			LowerInput: &Input{Rune: 'c'},
   474  			UpperInput: &Input{Rune: 'C'},
   475  		},
   476  		{
   477  			LowerLabel: "v",
   478  			UpperLabel: "V",
   479  			LowerInput: &Input{Rune: 'v'},
   480  			UpperInput: &Input{Rune: 'V'},
   481  		},
   482  		{
   483  			LowerLabel: "b",
   484  			UpperLabel: "B",
   485  			LowerInput: &Input{Rune: 'b'},
   486  			UpperInput: &Input{Rune: 'B'},
   487  		},
   488  		{
   489  			LowerLabel: "n",
   490  			UpperLabel: "N",
   491  			LowerInput: &Input{Rune: 'n'},
   492  			UpperInput: &Input{Rune: 'N'},
   493  		},
   494  		{
   495  			LowerLabel: "m",
   496  			UpperLabel: "M",
   497  			LowerInput: &Input{Rune: 'm'},
   498  			UpperInput: &Input{Rune: 'M'},
   499  		},
   500  		{
   501  			LowerLabel: "Backspace",
   502  			UpperLabel: "BACKSPACE",
   503  			LowerInput: &Input{Key: ebiten.KeyBackspace},
   504  			UpperInput: &Input{Key: ebiten.KeyBackspace},
   505  		},
   506  	},
   507  	{
   508  		{
   509  			LowerLabel: "Escape",
   510  			UpperLabel: "ESCAPE",
   511  			LowerInput: &Input{Key: ebiten.KeyEscape},
   512  			UpperInput: &Input{Key: ebiten.KeyEscape},
   513  		},
   514  		{
   515  			LowerLabel: "Symbols",
   516  			UpperLabel: "SYMBOLS",
   517  			LowerInput: &Input{Key: KeyToggleExtended},
   518  			UpperInput: &Input{Key: KeyToggleExtended},
   519  		},
   520  		{
   521  			LowerLabel: "Space",
   522  			UpperLabel: "SPACE",
   523  			LowerInput: &Input{Rune: ' '},
   524  			UpperInput: &Input{Rune: ' '},
   525  			Wide:       true,
   526  		},
   527  		{
   528  			LowerLabel: ".",
   529  			UpperLabel: ",",
   530  			LowerInput: &Input{Rune: '.'},
   531  			UpperInput: &Input{Rune: ','},
   532  		},
   533  		{
   534  			LowerLabel: "Enter",
   535  			UpperLabel: "ENTER",
   536  			LowerInput: &Input{Key: ebiten.KeyEnter},
   537  			UpperInput: &Input{Key: ebiten.KeyEnter},
   538  		},
   539  	},
   540  }
   541  
   542  // KeysMobileSymbols is a symbols keyboard layout optimized for mobile devices.
   543  var KeysMobileSymbols = [][]*Key{
   544  	{
   545  		{
   546  			LowerLabel: "1",
   547  			UpperLabel: "1",
   548  			LowerInput: &Input{Rune: '1'},
   549  			UpperInput: &Input{Rune: '1'},
   550  		},
   551  		{
   552  			LowerLabel: "2",
   553  			UpperLabel: "2",
   554  			LowerInput: &Input{Rune: '2'},
   555  			UpperInput: &Input{Rune: '2'},
   556  		},
   557  		{
   558  			LowerLabel: "3",
   559  			UpperLabel: "3",
   560  			LowerInput: &Input{Rune: '3'},
   561  			UpperInput: &Input{Rune: '3'},
   562  		},
   563  		{
   564  			LowerLabel: "4",
   565  			UpperLabel: "4",
   566  			LowerInput: &Input{Rune: '4'},
   567  			UpperInput: &Input{Rune: '4'},
   568  		},
   569  		{
   570  			LowerLabel: "5",
   571  			UpperLabel: "5",
   572  			LowerInput: &Input{Rune: '5'},
   573  			UpperInput: &Input{Rune: '5'},
   574  		},
   575  		{
   576  			LowerLabel: "6",
   577  			UpperLabel: "6",
   578  			LowerInput: &Input{Rune: '6'},
   579  			UpperInput: &Input{Rune: '6'},
   580  		},
   581  		{
   582  			LowerLabel: "7",
   583  			UpperLabel: "7",
   584  			LowerInput: &Input{Rune: '7'},
   585  			UpperInput: &Input{Rune: '7'},
   586  		},
   587  		{
   588  			LowerLabel: "8",
   589  			UpperLabel: "8",
   590  			LowerInput: &Input{Rune: '8'},
   591  			UpperInput: &Input{Rune: '8'},
   592  		},
   593  		{
   594  			LowerLabel: "9",
   595  			UpperLabel: "9",
   596  			LowerInput: &Input{Rune: '9'},
   597  			UpperInput: &Input{Rune: '9'},
   598  		},
   599  		{
   600  			LowerLabel: "0",
   601  			UpperLabel: "0",
   602  			LowerInput: &Input{Rune: '0'},
   603  			UpperInput: &Input{Rune: '0'},
   604  		},
   605  	},
   606  	{
   607  		{
   608  			LowerLabel: "<",
   609  			UpperLabel: "<",
   610  			LowerInput: &Input{Rune: '<'},
   611  			UpperInput: &Input{Rune: '<'},
   612  		},
   613  		{
   614  			LowerLabel: ">",
   615  			UpperLabel: ">",
   616  			LowerInput: &Input{Rune: '>'},
   617  			UpperInput: &Input{Rune: '>'},
   618  		},
   619  		{
   620  			LowerLabel: "[",
   621  			UpperLabel: "[",
   622  			LowerInput: &Input{Rune: '['},
   623  			UpperInput: &Input{Rune: '['},
   624  		},
   625  		{
   626  			LowerLabel: "]",
   627  			UpperLabel: "]",
   628  			LowerInput: &Input{Rune: ']'},
   629  			UpperInput: &Input{Rune: ']'},
   630  		},
   631  		{
   632  			LowerLabel: "{",
   633  			UpperLabel: "{",
   634  			LowerInput: &Input{Rune: '{'},
   635  			UpperInput: &Input{Rune: '{'},
   636  		},
   637  		{
   638  			LowerLabel: "}",
   639  			UpperLabel: "}",
   640  			LowerInput: &Input{Rune: '}'},
   641  			UpperInput: &Input{Rune: '}'},
   642  		},
   643  		{
   644  			LowerLabel: "(",
   645  			UpperLabel: "(",
   646  			LowerInput: &Input{Rune: '('},
   647  			UpperInput: &Input{Rune: '('},
   648  		},
   649  		{
   650  			LowerLabel: ")",
   651  			UpperLabel: ")",
   652  			LowerInput: &Input{Rune: ')'},
   653  			UpperInput: &Input{Rune: ')'},
   654  		},
   655  		{
   656  			LowerLabel: "-",
   657  			UpperLabel: "-",
   658  			LowerInput: &Input{Rune: '-'},
   659  			UpperInput: &Input{Rune: '-'},
   660  		},
   661  		{
   662  			LowerLabel: "+",
   663  			UpperLabel: "+",
   664  			LowerInput: &Input{Rune: '+'},
   665  			UpperInput: &Input{Rune: '+'},
   666  		},
   667  	},
   668  	{
   669  		{
   670  			LowerLabel: "@",
   671  			UpperLabel: "@",
   672  			LowerInput: &Input{Rune: '@'},
   673  			UpperInput: &Input{Rune: '@'},
   674  		},
   675  		{
   676  			LowerLabel: "#",
   677  			UpperLabel: "#",
   678  			LowerInput: &Input{Rune: '#'},
   679  			UpperInput: &Input{Rune: '#'},
   680  		},
   681  		{
   682  			LowerLabel: "$",
   683  			UpperLabel: "$",
   684  			LowerInput: &Input{Rune: '$'},
   685  			UpperInput: &Input{Rune: '$'},
   686  		},
   687  		{
   688  			LowerLabel: "%",
   689  			UpperLabel: "%",
   690  			LowerInput: &Input{Rune: '%'},
   691  			UpperInput: &Input{Rune: '%'},
   692  		},
   693  		{
   694  			LowerLabel: "^",
   695  			UpperLabel: "^",
   696  			LowerInput: &Input{Rune: '^'},
   697  			UpperInput: &Input{Rune: '^'},
   698  		},
   699  		{
   700  			LowerLabel: "&",
   701  			UpperLabel: "&",
   702  			LowerInput: &Input{Rune: '&'},
   703  			UpperInput: &Input{Rune: '&'},
   704  		},
   705  		{
   706  			LowerLabel: "*",
   707  			UpperLabel: "*",
   708  			LowerInput: &Input{Rune: '*'},
   709  			UpperInput: &Input{Rune: '*'},
   710  		},
   711  		{
   712  			LowerLabel: "=",
   713  			UpperLabel: "=",
   714  			LowerInput: &Input{Rune: '='},
   715  			UpperInput: &Input{Rune: '='},
   716  		},
   717  		{
   718  			LowerLabel: "|",
   719  			UpperLabel: "|",
   720  			LowerInput: &Input{Rune: '|'},
   721  			UpperInput: &Input{Rune: '|'},
   722  		},
   723  		{
   724  			LowerLabel: "_",
   725  			UpperLabel: "_",
   726  			LowerInput: &Input{Rune: '_'},
   727  			UpperInput: &Input{Rune: '_'},
   728  		},
   729  	},
   730  	{
   731  		{
   732  			LowerLabel: "\\",
   733  			UpperLabel: "\\",
   734  			LowerInput: &Input{Rune: '\\'},
   735  			UpperInput: &Input{Rune: '\\'},
   736  		},
   737  		{
   738  			LowerLabel: "/",
   739  			UpperLabel: "/",
   740  			LowerInput: &Input{Rune: '/'},
   741  			UpperInput: &Input{Rune: '/'},
   742  		},
   743  		{
   744  			LowerLabel: "'",
   745  			UpperLabel: "'",
   746  			LowerInput: &Input{Rune: '\''},
   747  			UpperInput: &Input{Rune: '\''},
   748  		},
   749  		{
   750  			LowerLabel: "\"",
   751  			UpperLabel: "\"",
   752  			LowerInput: &Input{Rune: '"'},
   753  			UpperInput: &Input{Rune: '"'},
   754  		},
   755  		{
   756  			LowerLabel: ";",
   757  			UpperLabel: ";",
   758  			LowerInput: &Input{Rune: ';'},
   759  			UpperInput: &Input{Rune: ';'},
   760  		},
   761  		{
   762  			LowerLabel: ":",
   763  			UpperLabel: ":",
   764  			LowerInput: &Input{Rune: ':'},
   765  			UpperInput: &Input{Rune: ':'},
   766  		},
   767  		{
   768  			LowerLabel: "!",
   769  			UpperLabel: "!",
   770  			LowerInput: &Input{Rune: '!'},
   771  			UpperInput: &Input{Rune: '!'},
   772  		},
   773  		{
   774  			LowerLabel: "?",
   775  			UpperLabel: "?",
   776  			LowerInput: &Input{Rune: '?'},
   777  			UpperInput: &Input{Rune: '?'},
   778  		},
   779  		{
   780  			LowerLabel: "Backspace",
   781  			UpperLabel: "BACKSPACE",
   782  			LowerInput: &Input{Key: ebiten.KeyBackspace},
   783  			UpperInput: &Input{Key: ebiten.KeyBackspace},
   784  		},
   785  	},
   786  	{
   787  		{
   788  			LowerLabel: "Escape",
   789  			UpperLabel: "ESCAPE",
   790  			LowerInput: &Input{Key: ebiten.KeyEscape},
   791  			UpperInput: &Input{Key: ebiten.KeyEscape},
   792  		},
   793  		{
   794  			LowerLabel: "Symbols",
   795  			UpperLabel: "SYMBOLS",
   796  			LowerInput: &Input{Key: KeyToggleExtended},
   797  			UpperInput: &Input{Key: KeyToggleExtended},
   798  		},
   799  		{
   800  			LowerLabel: "Space",
   801  			UpperLabel: "SPACE",
   802  			LowerInput: &Input{Rune: ' '},
   803  			UpperInput: &Input{Rune: ' '},
   804  			Wide:       true,
   805  		},
   806  		{
   807  			LowerLabel: ".",
   808  			UpperLabel: ".",
   809  			LowerInput: &Input{Rune: '.'},
   810  			UpperInput: &Input{Rune: '.'},
   811  		},
   812  		{
   813  			LowerLabel: "Enter",
   814  			UpperLabel: "ENTER",
   815  			LowerInput: &Input{Key: ebiten.KeyEnter},
   816  			UpperInput: &Input{Key: ebiten.KeyEnter},
   817  		},
   818  	},
   819  }
   820  
   821  var allKeys = []ebiten.Key{
   822  	ebiten.KeyA,
   823  	ebiten.KeyB,
   824  	ebiten.KeyC,
   825  	ebiten.KeyD,
   826  	ebiten.KeyE,
   827  	ebiten.KeyF,
   828  	ebiten.KeyG,
   829  	ebiten.KeyH,
   830  	ebiten.KeyI,
   831  	ebiten.KeyJ,
   832  	ebiten.KeyK,
   833  	ebiten.KeyL,
   834  	ebiten.KeyM,
   835  	ebiten.KeyN,
   836  	ebiten.KeyO,
   837  	ebiten.KeyP,
   838  	ebiten.KeyQ,
   839  	ebiten.KeyR,
   840  	ebiten.KeyS,
   841  	ebiten.KeyT,
   842  	ebiten.KeyU,
   843  	ebiten.KeyV,
   844  	ebiten.KeyW,
   845  	ebiten.KeyX,
   846  	ebiten.KeyY,
   847  	ebiten.KeyZ,
   848  	ebiten.KeyAltLeft,
   849  	ebiten.KeyAltRight,
   850  	ebiten.KeyArrowDown,
   851  	ebiten.KeyArrowLeft,
   852  	ebiten.KeyArrowRight,
   853  	ebiten.KeyArrowUp,
   854  	ebiten.KeyBackquote,
   855  	ebiten.KeyBackslash,
   856  	ebiten.KeyBackspace,
   857  	ebiten.KeyBracketLeft,
   858  	ebiten.KeyBracketRight,
   859  	ebiten.KeyCapsLock,
   860  	ebiten.KeyComma,
   861  	ebiten.KeyContextMenu,
   862  	ebiten.KeyControlLeft,
   863  	ebiten.KeyControlRight,
   864  	ebiten.KeyDelete,
   865  	ebiten.KeyDigit0,
   866  	ebiten.KeyDigit1,
   867  	ebiten.KeyDigit2,
   868  	ebiten.KeyDigit3,
   869  	ebiten.KeyDigit4,
   870  	ebiten.KeyDigit5,
   871  	ebiten.KeyDigit6,
   872  	ebiten.KeyDigit7,
   873  	ebiten.KeyDigit8,
   874  	ebiten.KeyDigit9,
   875  	ebiten.KeyEnd,
   876  	ebiten.KeyEnter,
   877  	ebiten.KeyEqual,
   878  	ebiten.KeyEscape,
   879  	ebiten.KeyF1,
   880  	ebiten.KeyF2,
   881  	ebiten.KeyF3,
   882  	ebiten.KeyF4,
   883  	ebiten.KeyF5,
   884  	ebiten.KeyF6,
   885  	ebiten.KeyF7,
   886  	ebiten.KeyF8,
   887  	ebiten.KeyF9,
   888  	ebiten.KeyF10,
   889  	ebiten.KeyF11,
   890  	ebiten.KeyF12,
   891  	ebiten.KeyHome,
   892  	ebiten.KeyInsert,
   893  	ebiten.KeyMetaLeft,
   894  	ebiten.KeyMetaRight,
   895  	ebiten.KeyMinus,
   896  	ebiten.KeyNumLock,
   897  	ebiten.KeyNumpad0,
   898  	ebiten.KeyNumpad1,
   899  	ebiten.KeyNumpad2,
   900  	ebiten.KeyNumpad3,
   901  	ebiten.KeyNumpad4,
   902  	ebiten.KeyNumpad5,
   903  	ebiten.KeyNumpad6,
   904  	ebiten.KeyNumpad7,
   905  	ebiten.KeyNumpad8,
   906  	ebiten.KeyNumpad9,
   907  	ebiten.KeyNumpadAdd,
   908  	ebiten.KeyNumpadDecimal,
   909  	ebiten.KeyNumpadDivide,
   910  	ebiten.KeyNumpadEnter,
   911  	ebiten.KeyNumpadEqual,
   912  	ebiten.KeyNumpadMultiply,
   913  	ebiten.KeyNumpadSubtract,
   914  	ebiten.KeyPageDown,
   915  	ebiten.KeyPageUp,
   916  	ebiten.KeyPause,
   917  	ebiten.KeyPeriod,
   918  	ebiten.KeyPrintScreen,
   919  	ebiten.KeyQuote,
   920  	ebiten.KeyScrollLock,
   921  	ebiten.KeySemicolon,
   922  	ebiten.KeyShiftLeft,
   923  	ebiten.KeyShiftRight,
   924  	ebiten.KeySlash,
   925  	ebiten.KeySpace,
   926  	ebiten.KeyTab,
   927  	ebiten.KeyAlt,
   928  	ebiten.KeyControl,
   929  	ebiten.KeyShift,
   930  	ebiten.KeyMeta,
   931  	ebiten.KeyMax,
   932  }
   933  

View as plain text