933 lines
18 KiB
Go
933 lines
18 KiB
Go
package kibodo
|
|
|
|
import (
|
|
"github.com/hajimehoshi/ebiten/v2"
|
|
)
|
|
|
|
// KeyToggleExtended is a sentinel key value. Any key with this value set will
|
|
// toggle the extended set of keys, if any defined via SetExtendedKeys.
|
|
var KeyToggleExtended = ebiten.Key(-10)
|
|
|
|
// KeysQWERTY is a standard QWERTY keyboard layout.
|
|
var KeysQWERTY = [][]*Key{
|
|
{
|
|
{
|
|
LowerLabel: "`",
|
|
UpperLabel: "~",
|
|
LowerInput: &Input{Rune: '`'},
|
|
UpperInput: &Input{Rune: '~'},
|
|
},
|
|
{
|
|
LowerLabel: "1",
|
|
UpperLabel: "!",
|
|
LowerInput: &Input{Rune: '1'},
|
|
UpperInput: &Input{Rune: '!'},
|
|
},
|
|
{
|
|
LowerLabel: "2",
|
|
UpperLabel: "@",
|
|
LowerInput: &Input{Rune: '2'},
|
|
UpperInput: &Input{Rune: '@'},
|
|
},
|
|
{
|
|
LowerLabel: "3",
|
|
UpperLabel: "#",
|
|
LowerInput: &Input{Rune: '3'},
|
|
UpperInput: &Input{Rune: '#'},
|
|
},
|
|
{
|
|
LowerLabel: "4",
|
|
UpperLabel: "$",
|
|
LowerInput: &Input{Rune: '4'},
|
|
UpperInput: &Input{Rune: '$'},
|
|
},
|
|
{
|
|
LowerLabel: "5",
|
|
UpperLabel: "%",
|
|
LowerInput: &Input{Rune: '5'},
|
|
UpperInput: &Input{Rune: '%'},
|
|
},
|
|
{
|
|
LowerLabel: "6",
|
|
UpperLabel: "^",
|
|
LowerInput: &Input{Rune: '6'},
|
|
UpperInput: &Input{Rune: '^'},
|
|
},
|
|
{
|
|
LowerLabel: "7",
|
|
UpperLabel: "&",
|
|
LowerInput: &Input{Rune: '7'},
|
|
UpperInput: &Input{Rune: '&'},
|
|
},
|
|
{
|
|
LowerLabel: "8",
|
|
UpperLabel: "*",
|
|
LowerInput: &Input{Rune: '8'},
|
|
UpperInput: &Input{Rune: '*'},
|
|
},
|
|
{
|
|
LowerLabel: "9",
|
|
UpperLabel: "(",
|
|
LowerInput: &Input{Rune: '9'},
|
|
UpperInput: &Input{Rune: '('},
|
|
},
|
|
{
|
|
LowerLabel: "0",
|
|
UpperLabel: ")",
|
|
LowerInput: &Input{Rune: '0'},
|
|
UpperInput: &Input{Rune: ')'},
|
|
},
|
|
{
|
|
LowerLabel: "-",
|
|
UpperLabel: "_",
|
|
LowerInput: &Input{Rune: '-'},
|
|
UpperInput: &Input{Rune: '_'},
|
|
},
|
|
{
|
|
LowerLabel: "=",
|
|
UpperLabel: "+",
|
|
LowerInput: &Input{Rune: '='},
|
|
UpperInput: &Input{Rune: '+'},
|
|
},
|
|
{
|
|
LowerLabel: "Backspace",
|
|
UpperLabel: "BACKSPACE",
|
|
LowerInput: &Input{Key: ebiten.KeyBackspace},
|
|
UpperInput: &Input{Key: ebiten.KeyBackspace},
|
|
},
|
|
},
|
|
{
|
|
{
|
|
LowerLabel: "q",
|
|
UpperLabel: "Q",
|
|
LowerInput: &Input{Rune: 'q'},
|
|
UpperInput: &Input{Rune: 'Q'},
|
|
},
|
|
{
|
|
LowerLabel: "w",
|
|
UpperLabel: "W",
|
|
LowerInput: &Input{Rune: 'w'},
|
|
UpperInput: &Input{Rune: 'W'},
|
|
},
|
|
{
|
|
LowerLabel: "e",
|
|
UpperLabel: "E",
|
|
LowerInput: &Input{Rune: 'e'},
|
|
UpperInput: &Input{Rune: 'E'},
|
|
},
|
|
{
|
|
LowerLabel: "r",
|
|
UpperLabel: "R",
|
|
LowerInput: &Input{Rune: 'r'},
|
|
UpperInput: &Input{Rune: 'R'},
|
|
},
|
|
{
|
|
LowerLabel: "t",
|
|
UpperLabel: "T",
|
|
LowerInput: &Input{Rune: 't'},
|
|
UpperInput: &Input{Rune: 'T'},
|
|
},
|
|
{
|
|
LowerLabel: "y",
|
|
UpperLabel: "Y",
|
|
LowerInput: &Input{Rune: 'y'},
|
|
UpperInput: &Input{Rune: 'Y'},
|
|
},
|
|
{
|
|
LowerLabel: "u",
|
|
UpperLabel: "U",
|
|
LowerInput: &Input{Rune: 'u'},
|
|
UpperInput: &Input{Rune: 'U'},
|
|
},
|
|
{
|
|
LowerLabel: "i",
|
|
UpperLabel: "I",
|
|
LowerInput: &Input{Rune: 'i'},
|
|
UpperInput: &Input{Rune: 'I'},
|
|
},
|
|
{
|
|
LowerLabel: "o",
|
|
UpperLabel: "O",
|
|
LowerInput: &Input{Rune: 'o'},
|
|
UpperInput: &Input{Rune: 'O'},
|
|
},
|
|
{
|
|
LowerLabel: "p",
|
|
UpperLabel: "P",
|
|
LowerInput: &Input{Rune: 'p'},
|
|
UpperInput: &Input{Rune: 'P'},
|
|
},
|
|
{
|
|
LowerLabel: "[",
|
|
UpperLabel: "{",
|
|
LowerInput: &Input{Rune: '['},
|
|
UpperInput: &Input{Rune: '{'},
|
|
},
|
|
{
|
|
LowerLabel: "]",
|
|
UpperLabel: "}",
|
|
LowerInput: &Input{Rune: ']'},
|
|
UpperInput: &Input{Rune: '}'},
|
|
},
|
|
{
|
|
LowerLabel: "\\",
|
|
UpperLabel: "|",
|
|
LowerInput: &Input{Rune: '\\'},
|
|
UpperInput: &Input{Rune: '|'},
|
|
},
|
|
},
|
|
{
|
|
{
|
|
LowerLabel: "a",
|
|
UpperLabel: "A",
|
|
LowerInput: &Input{Rune: 'a'},
|
|
UpperInput: &Input{Rune: 'A'},
|
|
},
|
|
{
|
|
LowerLabel: "s",
|
|
UpperLabel: "S",
|
|
LowerInput: &Input{Rune: 's'},
|
|
UpperInput: &Input{Rune: 'S'},
|
|
},
|
|
{
|
|
LowerLabel: "d",
|
|
UpperLabel: "D",
|
|
LowerInput: &Input{Rune: 'd'},
|
|
UpperInput: &Input{Rune: 'D'},
|
|
},
|
|
{
|
|
LowerLabel: "f",
|
|
UpperLabel: "F",
|
|
LowerInput: &Input{Rune: 'f'},
|
|
UpperInput: &Input{Rune: 'F'},
|
|
},
|
|
{
|
|
LowerLabel: "g",
|
|
UpperLabel: "G",
|
|
LowerInput: &Input{Rune: 'g'},
|
|
UpperInput: &Input{Rune: 'G'},
|
|
},
|
|
{
|
|
LowerLabel: "h",
|
|
UpperLabel: "H",
|
|
LowerInput: &Input{Rune: 'h'},
|
|
UpperInput: &Input{Rune: 'H'},
|
|
},
|
|
{
|
|
LowerLabel: "j",
|
|
UpperLabel: "J",
|
|
LowerInput: &Input{Rune: 'j'},
|
|
UpperInput: &Input{Rune: 'J'},
|
|
},
|
|
{
|
|
LowerLabel: "k",
|
|
UpperLabel: "K",
|
|
LowerInput: &Input{Rune: 'k'},
|
|
UpperInput: &Input{Rune: 'K'},
|
|
},
|
|
{
|
|
LowerLabel: "l",
|
|
UpperLabel: "L",
|
|
LowerInput: &Input{Rune: 'l'},
|
|
UpperInput: &Input{Rune: 'L'},
|
|
},
|
|
{
|
|
LowerLabel: ";",
|
|
UpperLabel: ":",
|
|
LowerInput: &Input{Rune: ';'},
|
|
UpperInput: &Input{Rune: ':'},
|
|
},
|
|
{
|
|
LowerLabel: `'`,
|
|
UpperLabel: `"`,
|
|
LowerInput: &Input{Rune: '\''},
|
|
UpperInput: &Input{Rune: '"'},
|
|
},
|
|
{
|
|
LowerLabel: "Enter",
|
|
UpperLabel: "ENTER",
|
|
LowerInput: &Input{Key: ebiten.KeyEnter},
|
|
UpperInput: &Input{Key: ebiten.KeyEnter},
|
|
},
|
|
},
|
|
{
|
|
{
|
|
LowerLabel: "Shift",
|
|
UpperLabel: "SHIFT",
|
|
LowerInput: &Input{Key: ebiten.KeyShift},
|
|
UpperInput: &Input{Key: ebiten.KeyShift},
|
|
},
|
|
{
|
|
LowerLabel: "z",
|
|
UpperLabel: "Z",
|
|
LowerInput: &Input{Rune: 'z'},
|
|
UpperInput: &Input{Rune: 'Z'},
|
|
},
|
|
{
|
|
LowerLabel: "x",
|
|
UpperLabel: "X",
|
|
LowerInput: &Input{Rune: 'x'},
|
|
UpperInput: &Input{Rune: 'X'},
|
|
},
|
|
{
|
|
LowerLabel: "c",
|
|
UpperLabel: "C",
|
|
LowerInput: &Input{Rune: 'c'},
|
|
UpperInput: &Input{Rune: 'C'},
|
|
},
|
|
{
|
|
LowerLabel: "v",
|
|
UpperLabel: "V",
|
|
LowerInput: &Input{Rune: 'v'},
|
|
UpperInput: &Input{Rune: 'V'},
|
|
},
|
|
{
|
|
LowerLabel: "b",
|
|
UpperLabel: "B",
|
|
LowerInput: &Input{Rune: 'b'},
|
|
UpperInput: &Input{Rune: 'B'},
|
|
},
|
|
{
|
|
LowerLabel: "n",
|
|
UpperLabel: "N",
|
|
LowerInput: &Input{Rune: 'n'},
|
|
UpperInput: &Input{Rune: 'N'},
|
|
},
|
|
{
|
|
LowerLabel: "m",
|
|
UpperLabel: "M",
|
|
LowerInput: &Input{Rune: 'm'},
|
|
UpperInput: &Input{Rune: 'M'},
|
|
},
|
|
{
|
|
LowerLabel: ",",
|
|
UpperLabel: "<",
|
|
LowerInput: &Input{Rune: ','},
|
|
UpperInput: &Input{Rune: '<'},
|
|
},
|
|
{
|
|
LowerLabel: ".",
|
|
UpperLabel: ">",
|
|
LowerInput: &Input{Rune: '.'},
|
|
UpperInput: &Input{Rune: '>'},
|
|
},
|
|
{
|
|
LowerLabel: "/",
|
|
UpperLabel: "?",
|
|
LowerInput: &Input{Rune: '/'},
|
|
UpperInput: &Input{Rune: '?'},
|
|
},
|
|
},
|
|
{
|
|
{
|
|
LowerLabel: "Space",
|
|
UpperLabel: "SPACE",
|
|
LowerInput: &Input{Rune: ' '},
|
|
UpperInput: &Input{Rune: ' '},
|
|
},
|
|
},
|
|
}
|
|
|
|
// KeysMobileQWERTY is a QWERTY keyboard layout optimized for mobile devices.
|
|
var KeysMobileQWERTY = [][]*Key{
|
|
{
|
|
{
|
|
LowerLabel: "q",
|
|
UpperLabel: "Q",
|
|
LowerInput: &Input{Rune: 'q'},
|
|
UpperInput: &Input{Rune: 'Q'},
|
|
},
|
|
{
|
|
LowerLabel: "w",
|
|
UpperLabel: "W",
|
|
LowerInput: &Input{Rune: 'w'},
|
|
UpperInput: &Input{Rune: 'W'},
|
|
},
|
|
{
|
|
LowerLabel: "e",
|
|
UpperLabel: "E",
|
|
LowerInput: &Input{Rune: 'e'},
|
|
UpperInput: &Input{Rune: 'E'},
|
|
},
|
|
{
|
|
LowerLabel: "r",
|
|
UpperLabel: "R",
|
|
LowerInput: &Input{Rune: 'r'},
|
|
UpperInput: &Input{Rune: 'R'},
|
|
},
|
|
{
|
|
LowerLabel: "t",
|
|
UpperLabel: "T",
|
|
LowerInput: &Input{Rune: 't'},
|
|
UpperInput: &Input{Rune: 'T'},
|
|
},
|
|
{
|
|
LowerLabel: "y",
|
|
UpperLabel: "Y",
|
|
LowerInput: &Input{Rune: 'y'},
|
|
UpperInput: &Input{Rune: 'Y'},
|
|
},
|
|
{
|
|
LowerLabel: "u",
|
|
UpperLabel: "U",
|
|
LowerInput: &Input{Rune: 'u'},
|
|
UpperInput: &Input{Rune: 'U'},
|
|
},
|
|
{
|
|
LowerLabel: "i",
|
|
UpperLabel: "I",
|
|
LowerInput: &Input{Rune: 'i'},
|
|
UpperInput: &Input{Rune: 'I'},
|
|
},
|
|
{
|
|
LowerLabel: "o",
|
|
UpperLabel: "O",
|
|
LowerInput: &Input{Rune: 'o'},
|
|
UpperInput: &Input{Rune: 'O'},
|
|
},
|
|
{
|
|
LowerLabel: "p",
|
|
UpperLabel: "P",
|
|
LowerInput: &Input{Rune: 'p'},
|
|
UpperInput: &Input{Rune: 'P'},
|
|
},
|
|
},
|
|
{
|
|
{
|
|
LowerLabel: "a",
|
|
UpperLabel: "A",
|
|
LowerInput: &Input{Rune: 'a'},
|
|
UpperInput: &Input{Rune: 'A'},
|
|
},
|
|
{
|
|
LowerLabel: "s",
|
|
UpperLabel: "S",
|
|
LowerInput: &Input{Rune: 's'},
|
|
UpperInput: &Input{Rune: 'S'},
|
|
},
|
|
{
|
|
LowerLabel: "d",
|
|
UpperLabel: "D",
|
|
LowerInput: &Input{Rune: 'd'},
|
|
UpperInput: &Input{Rune: 'D'},
|
|
},
|
|
{
|
|
LowerLabel: "f",
|
|
UpperLabel: "F",
|
|
LowerInput: &Input{Rune: 'f'},
|
|
UpperInput: &Input{Rune: 'F'},
|
|
},
|
|
{
|
|
LowerLabel: "g",
|
|
UpperLabel: "G",
|
|
LowerInput: &Input{Rune: 'g'},
|
|
UpperInput: &Input{Rune: 'G'},
|
|
},
|
|
{
|
|
LowerLabel: "h",
|
|
UpperLabel: "H",
|
|
LowerInput: &Input{Rune: 'h'},
|
|
UpperInput: &Input{Rune: 'H'},
|
|
},
|
|
{
|
|
LowerLabel: "j",
|
|
UpperLabel: "J",
|
|
LowerInput: &Input{Rune: 'j'},
|
|
UpperInput: &Input{Rune: 'J'},
|
|
},
|
|
{
|
|
LowerLabel: "k",
|
|
UpperLabel: "K",
|
|
LowerInput: &Input{Rune: 'k'},
|
|
UpperInput: &Input{Rune: 'K'},
|
|
},
|
|
{
|
|
LowerLabel: "l",
|
|
UpperLabel: "L",
|
|
LowerInput: &Input{Rune: 'l'},
|
|
UpperInput: &Input{Rune: 'L'},
|
|
},
|
|
},
|
|
{
|
|
{
|
|
LowerLabel: "Shift",
|
|
UpperLabel: "SHIFT",
|
|
LowerInput: &Input{Key: ebiten.KeyShift},
|
|
UpperInput: &Input{Key: ebiten.KeyShift},
|
|
},
|
|
{
|
|
LowerLabel: "z",
|
|
UpperLabel: "Z",
|
|
LowerInput: &Input{Rune: 'z'},
|
|
UpperInput: &Input{Rune: 'Z'},
|
|
},
|
|
{
|
|
LowerLabel: "x",
|
|
UpperLabel: "X",
|
|
LowerInput: &Input{Rune: 'x'},
|
|
UpperInput: &Input{Rune: 'X'},
|
|
},
|
|
{
|
|
LowerLabel: "c",
|
|
UpperLabel: "C",
|
|
LowerInput: &Input{Rune: 'c'},
|
|
UpperInput: &Input{Rune: 'C'},
|
|
},
|
|
{
|
|
LowerLabel: "v",
|
|
UpperLabel: "V",
|
|
LowerInput: &Input{Rune: 'v'},
|
|
UpperInput: &Input{Rune: 'V'},
|
|
},
|
|
{
|
|
LowerLabel: "b",
|
|
UpperLabel: "B",
|
|
LowerInput: &Input{Rune: 'b'},
|
|
UpperInput: &Input{Rune: 'B'},
|
|
},
|
|
{
|
|
LowerLabel: "n",
|
|
UpperLabel: "N",
|
|
LowerInput: &Input{Rune: 'n'},
|
|
UpperInput: &Input{Rune: 'N'},
|
|
},
|
|
{
|
|
LowerLabel: "m",
|
|
UpperLabel: "M",
|
|
LowerInput: &Input{Rune: 'm'},
|
|
UpperInput: &Input{Rune: 'M'},
|
|
},
|
|
{
|
|
LowerLabel: "Backspace",
|
|
UpperLabel: "BACKSPACE",
|
|
LowerInput: &Input{Key: ebiten.KeyBackspace},
|
|
UpperInput: &Input{Key: ebiten.KeyBackspace},
|
|
},
|
|
},
|
|
{
|
|
{
|
|
LowerLabel: "Symbols",
|
|
UpperLabel: "SYMBOLS",
|
|
LowerInput: &Input{Key: KeyToggleExtended},
|
|
UpperInput: &Input{Key: KeyToggleExtended},
|
|
},
|
|
{
|
|
LowerLabel: "?",
|
|
UpperLabel: "!",
|
|
LowerInput: &Input{Rune: '?'},
|
|
UpperInput: &Input{Rune: '!'},
|
|
},
|
|
{
|
|
LowerLabel: "Space",
|
|
UpperLabel: "SPACE",
|
|
LowerInput: &Input{Rune: ' '},
|
|
UpperInput: &Input{Rune: ' '},
|
|
Wide: true,
|
|
},
|
|
{
|
|
LowerLabel: ".",
|
|
UpperLabel: ",",
|
|
LowerInput: &Input{Rune: '.'},
|
|
UpperInput: &Input{Rune: ','},
|
|
},
|
|
{
|
|
LowerLabel: "Enter",
|
|
UpperLabel: "ENTER",
|
|
LowerInput: &Input{Key: ebiten.KeyEnter},
|
|
UpperInput: &Input{Key: ebiten.KeyEnter},
|
|
},
|
|
},
|
|
}
|
|
|
|
// KeysMobileSymbols is a symbols keyboard layout optimized for mobile devices.
|
|
var KeysMobileSymbols = [][]*Key{
|
|
{
|
|
{
|
|
LowerLabel: "1",
|
|
UpperLabel: "1",
|
|
LowerInput: &Input{Rune: '1'},
|
|
UpperInput: &Input{Rune: '1'},
|
|
},
|
|
{
|
|
LowerLabel: "2",
|
|
UpperLabel: "2",
|
|
LowerInput: &Input{Rune: '2'},
|
|
UpperInput: &Input{Rune: '2'},
|
|
},
|
|
{
|
|
LowerLabel: "3",
|
|
UpperLabel: "3",
|
|
LowerInput: &Input{Rune: '3'},
|
|
UpperInput: &Input{Rune: '3'},
|
|
},
|
|
{
|
|
LowerLabel: "4",
|
|
UpperLabel: "4",
|
|
LowerInput: &Input{Rune: '4'},
|
|
UpperInput: &Input{Rune: '4'},
|
|
},
|
|
{
|
|
LowerLabel: "5",
|
|
UpperLabel: "5",
|
|
LowerInput: &Input{Rune: '5'},
|
|
UpperInput: &Input{Rune: '5'},
|
|
},
|
|
{
|
|
LowerLabel: "6",
|
|
UpperLabel: "6",
|
|
LowerInput: &Input{Rune: '6'},
|
|
UpperInput: &Input{Rune: '6'},
|
|
},
|
|
{
|
|
LowerLabel: "7",
|
|
UpperLabel: "7",
|
|
LowerInput: &Input{Rune: '7'},
|
|
UpperInput: &Input{Rune: '7'},
|
|
},
|
|
{
|
|
LowerLabel: "8",
|
|
UpperLabel: "8",
|
|
LowerInput: &Input{Rune: '8'},
|
|
UpperInput: &Input{Rune: '8'},
|
|
},
|
|
{
|
|
LowerLabel: "9",
|
|
UpperLabel: "9",
|
|
LowerInput: &Input{Rune: '9'},
|
|
UpperInput: &Input{Rune: '9'},
|
|
},
|
|
{
|
|
LowerLabel: "0",
|
|
UpperLabel: "0",
|
|
LowerInput: &Input{Rune: '0'},
|
|
UpperInput: &Input{Rune: '0'},
|
|
},
|
|
},
|
|
{
|
|
{
|
|
LowerLabel: "<",
|
|
UpperLabel: "<",
|
|
LowerInput: &Input{Rune: '<'},
|
|
UpperInput: &Input{Rune: '<'},
|
|
},
|
|
{
|
|
LowerLabel: ">",
|
|
UpperLabel: ">",
|
|
LowerInput: &Input{Rune: '>'},
|
|
UpperInput: &Input{Rune: '>'},
|
|
},
|
|
{
|
|
LowerLabel: "[",
|
|
UpperLabel: "[",
|
|
LowerInput: &Input{Rune: '['},
|
|
UpperInput: &Input{Rune: '['},
|
|
},
|
|
{
|
|
LowerLabel: "]",
|
|
UpperLabel: "]",
|
|
LowerInput: &Input{Rune: ']'},
|
|
UpperInput: &Input{Rune: ']'},
|
|
},
|
|
{
|
|
LowerLabel: "{",
|
|
UpperLabel: "{",
|
|
LowerInput: &Input{Rune: '{'},
|
|
UpperInput: &Input{Rune: '{'},
|
|
},
|
|
{
|
|
LowerLabel: "}",
|
|
UpperLabel: "}",
|
|
LowerInput: &Input{Rune: '}'},
|
|
UpperInput: &Input{Rune: '}'},
|
|
},
|
|
{
|
|
LowerLabel: "(",
|
|
UpperLabel: "(",
|
|
LowerInput: &Input{Rune: '('},
|
|
UpperInput: &Input{Rune: '('},
|
|
},
|
|
{
|
|
LowerLabel: ")",
|
|
UpperLabel: ")",
|
|
LowerInput: &Input{Rune: ')'},
|
|
UpperInput: &Input{Rune: ')'},
|
|
},
|
|
{
|
|
LowerLabel: "-",
|
|
UpperLabel: "-",
|
|
LowerInput: &Input{Rune: '-'},
|
|
UpperInput: &Input{Rune: '-'},
|
|
},
|
|
{
|
|
LowerLabel: "+",
|
|
UpperLabel: "+",
|
|
LowerInput: &Input{Rune: '+'},
|
|
UpperInput: &Input{Rune: '+'},
|
|
},
|
|
},
|
|
{
|
|
{
|
|
LowerLabel: "@",
|
|
UpperLabel: "@",
|
|
LowerInput: &Input{Rune: '@'},
|
|
UpperInput: &Input{Rune: '@'},
|
|
},
|
|
{
|
|
LowerLabel: "#",
|
|
UpperLabel: "#",
|
|
LowerInput: &Input{Rune: '#'},
|
|
UpperInput: &Input{Rune: '#'},
|
|
},
|
|
{
|
|
LowerLabel: "$",
|
|
UpperLabel: "$",
|
|
LowerInput: &Input{Rune: '$'},
|
|
UpperInput: &Input{Rune: '$'},
|
|
},
|
|
{
|
|
LowerLabel: "%",
|
|
UpperLabel: "%",
|
|
LowerInput: &Input{Rune: '%'},
|
|
UpperInput: &Input{Rune: '%'},
|
|
},
|
|
{
|
|
LowerLabel: "^",
|
|
UpperLabel: "^",
|
|
LowerInput: &Input{Rune: '^'},
|
|
UpperInput: &Input{Rune: '^'},
|
|
},
|
|
{
|
|
LowerLabel: "&",
|
|
UpperLabel: "&",
|
|
LowerInput: &Input{Rune: '&'},
|
|
UpperInput: &Input{Rune: '&'},
|
|
},
|
|
{
|
|
LowerLabel: "*",
|
|
UpperLabel: "*",
|
|
LowerInput: &Input{Rune: '*'},
|
|
UpperInput: &Input{Rune: '*'},
|
|
},
|
|
{
|
|
LowerLabel: "=",
|
|
UpperLabel: "=",
|
|
LowerInput: &Input{Rune: '='},
|
|
UpperInput: &Input{Rune: '='},
|
|
},
|
|
{
|
|
LowerLabel: "|",
|
|
UpperLabel: "|",
|
|
LowerInput: &Input{Rune: '|'},
|
|
UpperInput: &Input{Rune: '|'},
|
|
},
|
|
{
|
|
LowerLabel: "_",
|
|
UpperLabel: "_",
|
|
LowerInput: &Input{Rune: '_'},
|
|
UpperInput: &Input{Rune: '_'},
|
|
},
|
|
},
|
|
{
|
|
{
|
|
LowerLabel: "\\",
|
|
UpperLabel: "\\",
|
|
LowerInput: &Input{Rune: '\\'},
|
|
UpperInput: &Input{Rune: '\\'},
|
|
},
|
|
{
|
|
LowerLabel: "/",
|
|
UpperLabel: "/",
|
|
LowerInput: &Input{Rune: '/'},
|
|
UpperInput: &Input{Rune: '/'},
|
|
},
|
|
{
|
|
LowerLabel: "'",
|
|
UpperLabel: "'",
|
|
LowerInput: &Input{Rune: '\''},
|
|
UpperInput: &Input{Rune: '\''},
|
|
},
|
|
{
|
|
LowerLabel: "\"",
|
|
UpperLabel: "\"",
|
|
LowerInput: &Input{Rune: '"'},
|
|
UpperInput: &Input{Rune: '"'},
|
|
},
|
|
{
|
|
LowerLabel: ";",
|
|
UpperLabel: ";",
|
|
LowerInput: &Input{Rune: ';'},
|
|
UpperInput: &Input{Rune: ';'},
|
|
},
|
|
{
|
|
LowerLabel: ":",
|
|
UpperLabel: ":",
|
|
LowerInput: &Input{Rune: ':'},
|
|
UpperInput: &Input{Rune: ':'},
|
|
},
|
|
{
|
|
LowerLabel: "!",
|
|
UpperLabel: "!",
|
|
LowerInput: &Input{Rune: '!'},
|
|
UpperInput: &Input{Rune: '!'},
|
|
},
|
|
{
|
|
LowerLabel: "?",
|
|
UpperLabel: "?",
|
|
LowerInput: &Input{Rune: '?'},
|
|
UpperInput: &Input{Rune: '?'},
|
|
},
|
|
{
|
|
LowerLabel: "Backspace",
|
|
UpperLabel: "BACKSPACE",
|
|
LowerInput: &Input{Key: ebiten.KeyBackspace},
|
|
UpperInput: &Input{Key: ebiten.KeyBackspace},
|
|
},
|
|
},
|
|
{
|
|
{
|
|
LowerLabel: "Symbols",
|
|
UpperLabel: "SYMBOLS",
|
|
LowerInput: &Input{Key: KeyToggleExtended},
|
|
UpperInput: &Input{Key: KeyToggleExtended},
|
|
},
|
|
{
|
|
LowerLabel: ",",
|
|
UpperLabel: ",",
|
|
LowerInput: &Input{Rune: ','},
|
|
UpperInput: &Input{Rune: ','},
|
|
},
|
|
{
|
|
LowerLabel: "Space",
|
|
UpperLabel: "SPACE",
|
|
LowerInput: &Input{Rune: ' '},
|
|
UpperInput: &Input{Rune: ' '},
|
|
Wide: true,
|
|
},
|
|
{
|
|
LowerLabel: ".",
|
|
UpperLabel: ".",
|
|
LowerInput: &Input{Rune: '.'},
|
|
UpperInput: &Input{Rune: '.'},
|
|
},
|
|
{
|
|
LowerLabel: "Enter",
|
|
UpperLabel: "ENTER",
|
|
LowerInput: &Input{Key: ebiten.KeyEnter},
|
|
UpperInput: &Input{Key: ebiten.KeyEnter},
|
|
},
|
|
},
|
|
}
|
|
|
|
var allKeys = []ebiten.Key{
|
|
ebiten.KeyA,
|
|
ebiten.KeyB,
|
|
ebiten.KeyC,
|
|
ebiten.KeyD,
|
|
ebiten.KeyE,
|
|
ebiten.KeyF,
|
|
ebiten.KeyG,
|
|
ebiten.KeyH,
|
|
ebiten.KeyI,
|
|
ebiten.KeyJ,
|
|
ebiten.KeyK,
|
|
ebiten.KeyL,
|
|
ebiten.KeyM,
|
|
ebiten.KeyN,
|
|
ebiten.KeyO,
|
|
ebiten.KeyP,
|
|
ebiten.KeyQ,
|
|
ebiten.KeyR,
|
|
ebiten.KeyS,
|
|
ebiten.KeyT,
|
|
ebiten.KeyU,
|
|
ebiten.KeyV,
|
|
ebiten.KeyW,
|
|
ebiten.KeyX,
|
|
ebiten.KeyY,
|
|
ebiten.KeyZ,
|
|
ebiten.KeyAltLeft,
|
|
ebiten.KeyAltRight,
|
|
ebiten.KeyArrowDown,
|
|
ebiten.KeyArrowLeft,
|
|
ebiten.KeyArrowRight,
|
|
ebiten.KeyArrowUp,
|
|
ebiten.KeyBackquote,
|
|
ebiten.KeyBackslash,
|
|
ebiten.KeyBackspace,
|
|
ebiten.KeyBracketLeft,
|
|
ebiten.KeyBracketRight,
|
|
ebiten.KeyCapsLock,
|
|
ebiten.KeyComma,
|
|
ebiten.KeyContextMenu,
|
|
ebiten.KeyControlLeft,
|
|
ebiten.KeyControlRight,
|
|
ebiten.KeyDelete,
|
|
ebiten.KeyDigit0,
|
|
ebiten.KeyDigit1,
|
|
ebiten.KeyDigit2,
|
|
ebiten.KeyDigit3,
|
|
ebiten.KeyDigit4,
|
|
ebiten.KeyDigit5,
|
|
ebiten.KeyDigit6,
|
|
ebiten.KeyDigit7,
|
|
ebiten.KeyDigit8,
|
|
ebiten.KeyDigit9,
|
|
ebiten.KeyEnd,
|
|
ebiten.KeyEnter,
|
|
ebiten.KeyEqual,
|
|
ebiten.KeyEscape,
|
|
ebiten.KeyF1,
|
|
ebiten.KeyF2,
|
|
ebiten.KeyF3,
|
|
ebiten.KeyF4,
|
|
ebiten.KeyF5,
|
|
ebiten.KeyF6,
|
|
ebiten.KeyF7,
|
|
ebiten.KeyF8,
|
|
ebiten.KeyF9,
|
|
ebiten.KeyF10,
|
|
ebiten.KeyF11,
|
|
ebiten.KeyF12,
|
|
ebiten.KeyHome,
|
|
ebiten.KeyInsert,
|
|
ebiten.KeyMetaLeft,
|
|
ebiten.KeyMetaRight,
|
|
ebiten.KeyMinus,
|
|
ebiten.KeyNumLock,
|
|
ebiten.KeyNumpad0,
|
|
ebiten.KeyNumpad1,
|
|
ebiten.KeyNumpad2,
|
|
ebiten.KeyNumpad3,
|
|
ebiten.KeyNumpad4,
|
|
ebiten.KeyNumpad5,
|
|
ebiten.KeyNumpad6,
|
|
ebiten.KeyNumpad7,
|
|
ebiten.KeyNumpad8,
|
|
ebiten.KeyNumpad9,
|
|
ebiten.KeyNumpadAdd,
|
|
ebiten.KeyNumpadDecimal,
|
|
ebiten.KeyNumpadDivide,
|
|
ebiten.KeyNumpadEnter,
|
|
ebiten.KeyNumpadEqual,
|
|
ebiten.KeyNumpadMultiply,
|
|
ebiten.KeyNumpadSubtract,
|
|
ebiten.KeyPageDown,
|
|
ebiten.KeyPageUp,
|
|
ebiten.KeyPause,
|
|
ebiten.KeyPeriod,
|
|
ebiten.KeyPrintScreen,
|
|
ebiten.KeyQuote,
|
|
ebiten.KeyScrollLock,
|
|
ebiten.KeySemicolon,
|
|
ebiten.KeyShiftLeft,
|
|
ebiten.KeyShiftRight,
|
|
ebiten.KeySlash,
|
|
ebiten.KeySpace,
|
|
ebiten.KeyTab,
|
|
ebiten.KeyAlt,
|
|
ebiten.KeyControl,
|
|
ebiten.KeyShift,
|
|
ebiten.KeyMeta,
|
|
ebiten.KeyMax,
|
|
}
|