codefori / vscode-ibmi

🌍 IBM i development extension for VS Code
https://codefori.github.io/docs/#/
MIT License
284 stars 92 forks source link

Terminal - 5250 - Keyboard mapping/import from ACS? #1918

Open duieolson opened 8 months ago

duieolson commented 8 months ago

I love the integrated 5250 terminal in Code for i. I don't have to go back to ACS to look at things. But I have a custom keyboard map I use in ACS. I get myself into trouble with the new 5250 due to different keys pressed than I am used to.

Can we get a keyboard mapper or import of an ACS keyboard map into this code for i 5250 terminal so our mappings match?


⚠️ REMOVE THIS LINE AND ANY SENSITIVE INFORMATION BELOW! ⚠️

Context Version
Code for IBM i version 2.8.0
Visual Studio Code version 1.87.0
Operating System win32_x64
Active extensions ``` COBOL (cobol): 10.2.21 Code for IBM i Walkthroughs (vscode-ibmi-walkthroughs): 0.4.0 Db2 for IBM i (vscode-db2i): 0.7.1 Emmet (emmet): 1.0.0 Error Lens (errorlens): 3.16.0 Git (git): 1.0.0 Git Base (git-base): 1.0.0 GitHub (github): 0.0.1 GitHub Authentication (github-authentication): 0.0.2 GitHub Pull Requests (vscode-pull-request-github): 0.82.0 IBM i Renderer (vscode-displayfile): 0.1.2 JSON Language Features (json-language-features): 1.0.0 Merge Conflict (merge-conflict): 1.0.0 Node Debug Auto-attach (debug-auto-launch): 1.0.0 RPGLE (vscode-rpgle): 0.26.2 TODO Highlight (vscode-todo-highlight): 1.0.5 TypeScript and JavaScript Language Features (typescript-language-features): 1.0.0 WSL (remote-wsl): 0.86.0 ```

Remote system |Setting|Value| |-|-| |IBM i OS|V7R4M0| |Tech Refresh|8| |CCSID|37| |Default CCSID|37| |SQL|Enabled |Source dates|Disabled ### Enabled features |/QOpenSys/pkgs/bin|/usr/bin|/QSYS.lib/ILEDITOR.lib|/QSYS.LIB|/QIBM/ProdData/IBMiDebugService/bin| |-|-|-|-|-| |bash|attr|GENCMDXML.PGM|QZDFMDB2.PGM|startDebugService.sh| |chsh|iconv|GETNEWLIBL.PGM||| |git|setccsid|||| |grep||||| |ls||||| |md5sum||||| |sort||||| |stat||||| |tar||||| |tn5250|||||
Shell env ```bash BUILDLIB=DOLSON CURLIB=DOLSON HOME=/home/DOLS1 HOST=RXDV1 LIBLS=DOLSCOMM DOLSON QGPL QTEMP LOGIN=dols1 LOGNAME=dols1 MAIL=/var/spool/mail/dols1 OLDPWD=/home/DOLS1 PATH=/QOpenSys/pkgs/bin:/QOpenSys/usr/bin:/usr/ccs/bin:/QOpenSys/usr/bin/X11:/usr/sbin:.:/usr/bin PWD=/home/DOLS1 SHELL=/QOpenSys/pkgs/bin/bash SHLVL=1 SSH_CLIENT=xx.xx.xx.xx 57895 22 SSH_CONNECTION=xx.xx.xx.xx 57895 xx.xx.xx.xx 22 TZ=6,M3.2.0,M11.1.0 USER=dols1 USERNAME=dols1 WORKDIR=/home/DOLS1 _=/QOpenSys/pkgs/bin/env ```
Variants ```json { "american": "#@$", "local": "#@$" } ```
Errors ```json [ { "command": "/QOpenSys/usr/bin/qsh", "code": 1, "stderr": "CPF2111: Library ILEDITOR already exists.\nCPC2206: Ownership of object QZSHSYSTEM in QTEMP type *USRSPC changed.", "cwd": "/home/DOLS1" } ] ```
worksofliam commented 8 months ago

@duieolson interesting idea. Could you share what your keyboard map looks like? Either sharing the file or a screenshot with us?

duieolson commented 8 months ago

In the Host Functions section of the ACS keyboard assignment: I have 3 keys that are different than the base ACS default keyboard map. Or they were a decade ago when I set them up in client access and converted them to ACS when we migrated.
2 field exit keys. Field Exit = + (Numpad) image

Field Exit = Control (right) image

New Line is Shift+ Enter (takes me to the next line down and farthest to the left without wiping out all field data on the current field when the keystrokes are pressed. Quickly takes me down the left side fields) image

jkyeung commented 7 months ago

Sounds doable but tedious to me. To do a "proper" import, you'd need to be able to handle any arbitrary function being customized. I don't know if the full list is even published anywhere (perhaps it only exists as part of the source code for ACS!).

I see a couple of much more limited but expedient options:

  1. A bit of documentation to explain how a user would go about changing the necessary keybindings within VS Code, including an actual example or two. Honestly, I think this is the best balance of developer effort and user effort.
  2. Adding a few settings for the most common ones. Perhaps after soliciting feedback from users to determine which ones those are. I know for sure some people like Right Ctrl to be Enter (to better match the old, actual 5250 terminals). Seems like the other ones mentioned here are also in the same vein.