mark4 changed the topic of #forth to: Forth Programming | do drop >in | logged by clog at http://bit.ly/91toWN backup at http://forthworks.com/forth/irc-logs/ | If you have two (or more) stacks and speak RPN then you're welcome here! | https://github.com/mark4th
<mark4> veltas: its not currently possible to do that in x4 because i dont support conditional compilation :)
<mark4> veltas: its not currently possible to do that in x4 because i dont support conditional compilation :)
<mark4> got pulldown menus working almost perfectly!!! err... almost lol
<mark4> got pulldown menus working almost perfectly!!! err... almost lol
<mark4> when i draw the menu items into the pulldown it shows the second item on the first line, the third item on the second line.. . and is not showing the first item at all
<mark4> when i draw the menu items into the pulldown it shows the second item on the first line, the third item on the second line.. . and is not showing the first item at all
<mark4> whiskey tango
<mark4> whiskey tango
<mark4> there is also a problem with double width chinese characters overwriting single width characters that overlap them
<mark4> there is also a problem with double width chinese characters overwriting single width characters that overlap them
<mark4> even though the single width character is on top
<mark4> even though the single width character is on top
<mark4> i know how to fix this but... pita
<mark4> i know how to fix this but... pita
<veltas> mark4: You should add conditional compilation, it should be simple enough
<veltas> mark4: You should add conditional compilation, it should be simple enough
<veltas> But nothing there requires conditional compilation, I just have it to try and make intelligent decisions, you can just select the definitions that make sense
<veltas> But nothing there requires conditional compilation, I just have it to try and make intelligent decisions, you can just select the definitions that make sense
<veltas> For x4 I wouldn't bother with CHAR/ because it wouldn't do anything
<veltas> For x4 I wouldn't bother with CHAR/ because it wouldn't do anything
<veltas> And I'm assuming -rot is provided
<veltas> And I'm assuming -rot is provided
<veltas> You might have an issue with your case-sensitive lowercase words though
<veltas> You might have an issue with your case-sensitive lowercase words though
<veltas> I dislike that 1 CHARS isn't 1 by definition tbh
<veltas> I dislike that 1 CHARS isn't 1 by definition tbh
dave0 has quit [Quit: dave's not here]
dave0 has quit [Quit: dave's not here]
<mark4> veltas i deliberately did not implement it but yes it would be easu to implement
<mark4> veltas i deliberately did not implement it but yes it would be easu to implement
<mark4> conditional compilation is something i hate in other languages
<mark4> conditional compilation is something i hate in other languages
<mark4> its makes it very very difficult to determine what is and is not included
<mark4> its makes it very very difficult to determine what is and is not included
<veltas> Well anyway mark4 the point is that my code is not really reliant on the conditional compilation, that's just there so that I don't replace the builtin -ROT if it exists, and I don't do a divide for CHAR/ because it's usually pointless
<veltas> Well anyway mark4 the point is that my code is not really reliant on the conditional compilation, that's just there so that I don't replace the builtin -ROT if it exists, and I don't do a divide for CHAR/ because it's usually pointless
<veltas> Just a compromise between trying to avoid an "environmental dependency" and quality word definitions
<veltas> Just a compromise between trying to avoid an "environmental dependency" and quality word definitions
<veltas> I just started working on a C project, and I am realising that most of the Forths I like have some level of support for calling C libraries
<veltas> I just started working on a C project, and I am realising that most of the Forths I like have some level of support for calling C libraries
<veltas> So I am very tempted to try and rewrite in C
<veltas> So I am very tempted to try and rewrite in C
<veltas> I mean in Forth
<veltas> I mean in Forth
<mark4> putting an FFI in x4 is on the todo list
<mark4> putting an FFI in x4 is on the todo list
<mark4> so i have a flag i can put on my windows that scroll locks them. err its in the FLAGS field of the structure, NOT the ATTRS field lol. no wonder my menus were not showing the first entry in the window
<mark4> so i have a flag i can put on my windows that scroll locks them. err its in the FLAGS field of the structure, NOT the ATTRS field lol. no wonder my menus were not showing the first entry in the window
<mark4> writing the last entry was causing the window to scroll lol
<mark4> writing the last entry was causing the window to scroll lol
<mark4> duh
<mark4> duh
<veltas> In ucurses?
<veltas> In ucurses?
<mark4> ya
<mark4> ya
<mark4> the pulldown menus are working now other than the current item of a pulldown is not yet highlighted and you cant select any items in the pulldown
<mark4> the pulldown menus are working now other than the current item of a pulldown is not yet highlighted and you cant select any items in the pulldown
<mark4> OR execute a selected item... yet
<mark4> OR execute a selected item... yet
<mark4> also, if there is a single wide character overlaying a double wide character things can get glitchy
<mark4> also, if there is a single wide character overlaying a double wide character things can get glitchy
<mark4> i know how to fix, its just a pita
<mark4> i know how to fix, its just a pita
<veltas> Yet another self-inflicted issue mark4, terminals are not the forth way :P
<veltas> Yet another self-inflicted issue mark4, terminals are not the forth way :P
<mark4> terminals ARE the forth way :)
<mark4> terminals ARE the forth way :)
<mark4> anything is the forth way
<mark4> anything is the forth way
<mark4> including X or ick wayland
<mark4> including X or ick wayland
cantstanya has quit [Ping timeout: 268 seconds]
cantstanya has quit [Ping timeout: 268 seconds]
cantstanya has joined #forth
cantstanya has joined #forth
<tabemann> back
<tabemann> back
boru` has joined #forth
boru` has joined #forth
boru has quit [Disconnected by services]
boru has quit [Disconnected by services]
boru` is now known as boru
boru` is now known as boru
<siraben> mark4: ick wayland? wayland is great!
<siraben> mark4: ick wayland? wayland is great!
<mark4> wayland was vaporware for a long time and KDE plasma REQUIRES i have it installed even though im not using it
<mark4> wayland was vaporware for a long time and KDE plasma REQUIRES i have it installed even though im not using it
<mark4> it COULD be great if they ever got it out of pre-beta
<mark4> it COULD be great if they ever got it out of pre-beta
<mark4> got a really weird bug i dont uderstand in this TUI
<mark4> got a really weird bug i dont uderstand in this TUI
<mark4> difficult to explain but you can see it when you run with the pull down menus activated
<mark4> difficult to explain but you can see it when you run with the pull down menus activated
<mark4> its like chinese text in a window behind the pulldown menu is overwriting the border of the menu
<mark4> its like chinese text in a window behind the pulldown menu is overwriting the border of the menu
<mark4> which is drawn second
<mark4> which is drawn second
<mark4> screen is updated with painters algorithm basically
<mark4> screen is updated with painters algorithm basically
<remexre> I'd imagine that's because the character is fullwidth, so it occupies two cells
<remexre> I'd imagine that's because the character is fullwidth, so it occupies two cells
<remexre> easiest solution I can think of after a lot of gin is that you need to draw a border, or at least some sorta overlay that modifies the characters underneath
<remexre> easiest solution I can think of after a lot of gin is that you need to draw a border, or at least some sorta overlay that modifies the characters underneath
<remexre> passing through halfwidth characters, replacing fullwidth characters with spaces
<remexre> passing through halfwidth characters, replacing fullwidth characters with spaces
sts-q has quit [Ping timeout: 240 seconds]
sts-q has quit [Ping timeout: 240 seconds]
<mark4> drawing of double width chars and normal widths chars works perfectly unless there is overlap between them
<mark4> drawing of double width chars and normal widths chars works perfectly unless there is overlap between them
<mark4> and the border thats being obliterated by the double width character is drawn over the TOP of it
<mark4> and the border thats being obliterated by the double width character is drawn over the TOP of it
<mark4> or should be and i cannot see how it can not be
<mark4> or should be and i cannot see how it can not be
<remexre> without a screenshot I can't tell :) but I assume it's a property of the renderer your terminal uses
<remexre> without a screenshot I can't tell :) but I assume it's a property of the renderer your terminal uses
<mark4> you run linux?
<mark4> you run linux?
<mark4> github.com/mark4th/uCurses
<mark4> github.com/mark4th/uCurses
<remexre> fyi your build.sh has a typo
<remexre> fyi your build.sh has a typo
<mark4> it does? lol
<mark4> it does? lol
<remexre> ./configure is misspelled
<remexre> ./configure is misspelled
<mark4> i dont use it
<mark4> i dont use it
<mark4> it should be ../configure
<mark4> it should be ../configure
<remexre> er yeah
<remexre> er yeah
<mark4> because you run that inside the build dir
<mark4> because you run that inside the build dir
<remexre> but the word configure itself is misspelled
<remexre> but the word configure itself is misspelled
<mark4> lol oopts
<mark4> lol oopts
<mark4> i knew that!
<mark4> i knew that!
<mark4> i never use that script, its only there as a howto :)
<mark4> i never use that script, its only there as a howto :)
<mark4> when you run ./u the space bar will pause the windows
<mark4> when you run ./u the space bar will pause the windows
<remexre> how do I trigger the bug? everything appears correct on alacritty 80f7adf
<remexre> how do I trigger the bug? everything appears correct on alacritty 80f7adf
<mark4> f10 will pull down the menus
<mark4> f10 will pull down the menus
<remexre> the demo does look quite cool though :)
<remexre> the demo does look quite cool though :)
<mark4> pull the menus down and hit cursor right once
<mark4> pull the menus down and hit cursor right once
<remexre> oog
<remexre> oog
<remexre> oof*
<remexre> oof*
<remexre> yeah I get that on my machine too
<remexre> yeah I get that on my machine too
<remexre> hm
<remexre> hm
<mark4> so when you see you can hit space when the window with chinese text is at top left
<mark4> so when you see you can hit space when the window with chinese text is at top left
<mark4> and you can see the chinese char obliterating the border chars
<mark4> and you can see the chinese char obliterating the border chars
<remexre> yeah...
<remexre> yeah...
<mark4> but that border char is drawn LAST or... should be
<mark4> but that border char is drawn LAST or... should be
<mark4> it makes no sense
<mark4> it makes no sense
<remexre> does your "damage detection" algo consider those cells "damaged"?
<remexre> does your "damage detection" algo consider those cells "damaged"?
<mark4> what do you mean damage detection?
<mark4> what do you mean damage detection?
<mark4> modified ?
<mark4> modified ?
<remexre> yeah like deciding whether a cell gets redrawn
<remexre> yeah like deciding whether a cell gets redrawn
<mark4> ok so when the chinese character is written into a cell of the screen we know it takes two chars of the display so we mark the next cell in the scren with a DEADCODE marker
<mark4> ok so when the chinese character is written into a cell of the screen we know it takes two chars of the display so we mark the next cell in the scren with a DEADCODE marker
<mark4> but we redraw the ENTIRE screen every frame
<mark4> but we redraw the ENTIRE screen every frame
<mark4> but then only output the changes
<mark4> but then only output the changes
<mark4> so while it would have been [CHINESE][DEADCODE] in the screen itself the DEADCODE character would be overwritten with the | char of the border
<mark4> so while it would have been [CHINESE][DEADCODE] in the screen itself the DEADCODE character would be overwritten with the | char of the border
<mark4> aha i think i know what the problem is
<mark4> aha i think i know what the problem is
<mark4> maybe
<mark4> maybe
sts-q has joined #forth
sts-q has joined #forth
<remexre> also you might already know this, but you don't handle SIGWINCH
<remexre> also you might already know this, but you don't handle SIGWINCH
<mark4> i do know that :)
<mark4> i do know that :)
<mark4> this is going to be very difficult to fix but i know whats causing it now
<mark4> this is going to be very difficult to fix but i know whats causing it now
<mark4> well i sort of fixed it
<mark4> well i sort of fixed it
<mark4> sort of
<mark4> sort of
<mark4> its just causing all kinds of other problems lol
<mark4> its just causing all kinds of other problems lol
<mark4> yea i might just have to now allow overlapping windows grr
<mark4> yea i might just have to now allow overlapping windows grr
<mark4> i can fix it but it makes the menu windows flicker because they are not being drawn fast enough
<mark4> i can fix it but it makes the menu windows flicker because they are not being drawn fast enough
<mark4> and nope it does not fix it anyway
<mark4> and nope it does not fix it anyway
gravicappa has joined #forth
gravicappa has joined #forth
<mark4> this is a freeeeeeking tough one lol
<mark4> this is a freeeeeeking tough one lol
dave0 has joined #forth
dave0 has joined #forth
dave0 has quit [Client Quit]
dave0 has quit [Client Quit]
<xybre> mark4: I'm going to guess that it's because you're only overwriting one of the bytes of the character?
<xybre> mark4: I'm going to guess that it's because you're only overwriting one of the bytes of the character?
<xybre> Oh I didn't keep reading, it's the drawing code, not the buffer itself
<xybre> Oh I didn't keep reading, it's the drawing code, not the buffer itself
<mark4> what i do when i write a wide character into a window is mark the next cell of the window as DEAD
<mark4> what i do when i write a wide character into a window is mark the next cell of the window as DEAD
<mark4> so the cell_t code = DEADCODE
<mark4> so the cell_t code = DEADCODE
<mark4> so. when i write the chinese character into the display that obliterates the border char
<mark4> so. when i write the chinese character into the display that obliterates the border char
<mark4> when i go to write the border char its not changed
<mark4> when i go to write the border char its not changed
<mark4> so its not updated
<mark4> so its not updated
<mark4> and remains obliterated
<mark4> and remains obliterated
<xybre> I've written some (mediocre) terminal utilities in my day and now I'm imagining how much some of them might break with multibyte chars D:
<xybre> I've written some (mediocre) terminal utilities in my day and now I'm imagining how much some of them might break with multibyte chars D:
<mark4> heh
<mark4> heh
<mark4> the solution might be to NOT emit any multi byte char whose next cell is not dead
<mark4> the solution might be to NOT emit any multi byte char whose next cell is not dead
<mark4> thats also non trivial :/
<mark4> thats also non trivial :/
<xybre> There's only like 20 users of my lib that I know of on Github, so luckily it probably hasn't affected anyone but now I need to add an issue just in case
<xybre> There's only like 20 users of my lib that I know of on Github, so luckily it probably hasn't affected anyone but now I need to add an issue just in case
<mark4> heh
<mark4> heh
<xybre> Are you buffering each menu as its own thing before compositing them?
<xybre> Are you buffering each menu as its own thing before compositing them?
<xybre> Or drawing them straight into the display buffer and optimizing the redraws?
<xybre> Or drawing them straight into the display buffer and optimizing the redraws?
<xybre> Looks like the latter, since the menu borders stay corrupted until force redrawn
<xybre> Looks like the latter, since the menu borders stay corrupted until force redrawn
<xybre> Nice looking demo though
<xybre> Nice looking demo though
<xybre> Even if it does make my CPU fans go into turbojet mode
<xybre> Even if it does make my CPU fans go into turbojet mode
<mark4> omg i think i fixed it lol
<mark4> omg i think i fixed it lol
<mark4> every window has a its own buffer
<mark4> every window has a its own buffer
<mark4> the screen has two buffers
<mark4> the screen has two buffers
<mark4> every frame every window is drawn into screen frame 1
<mark4> every frame every window is drawn into screen frame 1
<mark4> when i update the screen i look for only those chars that have changed between frames
<mark4> when i update the screen i look for only those chars that have changed between frames
<mark4> im also doing optimized output of each frame to the display
<mark4> im also doing optimized output of each frame to the display
<mark4> i set an attribute fg/bg/bold/etc and then write every character with the same attribs out by bouncing the cursor all over the map
<mark4> i set an attribute fg/bg/bold/etc and then write every character with the same attribs out by bouncing the cursor all over the map
<xybre> What do you define as a window?
<xybre> What do you define as a window?
<mark4> what do you mean?
<mark4> what do you mean?
<mark4> a window is a buffer that has a position in the screen
<mark4> a window is a buffer that has a position in the screen
<mark4> its a structure and one of the elements of that structure is a pointer to the buffer
<mark4> its a structure and one of the elements of that structure is a pointer to the buffer
<mark4> a window can be attached to a screen
<mark4> a window can be attached to a screen
<xybre> Gotcha. Every system seems to use its own lingo so I wanted to be sure :)
<xybre> Gotcha. Every system seems to use its own lingo so I wanted to be sure :)
<mark4> and when the screen is updated it writes all its windows into its own buffer1
<mark4> and when the screen is updated it writes all its windows into its own buffer1
<mark4> everything in the screen is a window currently
<mark4> everything in the screen is a window currently
<mark4> you do not get to direct write into the screen
<mark4> you do not get to direct write into the screen
<xybre> Hmm. Ctrl-cing doesn't restore cusor visibility when the program exists
<xybre> Hmm. Ctrl-cing doesn't restore cusor visibility when the program exists
<xybre> exits^
<xybre> exits^
<mark4> yea i need to either disable control c or handle it lol
<mark4> yea i need to either disable control c or handle it lol
<mark4> escape to quit
<mark4> escape to quit
<mark4> space to pause
<mark4> space to pause
<mark4> f10 to activate menus. cursor keys to move around
<mark4> f10 to activate menus. cursor keys to move around
<mark4> up/down handlers are not written yet so the activve pulldown cant DO anything yet heh
<mark4> up/down handlers are not written yet so the activve pulldown cant DO anything yet heh
<xybre> Ah, esc does reset the terminal cursor. I instincitvely hit "q" instead of esc for some reason
<xybre> Ah, esc does reset the terminal cursor. I instincitvely hit "q" instead of esc for some reason
<mark4> well handling control c gracefully or ignoring it IS on the todo heh
<mark4> well handling control c gracefully or ignoring it IS on the todo heh
<mark4> ncurses has a thing it does for that
<mark4> ncurses has a thing it does for that
<mark4> turning it off or something
<mark4> turning it off or something
<xybre> Yeah you just trap the signal
<xybre> Yeah you just trap the signal
<mark4> yup
<mark4> yup
<mark4> btw all of that is single threaded btw :)
<mark4> btw all of that is single threaded btw :)
<xybre> Looks like it doesn't handle sigwich yet
<xybre> Looks like it doesn't handle sigwich yet
<xybre> Oh it does, partially
<xybre> Oh it does, partially
<mark4> no you can make the window bigger
<mark4> no you can make the window bigger
<mark4> that wont affect it. making it smaller will screw things up because it dont know lol
<mark4> that wont affect it. making it smaller will screw things up because it dont know lol
<mark4> thats not really part of the library btw
<mark4> thats not really part of the library btw
<xybre> There's some redrawing errors, at least in tmux, and when it's paused it doesn't update the size, so the results are hilarious when you unpause
<xybre> There's some redrawing errors, at least in tmux, and when it's paused it doesn't update the size, so the results are hilarious when you unpause
<mark4> user code would have to handle that
<mark4> user code would have to handle that
<xybre> Ah, I figured that would be part of the lib
<xybre> Ah, I figured that would be part of the lib
<mark4> main.c is not really a demo or even a valid use case scenario, its for me to help debug and find issues :)
<mark4> main.c is not really a demo or even a valid use case scenario, its for me to help debug and find issues :)
<mark4> i can add a function to handle it but i would not know what to do
<mark4> i can add a function to handle it but i would not know what to do
<mark4> the user code would have to
<mark4> the user code would have to
<mark4> because it would have to affect a cold restart
<mark4> because it would have to affect a cold restart
<mark4> on the UI at least
<mark4> on the UI at least
<xybre> Hmm. Yeah, you'd have to create the trap with a reference to the screen struct at the very least, which it wouldn't have unless the users set that up.
<xybre> Hmm. Yeah, you'd have to create the trap with a reference to the screen struct at the very least, which it wouldn't have unless the users set that up.
<mark4> pushed the fix
<mark4> pushed the fix
<mark4> its not 100% perfect but what im doing here is not a normal use case lol
<mark4> its not 100% perfect but what im doing here is not a normal use case lol
<mark4> windows flying around like this would not be normal :)
<mark4> windows flying around like this would not be normal :)
<xybre> It's a really good stress test for the library.. and my CPU ;)
<xybre> It's a really good stress test for the library.. and my CPU ;)
<mark4> smoke test :)
<mark4> smoke test :)
<mark4> what CPU?
<mark4> what CPU?
<mark4> im going to have some real demos such as shaded 3d rotating dots
<mark4> im going to have some real demos such as shaded 3d rotating dots
<mark4> either with gray scales or full 24 bit rgb or both :)
<mark4> either with gray scales or full 24 bit rgb or both :)
<mark4> maybe a breakout game?
<mark4> maybe a breakout game?
<mark4> not sure :)
<mark4> not sure :)
<siraben> mark4: I'd rather have external displays with different DPIs and no screen tearing with wayland than deal with those problems on X
<siraben> mark4: I'd rather have external displays with different DPIs and no screen tearing with wayland than deal with those problems on X
<siraben> guess it depends on the user
<siraben> guess it depends on the user
<mark4> siraben: waland deals with that?
<mark4> siraben: waland deals with that?
<siraben> Yes and yes :)
<siraben> Yes and yes :)
<mark4> what about different resolutions?
<mark4> what about different resolutions?
<siraben> it's honestly the only reason I switched
<siraben> it's honestly the only reason I switched
<mark4> 1080 built in monitor and 4k external?
<mark4> 1080 built in monitor and 4k external?
<siraben> yeah exactly
<siraben> yeah exactly
<siraben> because I have a HIDPI laptop screen and 1080 monitor
<siraben> because I have a HIDPI laptop screen and 1080 monitor
<mark4> x needs to pull their head out and fix that lol
<mark4> x needs to pull their head out and fix that lol
<siraben> and if you scale in the X settings it looks bad on one or the other
<siraben> and if you scale in the X settings it looks bad on one or the other
<xybre> I'm actually running it in a VM, but the host CPU is an i7 6700HQ
<xybre> I'm actually running it in a VM, but the host CPU is an i7 6700HQ
<mark4> i could have gotten a 4k built in monitor on my new laptop
<mark4> i could have gotten a 4k built in monitor on my new laptop
<mark4> but that would have made it more expensie by quite a bit and it was already over 2k :)
<mark4> but that would have made it more expensie by quite a bit and it was already over 2k :)
<mark4> almost 3
<mark4> almost 3
<siraben> yeah you'd have experienced the pain of X with different res displays
<siraben> yeah you'd have experienced the pain of X with different res displays
<siraben> screen tearing was always there but I didn't really mind
<siraben> screen tearing was always there but I didn't really mind
<siraben> but the external display stuff, yeah I want it to just work
<siraben> but the external display stuff, yeah I want it to just work
<mark4> i always want the TOP edges of my monitors aligned
<mark4> i always want the TOP edges of my monitors aligned
<mark4> freeking wm's in linux always align the bottom edge
<mark4> freeking wm's in linux always align the bottom edge
<mark4> grrr
<mark4> grrr
<siraben> not using a tiling window manager?
<siraben> not using a tiling window manager?
<xybre> I wonder what would happen if I ran your demo on my server and looked at it through nested tmuxes over mosh
<xybre> I wonder what would happen if I ran your demo on my server and looked at it through nested tmuxes over mosh
<mark4> FUCK no!
<mark4> FUCK no!
<siraben> what do you mean by top edges aligned?
<siraben> what do you mean by top edges aligned?
<mark4> i might have stated that backwards
<mark4> i might have stated that backwards
<siraben> lol tiling WMs are the greatest
<siraben> lol tiling WMs are the greatest
<mark4> i want the menu bars on each screen aligned
<mark4> i want the menu bars on each screen aligned
<xybre> Tiling WMs are great, that's why I use tmux ;)
<xybre> Tiling WMs are great, that's why I use tmux ;)
<mark4> they would drive me batshit craszy
<mark4> they would drive me batshit craszy
<siraben> xybre: that's more a terminal thing though heh
<siraben> xybre: that's more a terminal thing though heh
<siraben> I use emacs for that
<siraben> I use emacs for that
<mark4> your host cpu is no slouch xy
<mark4> your host cpu is no slouch xy
<siraben> mark4: what do you mean by aligned? are they not already?
<siraben> mark4: what do you mean by aligned? are they not already?
<siraben> might be a KDE specific thing
<siraben> might be a KDE specific thing
<xybre> mark4: yeah it's mobile but very solid
<xybre> mark4: yeah it's mobile but very solid
<mark4> if the top edges of the monitors are aligned and you try move the cursor from one screen to the other when it is at the bottom of the screen it will BLOCK
<mark4> if the top edges of the monitors are aligned and you try move the cursor from one screen to the other when it is at the bottom of the screen it will BLOCK
<mark4> because there is no screen at that posion on the other monitor
<mark4> because there is no screen at that posion on the other monitor
<xybre> mark4: oh yeah I hate that
<xybre> mark4: oh yeah I hate that
<siraben> isn't that intentional?
<siraben> isn't that intentional?
<mark4> yes but
<mark4> yes but
<siraben> move your cursor from one screen to another
<siraben> move your cursor from one screen to another
<mark4> i want to set the alignment so the bottom edge of monitor 1 is aligned with the bottom edge of monitor 2
<mark4> i want to set the alignment so the bottom edge of monitor 1 is aligned with the bottom edge of monitor 2
<mark4> NOT the top edges
<mark4> NOT the top edges
<mark4> i want the BLOCK at the top edge
<mark4> i want the BLOCK at the top edge
<mark4> my mouse is more likely to cross the barrier when it is closer to the bottom
<mark4> my mouse is more likely to cross the barrier when it is closer to the bottom
<siraben> so if you move your cursor down monitor 1, it appears where?
<siraben> so if you move your cursor down monitor 1, it appears where?
<xybre> It would be amazing if it just teleported it to the correct coordinate, unless I told it not to (like if I was using a heterogenous monitor grid)
<xybre> It would be amazing if it just teleported it to the correct coordinate, unless I told it not to (like if I was using a heterogenous monitor grid)
<mark4> no i never align monitors vertically
<mark4> no i never align monitors vertically
<mark4> i align them horizontally
<mark4> i align them horizontally
<mark4> move cursor right from the built in and it moves into the external
<mark4> move cursor right from the built in and it moves into the external
<mark4> the external is 4k
<mark4> the external is 4k
<mark4> the problem is not when moving from the internal to the external but the other way round
<mark4> the problem is not when moving from the internal to the external but the other way round
<siraben> that's strange
<siraben> that's strange
<siraben> i can seemlessly move between the monitors
<siraben> i can seemlessly move between the monitors
<mark4> only if they are exactly the same resolution
<mark4> only if they are exactly the same resolution
<xybre> If they're aligned and the same res it should be fine
<xybre> If they're aligned and the same res it should be fine
<siraben> mark4: ah, yes X tings :P
<siraben> mark4: ah, yes X tings :P
<siraben> s/yes/just/
<siraben> s/yes/just/
<siraben> never had that problem on wayland
<siraben> never had that problem on wayland
<mark4> yes it would be
<mark4> yes it would be
<siraben> like why can't they fix different res monitors
<siraben> like why can't they fix different res monitors
<mark4> do this. put one window on the screen and align it with another smaller window on the screen
<mark4> do this. put one window on the screen and align it with another smaller window on the screen
<siraben> if they fixed that I'd still be using X
<siraben> if they fixed that I'd still be using X
<xybre> Happens on Windows too. Not sure about MacOS.
<xybre> Happens on Windows too. Not sure about MacOS.
<mark4> align them horizontally next to each other
<mark4> align them horizontally next to each other
<mark4> one window ill come lower down on the screen
<mark4> one window ill come lower down on the screen
<mark4> immagine your mouse being bound to the boundries of both windows
<mark4> immagine your mouse being bound to the boundries of both windows
<siraben> xybre: macOS external displays seem to just work
<siraben> xybre: macOS external displays seem to just work
<mark4> you can move between windows where they connect along the edge
<mark4> you can move between windows where they connect along the edge
<siraben> it's real hard to discuss visual things in text heh
<siraben> it's real hard to discuss visual things in text heh
<mark4> but you cannot move the mouse outside either window
<mark4> but you cannot move the mouse outside either window
<mark4> put the mouse at the bottom of the taller window and try moving it towards the smaller one and it will block
<mark4> put the mouse at the bottom of the taller window and try moving it towards the smaller one and it will block
<siraben> mark4: huh what
<siraben> mark4: huh what
<siraben> i might need to try this out in KDE sometime
<siraben> i might need to try this out in KDE sometime
<siraben> i3/sway didn't seem to block things weirdly
<siraben> i3/sway didn't seem to block things weirdly
<xybre> mark4: the demo actually looks worse now, chunks of borders missing even not near 2w chars, and the left side of the menu still gets obliterated. I did make clean and git clean before the build.
<xybre> mark4: the demo actually looks worse now, chunks of borders missing even not near 2w chars, and the left side of the menu still gets obliterated. I did make clean and git clean before the build.
<mark4> if you go into display confiruation in KDE it shows you two virtual monitors
<mark4> if you go into display confiruation in KDE it shows you two virtual monitors
<mark4> which you can stack one on top of the other or one to the left of the other
<mark4> which you can stack one on top of the other or one to the left of the other
<mark4> redo a ../configure ?
<mark4> redo a ../configure ?
<mark4> what term do you use?
<mark4> what term do you use?
<xybre> Yeah I ran the whole build script with the configure
<xybre> Yeah I ran the whole build script with the configure
<mark4> it works on my machine! (tm)
<mark4> it works on my machine! (tm)
<mark4> lol
<mark4> lol
<xybre> It's tmux 3.1b inside gnome-term 3.38.3
<xybre> It's tmux 3.1b inside gnome-term 3.38.3
<mark4> oh it may not work at all in a tmux lol
<mark4> oh it may not work at all in a tmux lol
<mark4> or screen
<mark4> or screen
<mark4> try it outside tmux?
<mark4> try it outside tmux?
<xybre> It was working 99% fine in tmux before
<xybre> It was working 99% fine in tmux before
<mark4> just a normal v term?
<mark4> just a normal v term?
<mark4> its still not 100% perfect but for me its better than it was
<mark4> its still not 100% perfect but for me its better than it was
<xybre> Sure, sec
<xybre> Sure, sec
<mark4> runs great in both gnome-terminal and konsole here
<mark4> runs great in both gnome-terminal and konsole here
<xybre> Here's what I see on startup in a fresh terminal, no tmux https://i.imgur.com/vOeiTm6.png
<xybre> Here's what I see on startup in a fresh terminal, no tmux https://i.imgur.com/vOeiTm6.png
<mark4> what cols.rows do you have?
<mark4> what cols.rows do you have?
<mark4> hrm
<mark4> hrm
<mark4> thats weird
<mark4> thats weird
<mark4> and i set mine to 100x30 so i see the windows overlapping
<mark4> and i set mine to 100x30 so i see the windows overlapping
<siraben> xybre: which window manager is that
<siraben> xybre: which window manager is that
<siraben> oh it's a terminal entirely
<siraben> oh it's a terminal entirely
<xybre> siraben: Yeah I usually just fullscreen my terminal and do everything in it
<xybre> siraben: Yeah I usually just fullscreen my terminal and do everything in it
<mark4> try it at 100x30?
<mark4> try it at 100x30?
<mark4> im not getting those glitches here at all
<mark4> im not getting those glitches here at all
<xybre> Hmm. I don't like how it writes black to the screen on exit. There's another way to do that, lemme see if I can remember.
<xybre> Hmm. I don't like how it writes black to the screen on exit. There's another way to do that, lemme see if I can remember.
<mark4> im setting black bg, white fg, clearing screen and exiting i think
<mark4> im setting black bg, white fg, clearing screen and exiting i think
<mark4> which might not be your preferences lol
<mark4> which might not be your preferences lol
<mark4> but main.c is not really an application or demo lol
<mark4> but main.c is not really an application or demo lol
<mark4> YOUR main.c would handle that diff :)
<mark4> YOUR main.c would handle that diff :)
<mark4> you can edit main.c tho
<mark4> you can edit main.c tho
<mark4> set_fg(WHITE);
<mark4> set_fg(WHITE);
<mark4> set_bg(BLACK);
<mark4> set_bg(BLACK);
<mark4> flipflop those or something
<mark4> flipflop those or something
<xybre> Still happens on a smaller window, thought the pattern is different https://i.imgur.com/L27wnI9.png
<xybre> Still happens on a smaller window, thought the pattern is different https://i.imgur.com/L27wnI9.png
<mark4> it actually makes no sense for those chars on the left edge to be broken like that
<mark4> it actually makes no sense for those chars on the left edge to be broken like that
<mark4> the chars to the left of them are also single width chars
<mark4> the chars to the left of them are also single width chars
<xybre> mark4: right but writing out anything to clear the screen isn't ideal. It's fine to throw it into the user's court, but it would be nice to have lib support for cleanup is all :)
<xybre> mark4: right but writing out anything to clear the screen isn't ideal. It's fine to throw it into the user's court, but it would be nice to have lib support for cleanup is all :)
<mark4> xybre: theres a way to save screen state on entry into a console app and to restore it on exit
<mark4> xybre: theres a way to save screen state on entry into a console app and to restore it on exit
<mark4> but the library would not be the one to handle that
<mark4> but the library would not be the one to handle that
<mark4> or maybe it would
<mark4> or maybe it would
<mark4> hrn
<mark4> hrn
<mark4> have to thunk about that
<mark4> have to thunk about that
<xybre> Yeah clear screen is just \e[2J
<xybre> Yeah clear screen is just \e[2J
<mark4> heh i dont need to hard code that
<mark4> heh i dont need to hard code that
<mark4> i compile the escape seauence by parsing the terminfo format string :)
<mark4> i compile the escape seauence by parsing the terminfo format string :)
<xybre> Right, pull it from termux or whatever
<xybre> Right, pull it from termux or whatever
<mark4> look in parse.c :)
<mark4> look in parse.c :)
<xybre> terminfo I mean
<xybre> terminfo I mean
<mark4> clear=\E[H\E[2J,
<mark4> clear=\E[H\E[2J,
<mark4> that looks like two operations maybe the first is home?
<mark4> that looks like two operations maybe the first is home?
<mark4> home=\E[H,
<mark4> home=\E[H,
<mark4> yup :)
<mark4> yup :)
<mark4> CLEAR is a HOME and then a cear
<mark4> CLEAR is a HOME and then a cear
<xybre> \e[H means home
<xybre> \e[H means home
<xybre> Yeah
<xybre> Yeah
<mark4> i dont have the escape seauences memorized, my parser handles that for me
<mark4> i dont have the escape seauences memorized, my parser handles that for me
<xybre> I've written a lot of ANSI by hand, for good or ill
<xybre> I've written a lot of ANSI by hand, for good or ill
<mark4> wish terminfo gave the format strings for shifted cursor up and down and left and right
<mark4> wish terminfo gave the format strings for shifted cursor up and down and left and right
<mark4> i ferget which 2 are missing
<mark4> i ferget which 2 are missing
<mark4> up and down i think
<mark4> up and down i think
<xybre> A is up, B is down
<xybre> A is up, B is down
<mark4> ?
<mark4> ?
<mark4> \e[A ?
<mark4> \e[A ?
<xybre> E and F according to my notes should do the same but might not work on all terms. The comments don't explain why
<xybre> E and F according to my notes should do the same but might not work on all terms. The comments don't explain why
<xybre> \e[5A to move up 5 lines
<xybre> \e[5A to move up 5 lines
<mark4> the cursor up and down keys will not report the same sequences if keyboard transmit mode is off
<mark4> the cursor up and down keys will not report the same sequences if keyboard transmit mode is off
<xybre> Weird
<xybre> Weird
<mark4> you send an smkx and it turns keyboard transmit mode and now the cursor keys give the escape sequences given in terminfo
<mark4> you send an smkx and it turns keyboard transmit mode and now the cursor keys give the escape sequences given in terminfo
<mark4> if you do rmkx and log the escape seuences with cursor u/down then do smkx and log them
<mark4> if you do rmkx and log the escape seuences with cursor u/down then do smkx and log them
<mark4> they are different
<mark4> they are different
<xybre> Is that the difference between A and E?
<xybre> Is that the difference between A and E?
<mark4> no idea what sequences either return lol
<mark4> no idea what sequences either return lol
<mark4> the cursor up keys should not move the cursor at all ever
<mark4> the cursor up keys should not move the cursor at all ever
<mark4> im not talking about OUTPUTTING cursor up
<mark4> im not talking about OUTPUTTING cursor up
<xybre> Oh you mean ... right sorry
<xybre> Oh you mean ... right sorry
<mark4> im talking about INPUTTING the escape sequences returned by the keyboard when you hit those kehys
<mark4> im talking about INPUTTING the escape sequences returned by the keyboard when you hit those kehys
<xybre> Yup I'm caught up now
<xybre> Yup I'm caught up now
<mark4> the cursor up and down keys will report different values in keyboard transmit mode
<mark4> the cursor up and down keys will report different values in keyboard transmit mode
<mark4> are relatives cursor moves faster than absolute cursor moves?
<mark4> are relatives cursor moves faster than absolute cursor moves?
<xybre> Hmm. My keyboard parser shows the same sequences for keyboard input. Just \e[A for up and \e[D for left, for example.
<xybre> Hmm. My keyboard parser shows the same sequences for keyboard input. Just \e[A for up and \e[D for left, for example.
<xybre> But I think I assume it's always in the correct mode.
<xybre> But I think I assume it's always in the correct mode.
<mark4> there are cud1 cuf1 cuu1 cud1 and cud cuf cuu and cud which take parameters
<mark4> there are cud1 cuf1 cuu1 cud1 and cud cuf cuu and cud which take parameters
<mark4> output an smkx and check those again :)
<mark4> output an smkx and check those again :)
<mark4> smkx=\E[?1h\E=,
<mark4> smkx=\E[?1h\E=,
<xybre> I never tested, but would *hope* that relative is faster for a single operation
<xybre> I never tested, but would *hope* that relative is faster for a single operation
<xybre> It likely depends on the terminal's internal representation
<xybre> It likely depends on the terminal's internal representation
<mark4> erm the comma on the end of that smkx is not part of the escape seq
<mark4> erm the comma on the end of that smkx is not part of the escape seq
<mark4> the way to test if one is faster than the other is to do 100 million absolute cursor moves
<mark4> the way to test if one is faster than the other is to do 100 million absolute cursor moves
<mark4> and then do 100 million relative cursor moves where you are only adjusting in either the X or Y coord at one timne
<mark4> and then do 100 million relative cursor moves where you are only adjusting in either the X or Y coord at one timne
<mark4> thers also hpa and vpa which are absolute moves but only in one axis
<mark4> thers also hpa and vpa which are absolute moves but only in one axis
<xybre> It's funny you're using all the terminfo shortnames I've never heard of and I'm using all the raw VT codes you never have to deal with
<xybre> It's funny you're using all the terminfo shortnames I've never heard of and I'm using all the raw VT codes you never have to deal with
<mark4> heh
<mark4> heh
<mark4> i learned how to do all this by doing man 5 terminfo for 8 hours
<mark4> i learned how to do all this by doing man 5 terminfo for 8 hours
<xybre> Yeah all my ANSI stuff was learned across several years of pain and misery ahaha
<xybre> Yeah all my ANSI stuff was learned across several years of pain and misery ahaha
<mark4> thomas dicky is also not much help but i do not hold that against him at all
<mark4> thomas dicky is also not much help but i do not hold that against him at all
<mark4> heh
<mark4> heh
<xybre> I intend to build at least 1 more terminal library before I die, but I want to finish the one I've been playing around with in Crystal before I get to that one
<xybre> I intend to build at least 1 more terminal library before I die, but I want to finish the one I've been playing around with in Crystal before I get to that one
<mark4> you planning on dieing any time soon? heh
<mark4> you planning on dieing any time soon? heh
<xybre> And it looks like I was in the middle of a bunch of changes to another lib back in June and never committed them. woo
<xybre> And it looks like I was in the middle of a bunch of changes to another lib back in June and never committed them. woo
<xybre> Not planning on it :)
<xybre> Not planning on it :)
<mark4> good plan :)
<mark4> good plan :)
<mark4> where are you located?
<mark4> where are you located?
<xybre> Ah I see, the modes you're talking about are for the keypad, so it can do numbers or arrows on the terminal level. I guess numlock was too complicated to put into the keyboard itself back then
<xybre> Ah I see, the modes you're talking about are for the keypad, so it can do numbers or arrows on the terminal level. I guess numlock was too complicated to put into the keyboard itself back then
<mark4> ooooh thats what it does?
<mark4> ooooh thats what it does?
<mark4> !
<mark4> !
<mark4> but it changes the codes for the dedicated cursor keys too
<mark4> but it changes the codes for the dedicated cursor keys too
<mark4> im still looking for my break key and my clear key lol
<mark4> im still looking for my break key and my clear key lol
<xybre> Yeah, it changes the prefixes for the input codes in general
<xybre> Yeah, it changes the prefixes for the input codes in general
<xybre> I *think* it has something to do with compatibility between different protocols or models at the time
<xybre> I *think* it has something to do with compatibility between different protocols or models at the time
<mark4> is there a rule for determining shift, alt, control, shift+alt, shift+control, alt+control, shift+alt+control?
<mark4> is there a rule for determining shift, alt, control, shift+alt, shift+control, alt+control, shift+alt+control?
<mark4> for ANY key?
<mark4> for ANY key?
<mark4> on ANY terminal lol
<mark4> on ANY terminal lol
<xybre> Well for "any" terminal is always going to be false haha
<xybre> Well for "any" terminal is always going to be false haha
<xybre> But for any Xterm/Vt100-ish one, just maybe
<xybre> But for any Xterm/Vt100-ish one, just maybe
<mark4> without hard coding the escape sequences for every single one of those codes for every terminal type
<mark4> without hard coding the escape sequences for every single one of those codes for every terminal type
<mark4> for example the console editor joe
<mark4> for example the console editor joe
<mark4> control y is delete a line
<mark4> control y is delete a line
<mark4> except control y is not listed in terminfo on ANY terminal
<mark4> except control y is not listed in terminfo on ANY terminal
<mark4> so... it hard codes those for every terminal for every command keypress it has?
<mark4> so... it hard codes those for every terminal for every command keypress it has?
<xybre> Probably
<xybre> Probably
<mark4> this cluster fuck console input is exactly why the guy that wrote vi also created termcap
<mark4> this cluster fuck console input is exactly why the guy that wrote vi also created termcap
<xybre> Most apps only use terminfo for some things
<xybre> Most apps only use terminfo for some things
<mark4> which then morphed into terminfo
<mark4> which then morphed into terminfo
<xybre> That's why I want one (modern) ANSI lib to rule them all
<xybre> That's why I want one (modern) ANSI lib to rule them all
<mark4> is that not what vte is?
<mark4> is that not what vte is?
<xybre> Most libs are giant and slow and incomplete
<xybre> Most libs are giant and slow and incomplete
<mark4> imm tiny and fast and incomplete :P
<mark4> imm tiny and fast and incomplete :P
<xybre> I don't want 30MB of terminals from the 70s that only exist in museums and still have to write my own handlers for iTerm or whatever
<xybre> I don't want 30MB of terminals from the 70s that only exist in museums and still have to write my own handlers for iTerm or whatever
<mark4> -rwxr-xr-x 1 mark4 mark4 37440 Mar 22 02:27 u
<mark4> -rwxr-xr-x 1 mark4 mark4 37440 Mar 22 02:27 u
<xybre> See, if it's tiny and fast, incomplete isn't such a thing
<xybre> See, if it's tiny and fast, incomplete isn't such a thing
<mark4> support for that dead garbage should be removed from terminfo and ncurses
<mark4> support for that dead garbage should be removed from terminfo and ncurses
<mark4> and there should be a minimum set of format strings that EVERY terminal must supply in their terminfo
<mark4> and there should be a minimum set of format strings that EVERY terminal must supply in their terminfo
<mark4> for example. most terminals give the format string for the sgr0 but almost none of them give the format string for the sgr
<mark4> for example. most terminals give the format string for the sgr0 but almost none of them give the format string for the sgr
<mark4> sgr0=\E(B\E[m
<mark4> sgr0=\E(B\E[m
<mark4> rep=%p1%c\E[%p2%{1}%-%db i should try to use this :)
<mark4> rep=%p1%c\E[%p2%{1}%-%db i should try to use this :)
<mark4> repeat character in parameter 1 parameter 2 times
<mark4> repeat character in parameter 1 parameter 2 times
<mark4> can you read terminfo format strings?
<mark4> can you read terminfo format strings?
<mark4> that emits parameter 1 as a char then decrements p2 then i have NO freeking idea what %db means beause %d is to output a number lol
<mark4> that emits parameter 1 as a char then decrements p2 then i have NO freeking idea what %db means beause %d is to output a number lol
<mark4> oh it must be outputting p2-1 as a number then a b and the terminal repeats the last char emitted by that many
<mark4> oh it must be outputting p2-1 as a number then a b and the terminal repeats the last char emitted by that many
<xybre> Okay so I modified my lib to output the raw seq from the keyboard, looks like it's pretty straight forward for control/shift/etc handling
<xybre> Okay so I modified my lib to output the raw seq from the keyboard, looks like it's pretty straight forward for control/shift/etc handling
<xybre> So, for example, this is F1: \eOP
<xybre> So, for example, this is F1: \eOP
<xybre> shift f1 \e[1;2P control f1 \e[1;5P control shift f1 \e[1;6P
<xybre> shift f1 \e[1;2P control f1 \e[1;5P control shift f1 \e[1;6P
<xybre> alt f1 is eaten by my WM ...
<xybre> alt f1 is eaten by my WM ...
<mark4> aha
<mark4> aha
<mark4> is that an e zero p for f1 ?
<mark4> is that an e zero p for f1 ?
<xybre> But \e[1;3R is alt-f3, so you get the idea
<xybre> But \e[1;3R is alt-f3, so you get the idea
<mark4> or an Oh
<mark4> or an Oh
<xybre> Like OPerator
<xybre> Like OPerator
<mark4> ya
<mark4> ya
<xybre> OP OQ OR OS for f1 f2 f3 f4
<xybre> OP OQ OR OS for f1 f2 f3 f4
<xybre> But it's \e[15~ through \e[21~ for f5-f10 because reasons I guess
<xybre> But it's \e[15~ through \e[21~ for f5-f10 because reasons I guess
<mark4> if i see a 1; in the seq i know its modified. and the 5/6 tells me if its shift/alt/ctrl
<mark4> if i see a 1; in the seq i know its modified. and the 5/6 tells me if its shift/alt/ctrl
<mark4> etc
<mark4> etc
<mark4> lol
<mark4> lol
<xybre> I wonder if that keypad mode thingy changes those too
<xybre> I wonder if that keypad mode thingy changes those too
<mark4> those keys were an afterthough back in the day and someone else added the codes LO
<mark4> those keys were an afterthough back in the day and someone else added the codes LO
<mark4> rep=%p1%c\E[%p2%{1}%-%db, : foo 'x' emit $1b emit '[' emit '5' emit 'b' emit ;
<mark4> rep=%p1%c\E[%p2%{1}%-%db, : foo 'x' emit $1b emit '[' emit '5' emit 'b' emit ;
<mark4> foo emits 5 xs lol
<mark4> foo emits 5 xs lol
<mark4> 6 i mean 5 more after the initial one emitted
<mark4> 6 i mean 5 more after the initial one emitted
<mark4> its almost 3am here and my brain is getting tired and still running full tilt boogie lol
<mark4> its almost 3am here and my brain is getting tired and still running full tilt boogie lol
<xybre> Also, for normal keys "alt" is usually just a prefix added to the usual key, so like \eB is shift-alt-b
<xybre> Also, for normal keys "alt" is usually just a prefix added to the usual key, so like \eB is shift-alt-b
<mark4> aha
<mark4> aha
<xybre> Yeah it's 2am here in Chicago
<xybre> Yeah it's 2am here in Chicago
<mark4> that universal across all terminals?
<mark4> that universal across all terminals?
<mark4> i doubt it lol
<mark4> i doubt it lol
<mark4> the shift made it capital the alt put an escape on the front
<mark4> the shift made it capital the alt put an escape on the front
<mark4> ezpz
<mark4> ezpz
<xybre> And for ctrl+key you'll end up with fun stuff like 0x02 for ctrl-b and you don't get the shift info at all
<xybre> And for ctrl+key you'll end up with fun stuff like 0x02 for ctrl-b and you don't get the shift info at all
<mark4> so shift and control dont cooperate with each other?
<mark4> so shift and control dont cooperate with each other?
<mark4> control alt should tho
<mark4> control alt should tho
<xybre> Shift+control works for the f keys
<xybre> Shift+control works for the f keys
<mark4> but not for a b c ?
<mark4> but not for a b c ?
<xybre> And control alt b does the expected \e0x02
<xybre> And control alt b does the expected \e0x02
<mark4> :)
<mark4> :)
<xybre> (I mean \u0002 not a literal zero ex)
<xybre> (I mean \u0002 not a literal zero ex)
<mark4> just need a state machine to decompile those into their respective keys and then i can set a glbal shift/alt/control flag and return the key :)
<mark4> just need a state machine to decompile those into their respective keys and then i can set a glbal shift/alt/control flag and return the key :)
<mark4> aha
<mark4> aha
<mark4> oh yea i read it as meaning TWO not '0' 'x' '0' '2' heh
<mark4> oh yea i read it as meaning TWO not '0' 'x' '0' '2' heh
<mark4> but good catch to clarify that :)
<mark4> but good catch to clarify that :)
<mark4> anyway i need to go into power saving mode and recharge :)
<mark4> anyway i need to go into power saving mode and recharge :)
<xybre> Oh dear. . ? \u001F \u007F
<xybre> Oh dear. . ? \u001F \u007F
<mark4> awesome talking to someone who knnows about this kind of stuff :)
<mark4> awesome talking to someone who knnows about this kind of stuff :)
<mark4> backspace and delete?
<mark4> backspace and delete?
<xybre> So some keys return different data for control shift and some return only control
<xybre> So some keys return different data for control shift and some return only control
<mark4> well nobody uses control shift alt f1 alt shift b control alt q in an editor lol
<mark4> well nobody uses control shift alt f1 alt shift b control alt q in an editor lol
<mark4> so its purely academic
<mark4> so its purely academic
<mark4> sort of :)
<mark4> sort of :)
<mark4> anyway, time for zzz
<mark4> anyway, time for zzz
<xybre> Delete works like an f key which is nice, \e[3;6~
<xybre> Delete works like an f key which is nice, \e[3;6~
<xybre> gn!
<xybre> gn!
f-a has joined #forth
f-a has joined #forth
hosewiejacke has joined #forth
hosewiejacke has joined #forth
f-a has quit [Ping timeout: 246 seconds]
f-a has quit [Ping timeout: 246 seconds]
f-a has joined #forth
f-a has joined #forth
f-a has quit [Quit: leaving]
f-a has quit [Quit: leaving]
f-a has joined #forth
f-a has joined #forth
_whitelogger_ has quit [Remote host closed the connection]
_whitelogger_ has joined #forth
_whitelogger_ has joined #forth
hosewiejacke has quit [Ping timeout: 276 seconds]
hosewiejacke has quit [Ping timeout: 276 seconds]
hosewiejacke has joined #forth
hosewiejacke has joined #forth
andrei-n has joined #forth
andrei-n has joined #forth
andrei-n has quit [Quit: Leaving]
andrei-n has quit [Quit: Leaving]
tech_exorcist has joined #forth
tech_exorcist has joined #forth
f-a has quit [Read error: Connection reset by peer]
f-a has quit [Read error: Connection reset by peer]
f-a has joined #forth
f-a has joined #forth
hosewiejacke has quit [Ping timeout: 240 seconds]
hosewiejacke has quit [Ping timeout: 240 seconds]
hosewiejacke has joined #forth
hosewiejacke has joined #forth
tech_exorcist has quit [Ping timeout: 264 seconds]
tech_exorcist has quit [Ping timeout: 264 seconds]
tech_exorcist has joined #forth
tech_exorcist has joined #forth
hosewiejacke has quit [Read error: Connection reset by peer]
hosewiejacke2 has joined #forth
hosewiejacke has quit [Read error: Connection reset by peer]
hosewiejacke2 has joined #forth
<mark4> up down left right now work in the menus
<mark4> up down left right now work in the menus
cantstanya has quit [Ping timeout: 268 seconds]
cantstanya has quit [Ping timeout: 268 seconds]
<mark4> that took 2 hours of making cofree, procrastinating, watching youtube and 5 minutes of coding lol
<mark4> that took 2 hours of making cofree, procrastinating, watching youtube and 5 minutes of coding lol
<mark4> there are still some visual glitches but i understand whats causing them and can fix one of them fairly easily i think
<mark4> there are still some visual glitches but i understand whats causing them and can fix one of them fairly easily i think
cantstanya has joined #forth
cantstanya has joined #forth
f-a has quit [Read error: Connection reset by peer]
f-a has quit [Read error: Connection reset by peer]
f-a has joined #forth
f-a has joined #forth
lonjil has quit [Quit: Quit.]
lonjil has quit [Quit: Quit.]
lonjil has joined #forth
lonjil has joined #forth
cantstanya has quit [Remote host closed the connection]
cantstanya has quit [Remote host closed the connection]
<mark4> ok so my backspace key on xterm returns a 0x08 and terminfo says 0x08
<mark4> ok so my backspace key on xterm returns a 0x08 and terminfo says 0x08
<mark4> on konsole a backspace returns 0x7f but terminfo says 0x08
<mark4> on konsole a backspace returns 0x7f but terminfo says 0x08
cantstanya has joined #forth
cantstanya has joined #forth
<mark4> just reported a bug against konsole beause its utter fucking bullshit for a key to return a value thats inconsistent with the terminfo data
<mark4> just reported a bug against konsole beause its utter fucking bullshit for a key to return a value thats inconsistent with the terminfo data
hosewiejacke2 has quit [Ping timeout: 240 seconds]
hosewiejacke2 has quit [Ping timeout: 240 seconds]
Zarutian_HTC has joined #forth
Zarutian_HTC has joined #forth
a3f has quit [Ping timeout: 240 seconds]
a3f has quit [Ping timeout: 240 seconds]
a3f has joined #forth
a3f has joined #forth
hosewiejacke has joined #forth
hosewiejacke has joined #forth
<nihilazo> is there a tutorial anywhere about doing string stuff in forth? I'm really confused about how strings work
<nihilazo> is there a tutorial anywhere about doing string stuff in forth? I'm really confused about how strings work
<nihilazo> especially building strings
<nihilazo> especially building strings
f-a has quit [Quit: leaving]
f-a has quit [Quit: leaving]
Zarutian_HTC has quit [Remote host closed the connection]
Zarutian_HTC has quit [Remote host closed the connection]
<lispmacs[work]> nihilazo: there is a short tutorial in the gforth manual
<lispmacs[work]> nihilazo: there is a short tutorial in the gforth manual
<nihilazo> thanks
<nihilazo> thanks
<lispmacs[work]> I found the Forth Programmer's Handbook to be a helpful reference but you have to buy it
<lispmacs[work]> I found the Forth Programmer's Handbook to be a helpful reference but you have to buy it
<mark4> i would find that book to be utterly unhelpful for learning forth but good for learning ans forth which is not forth :)
<mark4> i would find that book to be utterly unhelpful for learning forth but good for learning ans forth which is not forth :)
gravicappa has quit [Ping timeout: 240 seconds]
gravicappa has quit [Ping timeout: 240 seconds]
gravicappa has joined #forth
gravicappa has joined #forth
f-a has joined #forth
f-a has joined #forth
a3f has quit [Ping timeout: 272 seconds]
a3f has quit [Ping timeout: 272 seconds]
a3f has joined #forth
a3f has joined #forth
Zarutian_HTC has joined #forth
Zarutian_HTC has joined #forth
<xybre> mark4: you submitted a bug to terminfo, right?
<xybre> mark4: you submitted a bug to terminfo, right?
<mark4> to konsole
<mark4> to konsole
<mark4> i think terminfo is 100% correct
<mark4> i think terminfo is 100% correct
<mark4> it says delete is ^h
<mark4> it says delete is ^h
<mark4> but the terminal returns 0x7f
<mark4> but the terminal returns 0x7f
<xybre> My terminal also returns 0x7f for backspace
<xybre> My terminal also returns 0x7f for backspace
<xybre> Traditionally 0x08 would be backspace, as in one-space-back I think, but a lot of modern systems use 0x7f which is actually the delete *character*, rather than the delete command output that the actual delete key uses
<xybre> Traditionally 0x08 would be backspace, as in one-space-back I think, but a lot of modern systems use 0x7f which is actually the delete *character*, rather than the delete command output that the actual delete key uses
<xybre> Terminal emulators and terminal applications vary wildly about how they treat the backspace and delete keys due to conflicting/overlapping historical uses, though it's gotten much better in the last decade
<xybre> Terminal emulators and terminal applications vary wildly about how they treat the backspace and delete keys due to conflicting/overlapping historical uses, though it's gotten much better in the last decade
<xybre> If you have ever used Putty there's like a whole config page dedicated just to backspace and delete sequence options
<xybre> If you have ever used Putty there's like a whole config page dedicated just to backspace and delete sequence options
<xybre> Is it bullshit? Absolutely! But since terminfo is supposed to be descriptive, I would argue that terminfo is the one with the bug
<xybre> Is it bullshit? Absolutely! But since terminfo is supposed to be descriptive, I would argue that terminfo is the one with the bug
<Zarutian_HTC> 0x08 is backspace, that is move one space back, 0x7f is delete or 'punch out'. I have seen systems that send 0x08 followed by 0x7f
<Zarutian_HTC> 0x08 is backspace, that is move one space back, 0x7f is delete or 'punch out'. I have seen systems that send 0x08 followed by 0x7f
<xybre> Yep, it's a minefield
<xybre> Yep, it's a minefield
<xybre> It's similar to carriage return + line feed
<xybre> It's similar to carriage return + line feed
hosewiejacke has quit [Ping timeout: 245 seconds]
hosewiejacke has quit [Ping timeout: 245 seconds]
mark4 has quit [Read error: Connection reset by peer]
mark4 has quit [Read error: Connection reset by peer]
f-a has quit [Read error: Connection reset by peer]
f-a has quit [Read error: Connection reset by peer]
f-a has joined #forth
f-a has joined #forth
gravicappa has quit [Ping timeout: 265 seconds]
gravicappa has quit [Ping timeout: 265 seconds]
hosewiejacke has joined #forth
hosewiejacke has joined #forth
hosewiejacke has quit [Client Quit]
hosewiejacke has quit [Client Quit]
mark4 has joined #forth
mark4 has joined #forth
Zarutian_HTC has quit [Remote host closed the connection]
Zarutian_HTC has quit [Remote host closed the connection]
jedb has joined #forth
jedb has joined #forth
tech_exorcist has quit [Quit: tech_exorcist]
tech_exorcist has quit [Quit: tech_exorcist]
jess has quit [Quit: K-Lined]
jess has quit [Quit: K-Lined]
j has joined #forth
j has joined #forth