From 0a7b8c81b359511153ab7257abc3b97a3b1c99a7 Mon Sep 17 00:00:00 2001 From: Will Angenent Date: Sat, 12 May 2018 13:59:43 +0100 Subject: [PATCH] Added capslock key, toggable with ctrl-alt-c --- keyboard/keyboard.go | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/keyboard/keyboard.go b/keyboard/keyboard.go index 6dcdb54..4445074 100644 --- a/keyboard/keyboard.go +++ b/keyboard/keyboard.go @@ -11,10 +11,12 @@ var controlMap map[uint8]uint8 var keyBoardData uint8 var strobe uint8 var previousKeysPressed map[uint8]bool +var capsLock bool func Init() { keyBoardData = 0 strobe = 0 + capsLock = true ebitenAsciiMap = make(map[ebiten.Key]uint8) shiftMap = make(map[uint8]uint8) @@ -225,22 +227,28 @@ func Poll() { } key := keys[0] - if ebiten.IsKeyPressed(ebiten.KeyShift) { - shiftedKey, present := shiftMap[key] - if present { - key = shiftedKey - } - } + if ebiten.IsKeyPressed(ebiten.KeyControl) && ebiten.IsKeyPressed(ebiten.KeyAlt) && key == 'c' { + capsLock = !capsLock + } else { + shift := ebiten.IsKeyPressed(ebiten.KeyShift) + shift = shift || (capsLock && key >= 'a' && key <= 'z') - if ebiten.IsKeyPressed(ebiten.KeyControl) { - controlKey, present := controlMap[key] - if present { - key = controlKey + if shift { + shiftedKey, present := shiftMap[key] + if present { + key = shiftedKey + } } - } - keyBoardData = key | 0x80 - strobe = keyBoardData + if ebiten.IsKeyPressed(ebiten.KeyControl) { + controlKey, present := controlMap[key] + if present { + key = controlKey + } + } + keyBoardData = key | 0x80 + strobe = keyBoardData + } return }