DennisMitchell / jellylanguage

Jelly is a recreational programming language inspired by J.
MIT License
862 stars 47 forks source link

[Feature request] Keyboard tutorial #6

Open kckennylau opened 8 years ago

kckennylau commented 8 years ago

I think it would be good if you would include a tutorial on how exactly to type each character, except copying them from your webpage.

DennisMitchell commented 8 years ago

The problem I see with this is that this varies with each different keyboard layout. To make matters worse, not all keyboard layouts are available on all platforms.

ConorOBrien-Foxx commented 8 years ago

@kckennylau Do you run windows? If so, I can make a keyboard layout for you.

kckennylau commented 8 years ago

@ConorOBrien-Foxx Yes I do, thanks in advance.

haakenlid commented 8 years ago

In feature rich text editors such as vim and emacs, you can use rfc1345 mnemonics to input these characters. Here's a link to the usage in vim, where this function is called "digraphs" http://vimhelp.appspot.com/digraph.txt.html

vendethiel commented 8 years ago

Did someone write a VIM keyboard file "yet"?

xeniagda commented 8 years ago

@vendethiel I wrote one, you can download it here. Place the file in your home directory, and add source ~/.jelly.vim in your vimrc. Every character can be made using C-k.

vendethiel commented 8 years ago

Nice :D

GolfingSuccess commented 8 years ago

@DennisMitchell Hmm... and that's why I struggle with Jelly.

@ConorOBrien-Foxx Just a question: have you made the layout yet? Because I desparately need it, I can't use the Compose Key for everything :-1:

ChaosCat commented 7 years ago

I actually started creating the keyboard with KLC for windows, I am modeling it to be as intuitive as possible. The only problem that I'm facing right now is figuring out which are the most commonly used symbols (which should be used as the default value for each key) and which ones are less common and should be enabled by alternating between modes (shift, caps, etc...). any leads so I can move on with it?

GolfingSuccess commented 7 years ago

@ChaosCat (May not be ordered with most common symbols yet)

Key Ctrl + Key
1 !
2 @
3 #
4 $
5 %
6 ^
7 &
8 *
9 (upper dot)*
0 (lower dot)*
`
E
L £
C ©
R ®
Y ¥
S ß
¦
C Ç
c ç
N Ñ
n ñ
\ ¡
/ ¢
o ¤
T Þ
t þ
[
]
h
j
k
l**
. ¿
m «
, »
O Ø
o ø
e œ
A Æ
a æ
; Œ
z ½
x ×
d ÷
u ¬
b µ
h ð
G Ɠ
g ɠ
v ƈ

*Followed by another valid letter.

This is a lowercase L, not** a pipe!

Please note that, when only a lowercase letter is given, the uppercase should do the same thing (i.e. only a lowercase u is given, but U must also produce ¬ with Ctrl). You can use the Shift key in conjunction with Ctrl + Key to do Ctrl + Shift + Key instead (E instead of e for example), but I have tried to lessen Shift's use for these.

Key Shift + Key
1 ¹
2 ²
3 ³
4
5
6
7
8
9
0 °*

*This is the degree character, not a superscript zero.

If I have missed anything, or I have either a duplicate key or a duplicate character in both tables, please reply.

ChaosCat commented 7 years ago

The keyboard is (almost) ready

The layout is ready, the only thing left to do is a bit of real-time testing and packaging as a DLL along with writing some installation instructions. By the way, there were 3 duplicate keys which I handled in a special way (the letters h, o, and C) but the cases were handled in a proper way.

Here are a few notes about the keyboard implementations:

1. Upper case is the default system and all lowercase letters can be accessed with {Shift} (Examples: {Shift} + R = r, {Shift} + T = t, {Shift} + 0 = °) 2. {Ctrl} + {Key} (default) = Uppercase version of a special character (Examples: {Ctrl} + C = Ç, {Ctrl} + E = €, {Ctrl} + Y = ¥) 3. In order to access the lowercase version of a special character use {Shift} + {Ctrl} + {Key} (Examples: {Shift} + {Ctrl} + c = ç, {Ctrl} + {Shift} + z = ½) 4. The duplicate characters (h, o, C) can be accessed using right alt key {AltGr} or alternatively ({Alt} + {Ctrl}). and thus:

5. I am not too sure if the upper and bottom dot function the way they should in real Jelly code (currently "Combining dot above/below" are used). 6. All other keys / combinations on the keyboard currently do nothing although the keyboard doesn't include the full Jelly charset.

Any requests/insights before I build it and proceed to the final stage?

GolfingSuccess commented 7 years ago

@ChaosCat Of course combination characters are invalid. I tried to avoid Alt. The (upper dot) and (lower dot) are meant to be modifier combinations that must be followed by another letter. Here are all the upper-dot and lower-dot characters that must be supported:

ȦḂĊḊĖḞĠḢİĿṀṄȮṖṘṠṪẆẊȧḃċḟḣŀṁȯṗṙṡṫẋẇż ẠḄḌḤỊḲḶṂṆỌṚṢṬỤṾỴạḅḍịḷọṛṣṭ

Any other dot character must not be supported (Ctrl-9 and e must not produce ė, for example). Also, I would recommend supporting Caps Lock.

I do not think supporting the whole code page is an urgency, because not all characters are used up yet.

Oh, and please do Ctrl+Alt for ® too, to avoid confusion.

ChaosCat commented 7 years ago

Hmm, I don't think that modifying keys in a way so they'd combine into a single character (such as the Japanese keyboard) is really implementable using MS-KLC. However, I did start using Caps Lock for shifting between uppercase and lowercase. I think about using {shift} as the upper dot modifier (and thus {shift} + {caps} would produce uppercase dot letter) and {AltGr} for the lower dot modifier (same system applies). I will move the current 4 AltGr keys (including ®) to some unassigned keyboard values in the other modes.


Update: finished implementing most of the changes, I'd like to note that I find the KB highly comfortable.

Changelog

*The upper dot and lower dot are no longer necessary (ctrl + x/v should be kept for cut & paste since ctrl + c is already used)

ChaosCat commented 7 years ago

@DennisMitchell I have tested the keyboard and it's installation and it works great (despite it's uhhh... "special" installation procedure) should I add it's source and installation files to a directory in the main jelly repository or should I make a separate repo for it?

GolfingSuccess commented 7 years ago

@ChaosCat Well, you have to implement the modification characters, or the project is just waste that needs to be dumped away. I guess that Shift and Alt do not use combination characters anymore.

ChaosCat commented 7 years ago

@erikkonstas All the characters ȦḂĊḊĖḞĠḢİṀṄȮṖṘṠṪẆẊȧḃċḟḣŀṁȯṗṙṡṫẇẋż and ẠḄḌḤỊḲḶṂṆỌṚṢỤṾỴạḅḍịḷọṛṣ [are those the modification characters you meant¿⁾ are present on the keyboard [As a matter of fact, I am using it right now to write this message⁾,what else am I missing¿

GolfingSuccess commented 7 years ago

@ChaosCat Please allow normal ()? if you can. Also, I think the upper dot can do L too (it's just that L/l have a middle dot, not an upper one). Also, make sure that you have ° instead of ⁰.

ChaosCat commented 7 years ago

@erikkonstas Done. No explanation is better than some screenshots (Although I do intend making a documentation for usage and installation :P) :

Default

jellykb jellykbcaps

Shift

jellykbshft jellykbshftcaps

Right alt (Alt + Ctrl)

jellykbaltgr jellykbaltgrcaps

Ctrl

jellykbctrl

GolfingSuccess commented 7 years ago

@ChaosCat ɠƈø are still missing though :( Yes, I still insist. I insist, for a better layout. Please do not take this personally. I like how the €Þ¥ØÆßðƓ£ÇÑ are put.

ChaosCat commented 7 years ago

@erikkonstas I actually totally understand the way you chose the Ctrl layout, the ß is a strong s, Æ and Ø make perfect sense, same goes for the £ and ¥ which look like an L and Y. Same goes for the other letters... It's actually quite intuitive. I will add the other three characters later on today but more importantly, is the layout logic itself fine (consistent rules, easy to master, productive)? I'd really like to hear an opinion from someone who is a frequent user of jelly.

GolfingSuccess commented 7 years ago

@ChaosCat If you have put the characters in, can you please upload new screenshots?

ConorOBrien-Foxx commented 7 years ago

@GolfingSuccess haha sorry I kind of dropped off the github scene for a while. I've been tending to other things lately. I'll have the layout done by the end of December. It looks like one has already been made, but I'll try my hand at one.

GolfingSuccess commented 7 years ago

@ConorOBrien-Foxx Yes, I am the main suggester of things being done there.

ChaosCat commented 7 years ago

I've found a way to assign dead keys in KLC. So the combinations should work just fine (no combined characters). Problem is, I have to recreate the layout from scratch. If nothing comes up it will be done this weekend.

GolfingSuccess commented 7 years ago

@ChaosCat Umm... done yet?

ChaosCat commented 7 years ago

@GolfingSuccess Actually yeah, I got very busy last year. and I am sure there are a lot of new characters added which the keyboard doesn't support.

jellykb

jellykbcaps *Shift produces the same result as the above image.

jellykbshftctrl

jellykbaltgr

Although I am pretty worried about all the Ctrl + key shortcuts since they collide with the native editor/application/windows ones, why won't we move the keys to AltGr and AltGr + shift?

GolfingSuccess commented 7 years ago

@ChaosCat Lots of chars are missing there...oh and was added.

ChaosCat commented 7 years ago

@GolfingSuccess Which ones are missing? I went over the list above, all the characters with dot above/below (Ȧ to ṭ) are achieved by the combination of Ctrl + 9/0* + [Any valid character].

fionafibration commented 6 years ago

@ChaosCat Is there a download for this? I'd like to start programming in jelly, and I don't really have many other options besides your keyboard layout thingy.

jellyballs commented 5 years ago

Guys maybe you want to try Jelly Balls, an online editor designed to easily write code in Jelly Language.

The features include:

Give it a try: https://jellyballs.github.io

Jelly Balls

Jelly Balls

Jelly Balls

Jelly Balls

rutenkolk commented 5 years ago

Hey, this might be super late to the party but I just wrote a super small collection of scripts called jellyfingers

It should work at least across all *nix systems. It uses the wiki descriptions to let the user search for a character or a combination thereof. With this you should be able to type a bunch of jelly with virtually any keyboard layout. I hope this is of use for anyone else than just me.