initial commit
This commit is contained in:
parent
138c2c2d38
commit
62146dc523
7 changed files with 497 additions and 0 deletions
86
.gitignore
vendored
Normal file
86
.gitignore
vendored
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
|
||||||
|
# Created by https://www.toptal.com/developers/gitignore/api/lua,visualstudiocode,windows
|
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=lua,visualstudiocode,windows
|
||||||
|
|
||||||
|
### Lua ###
|
||||||
|
# Compiled Lua sources
|
||||||
|
luac.out
|
||||||
|
|
||||||
|
# luarocks build files
|
||||||
|
*.src.rock
|
||||||
|
*.zip
|
||||||
|
*.tar.gz
|
||||||
|
|
||||||
|
# Object files
|
||||||
|
*.o
|
||||||
|
*.os
|
||||||
|
*.ko
|
||||||
|
*.obj
|
||||||
|
*.elf
|
||||||
|
|
||||||
|
# Precompiled Headers
|
||||||
|
*.gch
|
||||||
|
*.pch
|
||||||
|
|
||||||
|
# Libraries
|
||||||
|
*.lib
|
||||||
|
*.a
|
||||||
|
*.la
|
||||||
|
*.lo
|
||||||
|
*.def
|
||||||
|
*.exp
|
||||||
|
|
||||||
|
# Shared objects (inc. Windows DLLs)
|
||||||
|
*.dll
|
||||||
|
*.so
|
||||||
|
*.so.*
|
||||||
|
*.dylib
|
||||||
|
|
||||||
|
# Executables
|
||||||
|
*.exe
|
||||||
|
*.out
|
||||||
|
*.app
|
||||||
|
*.i*86
|
||||||
|
*.x86_64
|
||||||
|
*.hex
|
||||||
|
|
||||||
|
|
||||||
|
### VisualStudioCode ###
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/settings.json
|
||||||
|
!.vscode/tasks.json
|
||||||
|
!.vscode/launch.json
|
||||||
|
!.vscode/extensions.json
|
||||||
|
*.code-workspace
|
||||||
|
|
||||||
|
### VisualStudioCode Patch ###
|
||||||
|
# Ignore all local history of files
|
||||||
|
.history
|
||||||
|
|
||||||
|
### Windows ###
|
||||||
|
# Windows thumbnail cache files
|
||||||
|
Thumbs.db
|
||||||
|
Thumbs.db:encryptable
|
||||||
|
ehthumbs.db
|
||||||
|
ehthumbs_vista.db
|
||||||
|
|
||||||
|
# Dump file
|
||||||
|
*.stackdump
|
||||||
|
|
||||||
|
# Folder config file
|
||||||
|
[Dd]esktop.ini
|
||||||
|
|
||||||
|
# Recycle Bin used on file shares
|
||||||
|
$RECYCLE.BIN/
|
||||||
|
|
||||||
|
# Windows Installer files
|
||||||
|
*.cab
|
||||||
|
*.msi
|
||||||
|
*.msix
|
||||||
|
*.msm
|
||||||
|
*.msp
|
||||||
|
|
||||||
|
# Windows shortcuts
|
||||||
|
*.lnk
|
||||||
|
|
||||||
|
# End of https://www.toptal.com/developers/gitignore/api/lua,visualstudiocode,windows
|
23
MWSE/mods/Keyboard Layout Changer/common.lua
Normal file
23
MWSE/mods/Keyboard Layout Changer/common.lua
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
local keys = require("Keyboard Layout Changer.keys")
|
||||||
|
local supportedLayouts = ""
|
||||||
|
for name, _ in pairs(keys) do
|
||||||
|
supportedLayouts = supportedLayouts .. name .. " "
|
||||||
|
end
|
||||||
|
|
||||||
|
local this = {}
|
||||||
|
|
||||||
|
this.modName = "Keyboard Layout Changer"
|
||||||
|
this.author = "Celediel"
|
||||||
|
this.version = "1.0.0"
|
||||||
|
this.configString = string.gsub(this.modName, "%s+", "")
|
||||||
|
this.modInfo = "Allows use of non-qwerty keyboard layouts.\n\nCurrently supported:\n" .. supportedLayouts
|
||||||
|
|
||||||
|
function this.log(str) mwse.log("[%s] %s", this.modName, str) end
|
||||||
|
|
||||||
|
function this.changeLayout(keys)
|
||||||
|
-- Thanks NullCascade
|
||||||
|
mwse.memory.writeBytes({address = 0x775148, bytes = keys.lowercase})
|
||||||
|
mwse.memory.writeBytes({address = 0x775248, bytes = keys.uppercase})
|
||||||
|
end
|
||||||
|
|
||||||
|
return this
|
16
MWSE/mods/Keyboard Layout Changer/config.lua
Normal file
16
MWSE/mods/Keyboard Layout Changer/config.lua
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
local common = require("Keyboard Layout Changer.common")
|
||||||
|
|
||||||
|
local this = {}
|
||||||
|
|
||||||
|
local currentConfig
|
||||||
|
|
||||||
|
this.default = {
|
||||||
|
keyboardLayout = "qwerty"
|
||||||
|
}
|
||||||
|
|
||||||
|
function this.getConfig()
|
||||||
|
currentConfig = currentConfig or mwse.loadConfig(common.configString, this.default)
|
||||||
|
return currentConfig
|
||||||
|
end
|
||||||
|
|
||||||
|
return this
|
276
MWSE/mods/Keyboard Layout Changer/keys.lua
Normal file
276
MWSE/mods/Keyboard Layout Changer/keys.lua
Normal file
|
@ -0,0 +1,276 @@
|
||||||
|
return {
|
||||||
|
["dvorak"] = {
|
||||||
|
lowercase = {
|
||||||
|
0x20, 0x1b, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
|
||||||
|
0x30, 0x5b, 0x5d, 0x08, 0x09, 0x27, 0x2c, 0x2e, 0x70, 0x79, 0x66,
|
||||||
|
0x67, 0x63, 0x72, 0x6c, 0x2f, 0x3d, 0x0d, 0x20, 0x61, 0x6f, 0x65,
|
||||||
|
0x75, 0x69, 0x64, 0x68, 0x74, 0x6e, 0x73, 0x2d, 0x60, 0x20, 0x5c,
|
||||||
|
0x3b, 0x71, 0x6a, 0x6b, 0x78, 0x62, 0x6d, 0x77, 0x76, 0x7a, 0x20,
|
||||||
|
0x2a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x20,
|
||||||
|
0x20, 0x2b, 0x20, 0x20, 0x20, 0x20, 0x7f, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20,
|
||||||
|
0x20, 0x20, 0x40, 0x3a, 0x5f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x0d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x2c, 0x20, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20
|
||||||
|
},
|
||||||
|
uppercase = {
|
||||||
|
0x20, 0x1b, 0x21, 0x40, 0x23, 0x24, 0x25, 0x5e, 0x26, 0x2a, 0x28,
|
||||||
|
0x29, 0x7b, 0x7d, 0x08, 0x09, 0x22, 0x3c, 0x3e, 0x50, 0x59, 0x46,
|
||||||
|
0x47, 0x43, 0x52, 0x4c, 0x3f, 0x2b, 0x0d, 0x20, 0x41, 0x4f, 0x45,
|
||||||
|
0x55, 0x49, 0x44, 0x48, 0x54, 0x4e, 0x53, 0x5f, 0x7e, 0x20, 0x7c,
|
||||||
|
0x3a, 0x51, 0x4a, 0x4b, 0x58, 0x42, 0x4d, 0x57, 0x56, 0x5a, 0x20,
|
||||||
|
0x2a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x20,
|
||||||
|
0x20, 0x2b, 0x20, 0x20, 0x20, 0x20, 0x7f, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20,
|
||||||
|
0x20, 0x20, 0x40, 0x3a, 0x5f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x0d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x2c, 0x20, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
["qwerty"] = {
|
||||||
|
lowercase = {
|
||||||
|
0x00, 0x1B, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
|
||||||
|
0x30, 0x2D, 0x3D, 0x08, 0x09, 0x71, 0x77, 0x65, 0x72, 0x74, 0x79,
|
||||||
|
0x75, 0x69, 0x6F, 0x70, 0x5B, 0x5D, 0x0D, 0x00, 0x61, 0x73, 0x64,
|
||||||
|
0x66, 0x67, 0x68, 0x6A, 0x6B, 0x6C, 0x3B, 0x27, 0x60, 0x00, 0x5C,
|
||||||
|
0x7A, 0x78, 0x63, 0x76, 0x62, 0x6E, 0x6D, 0x2C, 0x2E, 0x2F, 0x00,
|
||||||
|
0x2A, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00,
|
||||||
|
0x00, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00,
|
||||||
|
0x00, 0x00, 0x40, 0x3A, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x2C, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00
|
||||||
|
},
|
||||||
|
uppercase = {
|
||||||
|
0x00, 0x1B, 0x21, 0x40, 0x23, 0x24, 0x25, 0x5E, 0x26, 0x2A, 0x28,
|
||||||
|
0x29, 0x5F, 0x2B, 0x08, 0x09, 0x51, 0x57, 0x45, 0x52, 0x54, 0x59,
|
||||||
|
0x55, 0x49, 0x4F, 0x50, 0x7B, 0x7D, 0x0D, 0x00, 0x41, 0x53, 0x44,
|
||||||
|
0x46, 0x47, 0x48, 0x4A, 0x4B, 0x4C, 0x3A, 0x22, 0x7E, 0x00, 0x7C,
|
||||||
|
0x5A, 0x58, 0x43, 0x56, 0x42, 0x4E, 0x4D, 0x3C, 0x3E, 0x3F, 0x00,
|
||||||
|
0x2A, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00,
|
||||||
|
0x00, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00,
|
||||||
|
0x00, 0x00, 0x40, 0x3A, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x2C, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
["colemak"] = {
|
||||||
|
lowercase = {
|
||||||
|
0x20, 0x1b, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
|
||||||
|
0x30, 0x2d, 0x3d, 0x08, 0x09, 0x71, 0x77, 0x66, 0x70, 0x67, 0x6a,
|
||||||
|
0x6c, 0x75, 0x79, 0x3b, 0x5b, 0x5d, 0x0d, 0x20, 0x61, 0x72, 0x73,
|
||||||
|
0x74, 0x64, 0x68, 0x6e, 0x65, 0x69, 0x6f, 0x27, 0x60, 0x20, 0x5c,
|
||||||
|
0x7a, 0x78, 0x63, 0x76, 0x62, 0x6b, 0x6d, 0x2c, 0x2e, 0x2f, 0x20,
|
||||||
|
0x2a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x20,
|
||||||
|
0x20, 0x2b, 0x20, 0x20, 0x20, 0x20, 0x7f, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20,
|
||||||
|
0x20, 0x20, 0x40, 0x3a, 0x5f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x0d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x2c, 0x20, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20
|
||||||
|
},
|
||||||
|
uppercase = {
|
||||||
|
0x20, 0x1b, 0x21, 0x40, 0x23, 0x24, 0x25, 0x5e, 0x26, 0x2a, 0x28,
|
||||||
|
0x29, 0x5f, 0x2b, 0x08, 0x09, 0x51, 0x57, 0x46, 0x50, 0x47, 0x4a,
|
||||||
|
0x4c, 0x55, 0x59, 0x3a, 0x7b, 0x7d, 0x0d, 0x20, 0x41, 0x52, 0x53,
|
||||||
|
0x54, 0x44, 0x48, 0x4e, 0x45, 0x49, 0x4f, 0x22, 0x7e, 0x20, 0x7c,
|
||||||
|
0x5a, 0x58, 0x43, 0x56, 0x42, 0x4b, 0x4d, 0x3c, 0x3e, 0x3f, 0x20,
|
||||||
|
0x2a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x20,
|
||||||
|
0x20, 0x2b, 0x20, 0x20, 0x20, 0x20, 0x7f, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20,
|
||||||
|
0x20, 0x20, 0x40, 0x3a, 0x5f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x0d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x2c, 0x20, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
["workman_us"] = {
|
||||||
|
lowercase = {
|
||||||
|
0x20, 0x1b, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
|
||||||
|
0x30, 0x2d, 0x3d, 0x08, 0x09, 0x71, 0x64, 0x72, 0x77, 0x62, 0x6a,
|
||||||
|
0x66, 0x75, 0x70, 0x3b, 0x5b, 0x5d, 0x0d, 0x20, 0x61, 0x73, 0x68,
|
||||||
|
0x74, 0x67, 0x79, 0x6e, 0x65, 0x6f, 0x69, 0x27, 0x60, 0x20, 0x5c,
|
||||||
|
0x7a, 0x78, 0x6d, 0x63, 0x76, 0x6b, 0x6c, 0x2c, 0x2e, 0x2f, 0x20,
|
||||||
|
0x2a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x20,
|
||||||
|
0x20, 0x2b, 0x20, 0x20, 0x20, 0x20, 0x7f, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20,
|
||||||
|
0x20, 0x20, 0x40, 0x3a, 0x5f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x0d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x2c, 0x20, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20
|
||||||
|
},
|
||||||
|
uppercase = {
|
||||||
|
0x20, 0x1b, 0x21, 0x40, 0x23, 0x24, 0x25, 0x5e, 0x26, 0x2a, 0x28,
|
||||||
|
0x29, 0x5f, 0x2b, 0x08, 0x09, 0x51, 0x44, 0x52, 0x57, 0x42, 0x4a,
|
||||||
|
0x46, 0x55, 0x50, 0x3a, 0x7b, 0x7d, 0x0d, 0x20, 0x41, 0x53, 0x48,
|
||||||
|
0x54, 0x47, 0x59, 0x4e, 0x45, 0x4f, 0x49, 0x22, 0x7e, 0x20, 0x7c,
|
||||||
|
0x5a, 0x58, 0x4d, 0x43, 0x56, 0x4b, 0x4c, 0x3c, 0x3e, 0x3f, 0x20,
|
||||||
|
0x2a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x20,
|
||||||
|
0x20, 0x2b, 0x20, 0x20, 0x20, 0x20, 0x7f, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20,
|
||||||
|
0x20, 0x20, 0x40, 0x3a, 0x5f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x0d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x2c, 0x20, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
["workman_uk"] = {
|
||||||
|
lowercase = {
|
||||||
|
0x20, 0x1b, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
|
||||||
|
0x30, 0x2d, 0x3d, 0x08, 0x09, 0x71, 0x64, 0x72, 0x77, 0x62, 0x6a,
|
||||||
|
0x66, 0x75, 0x70, 0x3b, 0x5b, 0x5d, 0x0d, 0x20, 0x61, 0x73, 0x68,
|
||||||
|
0x74, 0x67, 0x79, 0x6e, 0x65, 0x6f, 0x69, 0x27, 0x60, 0x20, 0x23,
|
||||||
|
0x7a, 0x78, 0x6d, 0x63, 0x76, 0x6b, 0x6c, 0x2c, 0x2e, 0x2f, 0x20,
|
||||||
|
0x2a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x20,
|
||||||
|
0x20, 0x2b, 0x20, 0x20, 0x20, 0x20, 0x7f, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20,
|
||||||
|
0x20, 0x20, 0x40, 0x3a, 0x5f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x0d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x2c, 0x20, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20
|
||||||
|
},
|
||||||
|
uppercase = {
|
||||||
|
0x20, 0x1b, 0x21, 0x22, 0xa3, 0x24, 0x25, 0x5e, 0x26, 0x2a, 0x28,
|
||||||
|
0x29, 0x5f, 0x2b, 0x08, 0x09, 0x51, 0x44, 0x52, 0x57, 0x42, 0x4a,
|
||||||
|
0x46, 0x55, 0x50, 0x3a, 0x7b, 0x7d, 0x0d, 0x20, 0x41, 0x53, 0x48,
|
||||||
|
0x54, 0x47, 0x59, 0x4e, 0x45, 0x4f, 0x49, 0x40, 0xac, 0x20, 0x7e,
|
||||||
|
0x5a, 0x58, 0x4d, 0x43, 0x56, 0x4b, 0x4c, 0x3c, 0x3e, 0x3f, 0x20,
|
||||||
|
0x2a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x20,
|
||||||
|
0x20, 0x2b, 0x20, 0x20, 0x20, 0x20, 0x7f, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20,
|
||||||
|
0x20, 0x20, 0x40, 0x3a, 0x5f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x0d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x2c, 0x20, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x20, 0x20
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
14
MWSE/mods/Keyboard Layout Changer/main.lua
Normal file
14
MWSE/mods/Keyboard Layout Changer/main.lua
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
local keys = require("Keyboard Layout Changer.keys")
|
||||||
|
local common = require("Keyboard Layout Changer.common")
|
||||||
|
local config = require("Keyboard Layout Changer.config").getConfig()
|
||||||
|
|
||||||
|
local function onInitialized()
|
||||||
|
common.log("Changing layout to " .. config.keyboardLayout)
|
||||||
|
common.changeLayout(keys[config.keyboardLayout])
|
||||||
|
end
|
||||||
|
|
||||||
|
event.register("initialized", onInitialized)
|
||||||
|
|
||||||
|
event.register("modConfigReady", function()
|
||||||
|
mwse.mcm.register(require("Keyboard Layout Changer.mcm"))
|
||||||
|
end)
|
56
MWSE/mods/Keyboard Layout Changer/mcm.lua
Normal file
56
MWSE/mods/Keyboard Layout Changer/mcm.lua
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
local keys = require("Keyboard Layout Changer.keys")
|
||||||
|
local common = require("Keyboard Layout Changer.common")
|
||||||
|
local config = require("Keyboard Layout Changer.config").getConfig()
|
||||||
|
|
||||||
|
local restartMessage = "Restart the game or click the Apply button to apply changes."
|
||||||
|
|
||||||
|
local function createTableVar(id)
|
||||||
|
return mwse.mcm.createTableVariable({
|
||||||
|
id = id,
|
||||||
|
table = config,
|
||||||
|
restartRequired = true,
|
||||||
|
restartRequiredMessage = restartMessage
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
local function createOptions()
|
||||||
|
local options = {}
|
||||||
|
-- I guess I don't know how ipairs works
|
||||||
|
local i = 1
|
||||||
|
for name, _ in pairs(keys) do
|
||||||
|
options[i] = {label = name:gsub("^%l", string.upper), value = name}
|
||||||
|
i = i + 1 -- wtf lua
|
||||||
|
end
|
||||||
|
return options
|
||||||
|
end
|
||||||
|
|
||||||
|
local function applyLayout()
|
||||||
|
tes3.messageBox("Layout changes applied!")
|
||||||
|
common.log("Changing layout to " .. config.keyboardLayout)
|
||||||
|
common.changeLayout(keys[config.keyboardLayout])
|
||||||
|
end
|
||||||
|
|
||||||
|
local template = mwse.mcm.createTemplate(common.modName)
|
||||||
|
template:saveOnClose(common.configString, config)
|
||||||
|
|
||||||
|
local page = template:createSideBarPage({
|
||||||
|
label = "Sidebar page",
|
||||||
|
description = string.format("%s v%s by %s\n\n%s\n\n", common.modName,
|
||||||
|
common.version, common.author, common.modInfo)
|
||||||
|
})
|
||||||
|
|
||||||
|
local category = page:createCategory(common.modName)
|
||||||
|
|
||||||
|
category:createDropdown({
|
||||||
|
label = "Keyboard layout",
|
||||||
|
options = createOptions(),
|
||||||
|
variable = createTableVar("keyboardLayout")
|
||||||
|
})
|
||||||
|
|
||||||
|
category:createButton({
|
||||||
|
label = "Apply changes",
|
||||||
|
buttonText = "Apply",
|
||||||
|
callback = applyLayout
|
||||||
|
})
|
||||||
|
|
||||||
|
return template
|
26
README.md
26
README.md
|
@ -1,2 +1,28 @@
|
||||||
# Morrowind-Keyboard-Layout-Changer
|
# Morrowind-Keyboard-Layout-Changer
|
||||||
|
|
||||||
|
## What it does ##
|
||||||
|
|
||||||
MWSE Lua mod to allow non-Qwerty keyboard layouts in vanilla engine Morrowind.
|
MWSE Lua mod to allow non-Qwerty keyboard layouts in vanilla engine Morrowind.
|
||||||
|
|
||||||
|
**Currently supported:**
|
||||||
|
|
||||||
|
* Dvorak
|
||||||
|
* Colemak
|
||||||
|
* Workman (US and UK varieties)
|
||||||
|
|
||||||
|
## Known Issues ##
|
||||||
|
|
||||||
|
Layouts that use letters outside the standard and extended ASCII tables will remain unsupported, due to the way Morrowind translate key presses to text.
|
||||||
|
|
||||||
|
i.e. Turkish FGĞIOD, Latvian ĄŽERTY
|
||||||
|
|
||||||
|
## Requirements ##
|
||||||
|
MWSE 2.1 nightly @ [github](https://github.com/MWSE/MWSE)
|
||||||
|
|
||||||
|
## Credits ##
|
||||||
|
* MWSE Team for MWSE with Lua support
|
||||||
|
* NullCascade for the initial code snippets I built this mod upon
|
||||||
|
|
||||||
|
## License ##
|
||||||
|
|
||||||
|
MIT License. See LICENSE file.
|
Loading…
Add table
Reference in a new issue