AI prompts
base on SOCD cleaner tool for epic gamers # SOCD cleaner for epic gamers
## NOTE
I'm currently rewriting the program. If you're interested, see rewrite branch. I don't have an estimate for when it's gonna be done.
## Install
Grab the latest version from [Releases page](https://github.com/valignatev/socd/releases).
## Why do I need it?
SOCD stands for simultaneous opposite cardinal direction. Basically, what'll
happen if you press "left" and "right" at the same time or "left" while holding "right", and vise versa.
Every game handles it differently. Some set such cases to "neutral", some have "last win", and
some games just don't know what to do and do whatever.
Devices like smashbox usually have settings that you can toggle to have the behavior you
want. This program basically allows you to do the same but with your keyboard.
(WIP, for now the only option is "last wins").
Use it at your own caution, especially if you do competitive gaming because
some communities require to use something particular and ban any other alternatives.
There you go, I warned you. Enjoy!
## Warning
The program is in progress, expect backwards incompatible config changes and all that. Hopefully not a big deal
since there's not much to configure, but feel free to reach out to me or leave github issue if something that
you were using suddenly breaks.
## (Beta) Custom keybindings
You can specify your custom keybindings as you first 6 rows in `socd_vxx.conf`.
First 4 rows are your directions - left, right, up, down, the fifth row is the disable key, sixth row is the esc binding.
If the file doesn't exist - run the program so it creates one with the default config.
You can get numbers for your keys [here](https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes),
just make sure to remove `0x` and put only the number itself.
Just clicking on "Custom" doesn't do anything for now, but it'll appear as selected automatically
after you put anything other than WASD or arrows in your `socd.conf`
## (Beta) Set programs where SOCD cleaner works
Sometimes you don't want SOCD cleaner messing with your keyboard in some applications (like messengers).
It's very inconvenient when it starts overriding A and D with each other when you're typing a word
that contains both. Now it's possible to specify programs that SOCD cleaner will target when they are
focused.
Currently there is no proper interface to set it up, but you can open your `socd.conf` file
and add a new line per program name after your keybindings, so starting with line number 7. Program
name should be specified as its .exe file name.
If you don't specify any filenames, SOCD cleaner will just work globally.
Example `socd_v008.conf` content:
```
41
44
57
53
45
55
hollow_knight.exe
TheMessenger.exe
oriwotw.exe
hl2.exe
```
## Compiling from source code
Some antiviruses might complain at prebuilt executable as if it has viruses.
It doesn't, but you should never run untrusted code on your machine
if you don't know what you are doing.
Assuming you have [Visual Studio Build Tools](https://docs.microsoft.com/en-us/cpp/build/walkthrough-compile-a-c-program-on-the-command-line?view=vs-2019) installed, run `build.bat` from the developer shell.
Running `build.bat release` will produce a release build. Consult the script source code for details.
Generally, you should be able to compile it from source with any C compiler on Windows.
There is no external dependencies outside of builtin windows libraries.
For example, with clang:
Download [clang](https://releases.llvm.org/download.html) and run in the project root
```sh
clang -o2 socd_cleaner.c -o socd_cleaner.exe
```
## LICENSE
MIT or Apache 2.0, whatever you like
", Assign "at most 3 tags" to the expected json: {"id":"11305","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"