Best Rod code snippet using input.AddKey
cui_actions.go
Source:cui_actions.go
1package simple2import (3 "encoding/json"4 "fmt"5 "io/ioutil"6 "strings"7 "sconsify/infrastructure"8 "sconsify/sconsify"9 "github.com/jroimartin/gocui"10)11type keyHandler func(*gocui.Gui, *gocui.View) error12type KeyMapping struct {13 key interface{}14 mod gocui.Modifier15 h keyHandler16 view string17}18type Keyboard struct {19 ConfiguredKeys map[string][]string20 UsedFunctions map[string]bool21 SequentialKeys map[string]keyHandler22 Keys []*KeyMapping23}24type KeyEntry struct {25 Key string26 Command string27}28const (29 PauseTrack = "PauseTrack"30 ShuffleMode = "ShuffleMode"31 ShuffleAllMode = "ShuffleAllMode"32 NextTrack = "NextTrack"33 ReplayTrack = "ReplayTrack"34 Search = "Search"35 SearchView = "SearchView"36 RepeatSearchView = "RepeatSearchView"37 Quit = "Quit"38 QueueTrack = "QueueTrack"39 QueuePlaylist = "QueuePlaylist"40 RepeatPlayingTrack = "RepeatPlayingTrack"41 RemoveTrack = "RemoveTrack"42 RemoveAllTracks = "RemoveAllTracks"43 GoToFirstLine = "GoToFirstLine"44 GoToLastLine = "GoToLastLine"45 PlaySelectedTrack = "PlaySelectedTrack"46 Up = "Up"47 Down = "Down"48 Left = "Left"49 Right = "Right"50 OpenCloseFolder = "OpenCloseFolder"51 ArtistAlbums = "ArtistAlbums"52 CreatePlaylist = "CreatePlaylist"53)54var multipleKeysBuffer []rune55var multipleKeysNumber int56var keyboard *Keyboard57var actionBeingExecuted string58var currentView string59var lastQuery string60func (keyboard *Keyboard) defaultValues() {61 if !keyboard.UsedFunctions[PauseTrack] {62 keyboard.addKey("p", PauseTrack)63 }64 if !keyboard.UsedFunctions[ShuffleMode] {65 keyboard.addKey("s", ShuffleMode)66 }67 if !keyboard.UsedFunctions[ShuffleAllMode] {68 keyboard.addKey("S", ShuffleAllMode)69 }70 if !keyboard.UsedFunctions[NextTrack] {71 keyboard.addKey(">", NextTrack)72 }73 if !keyboard.UsedFunctions[ReplayTrack] {74 keyboard.addKey("<", ReplayTrack)75 }76 if !keyboard.UsedFunctions[Search] {77 keyboard.addKey("/", Search)78 }79 if !keyboard.UsedFunctions[SearchView] {80 keyboard.addKey("\\", SearchView)81 }82 if !keyboard.UsedFunctions[RepeatSearchView] {83 keyboard.addKey("n", RepeatSearchView)84 }85 if !keyboard.UsedFunctions[Quit] {86 keyboard.addKey("q", Quit)87 }88 if !keyboard.UsedFunctions[QueueTrack] {89 keyboard.addKey("u", QueueTrack)90 }91 if !keyboard.UsedFunctions[QueuePlaylist] {92 keyboard.addKey("u", QueuePlaylist)93 }94 if !keyboard.UsedFunctions[RepeatPlayingTrack] {95 keyboard.addKey("r", RepeatPlayingTrack)96 }97 if !keyboard.UsedFunctions[RemoveTrack] {98 keyboard.addKey("dd", RemoveTrack)99 }100 if !keyboard.UsedFunctions[RemoveAllTracks] {101 keyboard.addKey("D", RemoveAllTracks)102 }103 if !keyboard.UsedFunctions[GoToFirstLine] {104 keyboard.addKey("gg", GoToFirstLine)105 }106 if !keyboard.UsedFunctions[GoToLastLine] {107 keyboard.addKey("G", GoToLastLine)108 }109 if !keyboard.UsedFunctions[PlaySelectedTrack] {110 keyboard.addKey("<space>", PlaySelectedTrack)111 keyboard.addKey("<enter>", PlaySelectedTrack)112 }113 if !keyboard.UsedFunctions[Up] {114 keyboard.addKey("<up>", Up)115 keyboard.addKey("k", Up)116 }117 if !keyboard.UsedFunctions[Down] {118 keyboard.addKey("<down>", Down)119 keyboard.addKey("j", Down)120 }121 if !keyboard.UsedFunctions[Left] {122 keyboard.addKey("<left>", Left)123 keyboard.addKey("h", Left)124 }125 if !keyboard.UsedFunctions[Right] {126 keyboard.addKey("<right>", Right)127 keyboard.addKey("l", Right)128 }129 if !keyboard.UsedFunctions[OpenCloseFolder] {130 keyboard.addKey("<space>", OpenCloseFolder)131 }132 if !keyboard.UsedFunctions[ArtistAlbums] {133 keyboard.addKey("i", ArtistAlbums)134 }135 if !keyboard.UsedFunctions[CreatePlaylist] {136 keyboard.addKey("c", CreatePlaylist)137 }138}139func (keyboard *Keyboard) loadKeyFunctions() {140 if fileLocation := infrastructure.GetKeyFunctionsFileLocation(); fileLocation != "" {141 if b, err := ioutil.ReadFile(fileLocation); err == nil {142 fileContent := make([]KeyEntry, 0)143 if err := json.Unmarshal(b, &fileContent); err == nil {144 for _, keyEntry := range fileContent {145 keyboard.addKey(keyEntry.Key, keyEntry.Command)146 }147 }148 }149 }150}151func (keyboard *Keyboard) addKey(key string, command string) {152 if keyboard.ConfiguredKeys[key] == nil {153 keyboard.ConfiguredKeys[key] = make([]string, 0)154 }155 keyboard.ConfiguredKeys[key] = append(keyboard.ConfiguredKeys[key], command)156 keyboard.UsedFunctions[command] = true157}158func (keyboard *Keyboard) configureKey(handler keyHandler, command string, view string) {159 for key, commands := range keyboard.ConfiguredKeys {160 switch key {161 case "<enter>":162 key = string(gocui.KeyEnter)163 case "<space>":164 key = string(gocui.KeySpace)165 case "<up>":166 key = string(gocui.KeyArrowUp)167 case "<down>":168 key = string(gocui.KeyArrowDown)169 case "<left>":170 key = string(gocui.KeyArrowLeft)171 case "<right>":172 key = string(gocui.KeyArrowRight)173 }174 for _, c := range commands {175 if c == command {176 if view == "" {177 keyboard.SequentialKeys[PlaylistsView+" "+key] = handler178 keyboard.SequentialKeys[QueueView+" "+key] = handler179 keyboard.SequentialKeys[TracksView+" "+key] = handler180 } else {181 keyboard.SequentialKeys[view+" "+key] = handler182 }183 }184 }185 }186}187func keybindings() error {188 keyboard = &Keyboard{189 ConfiguredKeys: make(map[string][]string),190 UsedFunctions: make(map[string]bool),191 Keys: make([]*KeyMapping, 0),192 SequentialKeys: make(map[string]keyHandler)}193 multipleKeysBuffer = make([]rune, 0, 0)194 keyboard.loadKeyFunctions()195 keyboard.defaultValues()196 for _, view := range []string{TracksView, PlaylistsView, QueueView} {197 for i := 'a'; i <= 'z'; i++ {198 key := i199 addKeyBinding(&keyboard.Keys, newKeyMapping(i, view, func(g *gocui.Gui, v *gocui.View) error {200 return keyPressed(key, g, v)201 }))202 }203 for i := 'A'; i <= 'Z'; i++ {204 key := i205 addKeyBinding(&keyboard.Keys, newKeyMapping(i, view, func(g *gocui.Gui, v *gocui.View) error {206 return keyPressed(key, g, v)207 }))208 }209 for _, value := range []rune{'>', '<', '/', '\\'} {210 key := value211 addKeyBinding(&keyboard.Keys, newKeyMapping(key, view, func(g *gocui.Gui, v *gocui.View) error {212 return keyPressed(key, g, v)213 }))214 }215 var specialKeys = []gocui.Key{216 gocui.KeySpace, gocui.KeyArrowUp,217 gocui.KeyArrowDown, gocui.KeyArrowLeft,218 gocui.KeyArrowRight, gocui.KeyEnter}219 for _, value := range specialKeys {220 key := value221 addKeyBinding(&keyboard.Keys, newKeyMapping(key, view, func(g *gocui.Gui, v *gocui.View) error {222 return keyPressed(rune(key), g, v)223 }))224 }225 keyboard.configureKey(pauseTrackCommand, PauseTrack, view)226 keyboard.configureKey(setShuffleMode, ShuffleMode, view)227 keyboard.configureKey(setShuffleAllMode, ShuffleAllMode, view)228 keyboard.configureKey(nextTrackCommand, NextTrack, view)229 keyboard.configureKey(replayTrackCommand, ReplayTrack, view)230 keyboard.configureKey(enableSearchInputCommand, Search, view)231 keyboard.configureKey(enableSearchViewInputCommand, SearchView, view)232 keyboard.configureKey(enableRepeatSearchViewInputCommand, RepeatSearchView, view)233 keyboard.configureKey(repeatPlayingTrackCommand, RepeatPlayingTrack, view)234 keyboard.configureKey(quit, Quit, view)235 keyboard.configureKey(goToFirstLineCommand, GoToFirstLine, view)236 keyboard.configureKey(goToLastLineCommand, GoToLastLine, view)237 addKeyBinding(&keyboard.Keys, newKeyMapping(gocui.KeyHome, view, cursorHome))238 addKeyBinding(&keyboard.Keys, newKeyMapping(gocui.KeyEnd, view, cursorEnd))239 addKeyBinding(&keyboard.Keys, newKeyMapping(gocui.KeyPgup, view, cursorPgup))240 addKeyBinding(&keyboard.Keys, newKeyMapping(gocui.KeyPgdn, view, cursorPgdn))241 keyboard.configureKey(cursorUp, Up, view)242 keyboard.configureKey(cursorDown, Down, view)243 keyboard.configureKey(removeTrackCommand, RemoveTrack, view)244 keyboard.configureKey(removeAllTracksCommand, RemoveAllTracks, view)245 // numbers246 for i := 0; i < 10; i++ {247 numberCopy := i248 addKeyBinding(&keyboard.Keys, newKeyMapping(rune(i+48), view,249 func(g *gocui.Gui, v *gocui.View) error {250 return multipleKeysNumberPressed(numberCopy)251 }))252 }253 }254 keyboard.configureKey(queueTrackCommand, QueueTrack, TracksView)255 keyboard.configureKey(queuePlaylistCommand, QueuePlaylist, PlaylistsView)256 keyboard.configureKey(playSelectedTrack, PlaySelectedTrack, TracksView)257 addKeyBinding(&keyboard.Keys, newKeyMapping(gocui.KeyEnter, StatusView, executeAction))258 keyboard.configureKey(mainNextViewLeft, Left, TracksView)259 keyboard.configureKey(nextView, Left, QueueView)260 keyboard.configureKey(nextView, Right, PlaylistsView)261 keyboard.configureKey(mainNextViewRight, Right, TracksView)262 keyboard.configureKey(openCloseFolderCommand, OpenCloseFolder, PlaylistsView)263 keyboard.configureKey(artistAlbums, ArtistAlbums, TracksView)264 addKeyBinding(&keyboard.Keys, newKeyMapping(gocui.KeyCtrlC, "", quit))265 keyboard.configureKey(enableCreatePlaylistCommand, CreatePlaylist, QueueView)266 for _, key := range keyboard.Keys {267 // it needs to copy the key because closures copy var references and we don't268 // want to execute always the last action269 keyCopy := key270 if err := gui.g.SetKeybinding(key.view, key.key, key.mod,271 func(g *gocui.Gui, v *gocui.View) error {272 return keyCopy.h(g, v)273 }); err != nil {274 return err275 }276 }277 return nil278}279func addKeyBinding(keys *[]*KeyMapping, key *KeyMapping) {280 *keys = append(*keys, key)281}282func newKeyMapping(key interface{}, view string, h keyHandler) *KeyMapping {283 return newModifiedKeyMapping(gocui.ModNone, key, view, h)284}285func newModifiedKeyMapping(mod gocui.Modifier, key interface{}, view string, h keyHandler) *KeyMapping {286 return &KeyMapping{mod: mod, key: key, h: h, view: view}287}288func keyPressed(key rune, g *gocui.Gui, v *gocui.View) error {289 multipleKeysBuffer = append(multipleKeysBuffer, key)290 var keyCombination string291 if len(multipleKeysBuffer) == 1 {292 keyCombination = string(multipleKeysBuffer[0])293 } else {294 keyCombination = string(multipleKeysBuffer[0]) + string(multipleKeysBuffer[1])295 }296 if handler := keyboard.SequentialKeys[v.Name()+" "+keyCombination]; handler != nil {297 multipleKeysBuffer = make([]rune, 0, 0)298 err := handler(g, v)299 multipleKeysNumber = 0300 return err301 }302 if len(multipleKeysBuffer) >= 2 {303 key1 := multipleKeysBuffer[1]304 multipleKeysBuffer = make([]rune, 0, 0)305 return keyPressed(rune(key1), g, v)306 }307 return nil308}309func multipleKeysNumberPressed(pressedNumber int) error {310 if multipleKeysNumber == 0 {311 multipleKeysNumber = pressedNumber312 } else {313 multipleKeysNumber = multipleKeysNumber*10 + pressedNumber314 }315 return nil316}317func playSelectedTrack(g *gocui.Gui, v *gocui.View) error {318 player.Play()319 return nil320}321func pauseTrackCommand(g *gocui.Gui, v *gocui.View) error {322 player.Pause()323 return nil324}325func setShuffleMode(g *gocui.Gui, v *gocui.View) error {326 playlists.InvertMode(sconsify.ShuffleMode)327 gui.updateCurrentStatus()328 return nil329}330func setShuffleAllMode(g *gocui.Gui, v *gocui.View) error {331 playlists.InvertMode(sconsify.ShuffleAllMode)332 gui.updateCurrentStatus()333 return nil334}335func nextTrackCommand(g *gocui.Gui, v *gocui.View) error {336 gui.playNext()337 return nil338}339func replayTrackCommand(g *gocui.Gui, v *gocui.View) error {340 gui.replay()341 return nil342}343func queueTrackCommand(g *gocui.Gui, v *gocui.View) error {344 if playlist, trackIndex := gui.getSelectedPlaylistAndTrack(); playlist != nil {345 for i := 1; i <= getOffsetFromTypedNumbers(); i++ {346 track := playlist.Track(trackIndex)347 if queue.Add(track) != nil {348 fmt.Fprintf(gui.queueView, "%v\n", track.GetTitle())349 }350 }351 }352 return nil353}354func openCloseFolderCommand(g *gocui.Gui, v *gocui.View) error {355 if playlist := gui.getSelectedPlaylist(); playlist != nil {356 if playlist.IsFolder() {357 playlist.InvertOpenClose()358 gui.updatePlaylistsView()359 }360 }361 return nil362}363func artistAlbums(g *gocui.Gui, v *gocui.View) error {364 if playlist, trackIndex := gui.getSelectedPlaylistAndTrack(); playlist != nil {365 track := playlist.Track(trackIndex)366 publisher.GetArtistAlbums(track.Artist)367 }368 return nil369}370func repeatPlayingTrackCommand(g *gocui.Gui, v *gocui.View) error {371 if gui.PlayingTrack != nil {372 for i := 1; i <= getOffsetFromTypedNumbers(); i++ {373 queue.Insert(gui.PlayingTrack)374 gui.updateQueueView()375 }376 }377 return nil378}379func queuePlaylistCommand(g *gocui.Gui, v *gocui.View) error {380 if playlist, _ := gui.getSelectedPlaylistAndTrack(); playlist != nil {381 for i := 1; i <= getOffsetFromTypedNumbers(); i++ {382 for i := 0; i < playlist.Tracks(); i++ {383 track := playlist.Track(i)384 if !addToQueue(track) {385 return nil386 }387 }388 }389 }390 return nil391}392func removeAllTracksCommand(g *gocui.Gui, v *gocui.View) error {393 switch v.Name() {394 case PlaylistsView:395 case TracksView:396 if playlist, index := gui.getSelectedPlaylistAndTrack(); index > -1 {397 playlist.RemoveAllTracks()398 gui.updateTracksView()399 return gui.enableSideView()400 }401 case QueueView:402 gui.clearQueueView()403 return gui.enableTracksView()404 }405 return nil406}407func removeTrackCommand(g *gocui.Gui, v *gocui.View) error {408 switch v.Name() {409 case PlaylistsView:410 if playlist := gui.getSelectedPlaylist(); playlist != nil {411 playlists.Remove(playlist.Name())412 gui.updatePlaylistsView()413 gui.updateTracksView()414 }415 case TracksView:416 if playlist, index := gui.getSelectedPlaylistAndTrack(); index > -1 {417 for i := 1; i <= getOffsetFromTypedNumbers(); i++ {418 playlist.RemoveTrack(index)419 }420 gui.updateTracksView()421 goTo(g, v, index+1)422 }423 case QueueView:424 if index := gui.getQueueSelectedTrackIndex(); index > -1 {425 for i := 1; i <= getOffsetFromTypedNumbers(); i++ {426 if queue.Remove(index) != nil {427 continue428 }429 }430 gui.updateQueueView()431 }432 }433 return nil434}435func enableSearchViewInputCommand(g *gocui.Gui, v *gocui.View) error {436 gui.clearStatusView()437 gui.statusView.Editable = true438 currentView = v.Name()439 gui.g.SetCurrentView(StatusView)440 actionBeingExecuted = SearchView441 return nil442}443func enableRepeatSearchViewInputCommand(g *gocui.Gui, v *gocui.View) error {444 executeSearchView(lastQuery)445 return nil446}447func searchViewCommand(g *gocui.Gui, v *gocui.View) error {448 if query := getTypedCommand(); query != "" {449 executeSearchView(query)450 lastQuery = query451 }452 gui.clearStatusView()453 gui.statusView.Editable = false454 gui.updateCurrentStatus()455 return nil456}457func executeSearchView(query string) {458 if currentView == PlaylistsView {459 gui.enableSideView()460 currentPosition := 0461 selectedPlaylist := gui.getSelectedPlaylist()462 if selectedPlaylist != nil {463 currentPosition = selectedPlaylist.Position464 }465 playlist := playlists.Find(query, currentPosition)466 if playlist != nil {467 goTo(gui.g, gui.playlistsView, playlist.Position)468 }469 } else if currentView == QueueView {470 gui.enableQueueView()471 } else if currentView == TracksView {472 gui.enableTracksView()473 playlist, trackIndex := gui.getSelectedPlaylistAndTrack()474 trackIndex++475 if playlist != nil {476 trackIndex := playlist.FindTrackIndex(query, trackIndex)477 if trackIndex > -1 {478 goTo(gui.g, gui.tracksView, trackIndex + 1)479 }480 }481 }482}483func enableSearchInputCommand(g *gocui.Gui, v *gocui.View) error {484 gui.clearStatusView()485 gui.statusView.Editable = true486 gui.g.SetCurrentView(StatusView)487 actionBeingExecuted = Search488 return nil489}490func searchCommand(g *gocui.Gui, v *gocui.View) error {491 if query := getTypedCommand(); query != "" {492 publisher.Search(query)493 }494 gui.enableSideView()495 gui.clearStatusView()496 gui.statusView.Editable = false497 gui.updateCurrentStatus()498 return nil499}500func enableCreatePlaylistCommand(g *gocui.Gui, v *gocui.View) error {501 gui.clearStatusView()502 gui.statusView.Editable = true503 gui.g.SetCurrentView(StatusView)504 actionBeingExecuted = CreatePlaylist505 return nil506}507func createPlaylistCommand(g *gocui.Gui, v *gocui.View) error {508 if playlistName := getTypedCommand(); playlistName != "" {509 gui.createPlaylistFromQueue(playlistName)510 }511 gui.enableSideView()512 gui.clearStatusView()513 gui.statusView.Editable = false514 gui.updateCurrentStatus()515 return nil516}517func getTypedCommand() string {518 typed, _ := gui.statusView.Line(0)519 return strings.Trim(typed, " \x00")520}521func executeAction(g *gocui.Gui, v *gocui.View) error {522 if actionBeingExecuted == Search {523 return searchCommand(g, v)524 } else if actionBeingExecuted == SearchView {525 return searchViewCommand(g, v)526 } else if actionBeingExecuted == CreatePlaylist {527 return createPlaylistCommand(g, v)528 }529 return nil530}531func quit(g *gocui.Gui, v *gocui.View) error {532 consoleUserInterface.Shutdown()533 // TODO wait for shutdown534 // <-events.ShutdownUpdates()535 return gocui.ErrQuit536}537func (gui *Gui) clearTimeLeftView() {538 gui.timeLeftView.Clear()539 gui.timeLeftView.SetCursor(0, 0)540 gui.timeLeftView.SetOrigin(0, 0)541}...
keymap.go
Source:keymap.go
...3// Reference: https://github.com/microsoft/playwright/blob/main/packages/playwright-core/src/server/usKeyboardLayout.ts4var (5 // Functions row6 //7 Escape = AddKey("Escape", "", "Escape", 27, 0)8 F1 = AddKey("F1", "", "F1", 112, 0)9 F2 = AddKey("F2", "", "F2", 113, 0)10 F3 = AddKey("F3", "", "F3", 114, 0)11 F4 = AddKey("F4", "", "F4", 115, 0)12 F5 = AddKey("F5", "", "F5", 116, 0)13 F6 = AddKey("F6", "", "F6", 117, 0)14 F7 = AddKey("F7", "", "F7", 118, 0)15 F8 = AddKey("F8", "", "F8", 119, 0)16 F9 = AddKey("F9", "", "F9", 120, 0)17 F10 = AddKey("F10", "", "F10", 121, 0)18 F11 = AddKey("F11", "", "F11", 122, 0)19 F12 = AddKey("F12", "", "F12", 123, 0)20 // Numbers row21 //22 Backquote = AddKey("`", "~", "Backquote", 192, 0)23 Digit1 = AddKey("1", "!", "Digit1", 49, 0)24 Digit2 = AddKey("2", "@", "Digit2", 50, 0)25 Digit3 = AddKey("3", "#", "Digit3", 51, 0)26 Digit4 = AddKey("4", "$", "Digit4", 52, 0)27 Digit5 = AddKey("5", "%", "Digit5", 53, 0)28 Digit6 = AddKey("6", "^", "Digit6", 54, 0)29 Digit7 = AddKey("7", "&", "Digit7", 55, 0)30 Digit8 = AddKey("8", "*", "Digit8", 56, 0)31 Digit9 = AddKey("9", "(", "Digit9", 57, 0)32 Digit0 = AddKey("0", ")", "Digit0", 48, 0)33 Minus = AddKey("-", "_", "Minus", 189, 0)34 Equal = AddKey("=", "+", "Equal", 187, 0)35 Backslash = AddKey(`\`, "|", "Backslash", 220, 0)36 Backspace = AddKey("Backspace", "", "Backspace", 8, 0)37 // First row38 //39 Tab = AddKey("\t", "", "Tab", 9, 0)40 KeyQ = AddKey("q", "Q", "KeyQ", 81, 0)41 KeyW = AddKey("w", "W", "KeyW", 87, 0)42 KeyE = AddKey("e", "E", "KeyE", 69, 0)43 KeyR = AddKey("r", "R", "KeyR", 82, 0)44 KeyT = AddKey("t", "T", "KeyT", 84, 0)45 KeyY = AddKey("y", "Y", "KeyY", 89, 0)46 KeyU = AddKey("u", "U", "KeyU", 85, 0)47 KeyI = AddKey("i", "I", "KeyI", 73, 0)48 KeyO = AddKey("o", "O", "KeyO", 79, 0)49 KeyP = AddKey("p", "P", "KeyP", 80, 0)50 BracketLeft = AddKey("[", "{", "BracketLeft", 219, 0)51 BracketRight = AddKey("]", "}", "BracketRight", 221, 0)52 // Second row53 //54 CapsLock = AddKey("CapsLock", "", "CapsLock", 20, 0)55 KeyA = AddKey("a", "A", "KeyA", 65, 0)56 KeyS = AddKey("s", "S", "KeyS", 83, 0)57 KeyD = AddKey("d", "D", "KeyD", 68, 0)58 KeyF = AddKey("f", "F", "KeyF", 70, 0)59 KeyG = AddKey("g", "G", "KeyG", 71, 0)60 KeyH = AddKey("h", "H", "KeyH", 72, 0)61 KeyJ = AddKey("j", "J", "KeyJ", 74, 0)62 KeyK = AddKey("k", "K", "KeyK", 75, 0)63 KeyL = AddKey("l", "L", "KeyL", 76, 0)64 Semicolon = AddKey(";", ":", "Semicolon", 186, 0)65 Quote = AddKey("'", `"`, "Quote", 222, 0)66 Enter = AddKey("\r", "", "Enter", 13, 0)67 // Third row68 //69 ShiftLeft = AddKey("Shift", "", "ShiftLeft", 16, 1)70 KeyZ = AddKey("z", "Z", "KeyZ", 90, 0)71 KeyX = AddKey("x", "X", "KeyX", 88, 0)72 KeyC = AddKey("c", "C", "KeyC", 67, 0)73 KeyV = AddKey("v", "V", "KeyV", 86, 0)74 KeyB = AddKey("b", "B", "KeyB", 66, 0)75 KeyN = AddKey("n", "N", "KeyN", 78, 0)76 KeyM = AddKey("m", "M", "KeyM", 77, 0)77 Comma = AddKey(",", "<", "Comma", 188, 0)78 Period = AddKey(".", ">", "Period", 190, 0)79 Slash = AddKey("/", "?", "Slash", 191, 0)80 ShiftRight = AddKey("Shift", "", "ShiftRight", 16, 2)81 // Last row82 //83 ControlLeft = AddKey("Control", "", "ControlLeft", 17, 1)84 MetaLeft = AddKey("Meta", "", "MetaLeft", 91, 1)85 AltLeft = AddKey("Alt", "", "AltLeft", 18, 1)86 Space = AddKey(" ", "", "Space", 32, 0)87 AltRight = AddKey("Alt", "", "AltRight", 18, 2)88 AltGraph = AddKey("AltGraph", "", "AltGraph", 225, 0)89 MetaRight = AddKey("Meta", "", "MetaRight", 92, 2)90 ContextMenu = AddKey("ContextMenu", "", "ContextMenu", 93, 0)91 ControlRight = AddKey("Control", "", "ControlRight", 17, 2)92 // Center block93 //94 PrintScreen = AddKey("PrintScreen", "", "PrintScreen", 44, 0)95 ScrollLock = AddKey("ScrollLock", "", "ScrollLock", 145, 0)96 Pause = AddKey("Pause", "", "Pause", 19, 0)97 PageUp = AddKey("PageUp", "", "PageUp", 33, 0)98 PageDown = AddKey("PageDown", "", "PageDown", 34, 0)99 Insert = AddKey("Insert", "", "Insert", 45, 0)100 Delete = AddKey("Delete", "", "Delete", 46, 0)101 Home = AddKey("Home", "", "Home", 36, 0)102 End = AddKey("End", "", "End", 35, 0)103 ArrowLeft = AddKey("ArrowLeft", "", "ArrowLeft", 37, 0)104 ArrowUp = AddKey("ArrowUp", "", "ArrowUp", 38, 0)105 ArrowRight = AddKey("ArrowRight", "", "ArrowRight", 39, 0)106 ArrowDown = AddKey("ArrowDown", "", "ArrowDown", 40, 0)107 // Numpad108 //109 NumLock = AddKey("NumLock", "", "NumLock", 144, 0)110 NumpadDivide = AddKey("/", "", "NumpadDivide", 111, 3)111 NumpadMultiply = AddKey("*", "", "NumpadMultiply", 106, 3)112 NumpadSubtract = AddKey("-", "", "NumpadSubtract", 109, 3)113 Numpad7 = AddKey("7", "", "Numpad7", 36, 3)114 Numpad8 = AddKey("8", "", "Numpad8", 38, 3)115 Numpad9 = AddKey("9", "", "Numpad9", 33, 3)116 Numpad4 = AddKey("4", "", "Numpad4", 37, 3)117 Numpad5 = AddKey("5", "", "Numpad5", 12, 3)118 Numpad6 = AddKey("6", "", "Numpad6", 39, 3)119 NumpadAdd = AddKey("+", "", "NumpadAdd", 107, 3)120 Numpad1 = AddKey("1", "", "Numpad1", 35, 3)121 Numpad2 = AddKey("2", "", "Numpad2", 40, 3)122 Numpad3 = AddKey("3", "", "Numpad3", 34, 3)123 Numpad0 = AddKey("0", "", "Numpad0", 45, 3)124 NumpadDecimal = AddKey(".", "", "NumpadDecimal", 46, 3)125 NumpadEnter = AddKey("\r", "", "NumpadEnter", 13, 3)126)...
AddKey
Using AI Code Generation
1import (2type Input struct {3}4func (i *Input) AddKey(input string) {5 fmt.Println("Key Added")6}7func (i *Input) GetKey() string {8}9func (i *Input) SetKey(input string) {10 fmt.Println("Key Set")11}12func (i *Input) RemoveKey() {13 fmt.Println("Key Removed")14}15func main() {16 i.AddKey("Key")17 fmt.Println("Key: ", i.GetKey())18 i.SetKey("New Key")19 fmt.Println("Key: ", i.GetKey())20 i.RemoveKey()21 fmt.Println("Key: ", i.GetKey())22}23Your name to display (optional):
AddKey
Using AI Code Generation
1import (2type Input struct {3}4func (i *Input) AddKey(key string) {5}6func main() {7 i.AddKey("hello")8 fmt.Println(i.key)9}10import (11type Input struct {12}13func (i *Input) AddKey(key string) {14}15func main() {16 i.AddKey("hello")17 fmt.Println(i.key)18}
AddKey
Using AI Code Generation
1func main() {2 input.AddKey("key1", "value1")3 input.AddKey("key2", "value2")4 fmt.Println(input)5}6func NewInput() *Input {7 return &Input{8 data: make(map[string]string),9 }10}11func (i *Input) AddKey(key string, value string) {12}13type Input struct {14}15{map[key1:value1 key2:value2]}16func main() {17 input.AddKey("key1", "value1")18 input.AddKey("key2", "value2")19 fmt.Println(input)20 fmt.Println(input.data["key1"])21}22{map[key1:value1 key2:value2]}23func main() {24 input.AddKey("key1", "value1")25 input.AddKey("key2", "value2")26 fmt.Println(input)27 fmt.Println(input.data["key1"])28 fmt.Println(input.data["key1"])29}
AddKey
Using AI Code Generation
1import java.util.*;2import java.lang.*;3import java.io.*;4{5public static void main (String[] args) throws java.lang.Exception6{7Input input = new Input();8input.AddKey(1);9input.AddKey(2);10input.AddKey(3);11input.AddKey(4);12input.AddKey(5);13input.AddKey(6);14input.AddKey(7);15input.AddKey(8);16input.AddKey(9);17input.AddKey(10);18input.AddKey(11);19input.AddKey(12);20input.AddKey(13);21input.AddKey(14);22input.AddKey(15);23input.AddKey(16);24input.AddKey(17);25input.AddKey(18);26input.AddKey(19);27input.AddKey(20);28input.AddKey(21);29input.AddKey(22);30input.AddKey(23);31input.AddKey(24);32input.AddKey(25);33input.AddKey(26);34input.AddKey(27);35input.AddKey(28);36input.AddKey(29);37input.AddKey(30);38input.AddKey(31);39input.AddKey(32);40input.AddKey(33);41input.AddKey(34);42input.AddKey(35);43input.AddKey(36);44input.AddKey(37);45input.AddKey(38);46input.AddKey(39);47input.AddKey(40);48input.AddKey(41);49input.AddKey(42);50input.AddKey(43);51input.AddKey(44);52input.AddKey(45);53input.AddKey(46);54input.AddKey(47);55input.AddKey(48);56input.AddKey(49);57input.AddKey(50);58input.AddKey(51);59input.AddKey(52);60input.AddKey(53);61input.AddKey(54);62input.AddKey(55);63input.AddKey(56);64input.AddKey(57);65input.AddKey(58);66input.AddKey(59);67input.AddKey(60);68input.AddKey(61);69input.AddKey(62);70input.AddKey(63);71input.AddKey(64);72input.AddKey(65);73input.AddKey(66);74input.AddKey(67);75input.AddKey(68);76input.AddKey(69);77input.AddKey(70);78input.AddKey(71);79input.AddKey(72);80input.AddKey(73);81input.AddKey(74);
AddKey
Using AI Code Generation
1import (2func main() {3 fmt.Println("Hello World!")4 inp.AddKey("a", "b")5}6./1.go:13: inp.AddKey undefined (type input.Input has no field or method AddKey)7@RobPike - I have updated the code with the input package. I am able to run the code when I run go run 2.go . But when I try to run go run 1.go , it gives me the error: ./1.go:13: inp.AddKey undefined (type input.Input has no field or method AddKey)
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!