use 64 bit int for keycodes on all platforms

This commit is contained in:
Productive2 2021-02-20 21:38:56 +01:00
parent f79677ba14
commit 0d8a66b57e
1 changed files with 7 additions and 7 deletions

View File

@ -46,13 +46,13 @@ block:
keysByName[name] = i keysByName[name] = i
keysById[i] = name keysById[i] = name
var escapeSeqs*: Table[int, JaleKeycode] var escapeSeqs*: Table[uint64, JaleKeycode]
proc defEscSeq(keys: seq[int], id: JaleKeycode) = proc defEscSeq(keys: seq[int], id: JaleKeycode) =
var result = 0 var result: uint64 = 0'u64
for key in keys: for key in keys:
result *= 256 result *= 256
result += key result += key.uint64
if escapeSeqs.hasKey(result): if escapeSeqs.hasKey(result):
raise newException(Defect, "Duplicate escape sequence definition") raise newException(Defect, "Duplicate escape sequence definition")
escapeSeqs[result] = id escapeSeqs[result] = id
@ -159,14 +159,14 @@ block:
defEscSeq(@[8], jkBackspace) defEscSeq(@[8], jkBackspace)
proc getKey*: int = proc getKey*: int =
var key: int = 0 var key: uint64 = 0
while true: while true:
key *= 256 key *= 256
key += int(uniGetChr()) key += uniGetChr().uint64
if escapeSeqs.hasKey(key): if escapeSeqs.hasKey(key):
if escapeSeqs[key] != jkContinue: if escapeSeqs[key] != jkContinue:
key = int(escapeSeqs[key]) key = escapeSeqs[key].uint64
break break
else: else:
break break
return key return key.int