Izem has quit [Quit: Going offline, see ya! (www.adiirc.com)]
gog has quit [Ping timeout: 256 seconds]
<klange>
haha 42 pages of shit in the moderation queue fml
<zid>
ban everybody
<klange>
p much
<zid>
what subreddit?
<klange>
the osdev forum :P
<zid>
ah
<zid>
ban everybody twice
<klange>
i set up a little browser extension just to add a "ban the poster" option to the moderation queue alongside deleting it
<klange>
I would like to go in and further remove these accounts completely from the database, but don't have that access and our fearless leader has been unresponsive for months
<klange>
thankfully this appears to be a few hundred topics from the same account with short russian titles so makes scanning the queue for potentially legit posts easier than some of the other spam we've gotten recently
<klange>
oh i can sort by author, excellent, just keep mashing until another name appears
<zid>
sounds like it'd be faster to just log into the DB
<zid>
and delete from queue where author
<klange>
if only I could
<klange>
I would also change the ****ing "captcha"
<klange>
I am going to petition chase to just hand over everything, I'll pay the bills and _actually be around_ to manage things...
<zid>
osdev forums and wikis and stuff still ran by that absentee guy?
<zid>
sounds it
<klange>
The one thing I haven't tried is calling the phone number he provided one time, but mostly because it would be an international long distance call and cost me a bunch of money, or I'd have to do it through a service like Skype and probably be blocked :)
smeso has joined #osdev
sts-q has joined #osdev
dude12312414 has joined #osdev
nyah has quit [Ping timeout: 272 seconds]
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
Beato has joined #osdev
wille has joined #osdev
<geist>
fwiw i'd be willing to chip in a bit on that too
^[ has joined #osdev
Bonstra has joined #osdev
ElectronApps has quit [Remote host closed the connection]
ElectronApps has joined #osdev
flx has quit [Ping timeout: 245 seconds]
dutch has quit [Ping timeout: 258 seconds]
dutch has joined #osdev
GeDaMo has joined #osdev
aleamb has quit [Quit: bye]
lg has quit [Quit: leaving]
lg has joined #osdev
zoey has joined #osdev
iorem has joined #osdev
mctpyt has quit [Ping timeout: 258 seconds]
mctpyt has joined #osdev
sortie has joined #osdev
ElectronApps has quit [Read error: Connection reset by peer]
ElectronApps has joined #osdev
nohit has joined #osdev
gog has joined #osdev
sortie has quit [Ping timeout: 258 seconds]
mctpyt has quit [Ping timeout: 268 seconds]
zoey has quit [Quit: Leaving]
lg_ has joined #osdev
lg has quit [Ping timeout: 250 seconds]
sortie has joined #osdev
lg has joined #osdev
lg_ has quit [Ping timeout: 252 seconds]
dormito has joined #osdev
mctpyt has joined #osdev
anon16 has quit [Ping timeout: 256 seconds]
Arthuria has joined #osdev
anon16 has joined #osdev
Brnocrist has joined #osdev
mhall has joined #osdev
nyah has joined #osdev
isaacwoods has joined #osdev
ElectronApps has quit [Remote host closed the connection]
ElectronApps has joined #osdev
flx has joined #osdev
dude12312414 has joined #osdev
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
nismbu has quit [Ping timeout: 272 seconds]
devcpu has joined #osdev
dennis95 has joined #osdev
ElectronApps has quit [Read error: Connection reset by peer]
nismbu has joined #osdev
regreg has joined #osdev
iorem has quit [Quit: Connection closed]
nur has quit [Quit: Leaving]
nur has joined #osdev
froggey has quit [Ping timeout: 240 seconds]
Arthuria has quit [Ping timeout: 268 seconds]
regreg has quit [Read error: Connection reset by peer]
<nur>
is this thing on?
<GeDaMo>
Maybe the batteries need to be replaced :P
<nur>
I haven't seen any text since last night :p
<nur>
I thought maybe the channel was broken
cultpony has joined #osdev
<nur>
but now that I know it's not, is there a reason the examples in the Programmer Interval Timer wiki page is all in assembly?
<nur>
it feels needlessly complicated
<GeDaMo>
Well, it's a wiki, you could always add C or pseudocode versions
smarton has joined #osdev
<zid>
because C has no way to do it
<nur>
I mean maybe not setting the registers but you can just use inb outb for those and use C for the rest no?
<geist>
whomever submitted it used their favorite language
<geist>
surprised we haven't seen more rust or lisp or something
<sham1>
I'm more impressed that their favourite language would be x86 assembly
dennis95 has quit [Quit: Leaving]
<nur>
ok so if I am reading this right, if I want a scheduler interrupt at 200hz I choose a divisor (1193182/200), send a mode command to port 0x43 (and I want channel 0, lobyte/hibyte split mode, and... a rate generator?)
<nur>
I am not sure which function I want here :-/
immibis has joined #osdev
johnjay has quit [Ping timeout: 250 seconds]
johnjay has joined #osdev
mahmutov has joined #osdev
<nur>
I'll go with square wave generator and see what happens
ifreund has left #osdev [WeeChat 3.2]
froggey has joined #osdev
<gog>
nur: you want rate generator
<gog>
square wave mode is for the second channel (i think?) to do tone generation on the pc speaker
dormito has quit [Ping timeout: 258 seconds]
janemba has joined #osdev
GeDaMo has quit [Quit: Leaving.]
devcpu has quit [Quit: leaving]
kingoffrance has joined #osdev
<moon-child>
hmm. So, say I have two keyboards
<moon-child>
plugged into the same computer
<moon-child>
I press shift on one, and then a on the other. Do I get 'a' or 'A'?
<moon-child>
and how does this interact with all permutations of caps lock?
<zid>
depends how the os handles it
<moon-child>
right. I am the os; how should I handle it?
<zid>
depends if you want multiple keyboards to be operable or not
<zid>
same for like, game controllers in a game
<zid>
do you want space + trigger to both be jump
<moon-child>
hmm, multiple controllers is ...
<zid>
for something like windows it's not super useful, because it's single seat
<zid>
and focus is only on one thing
<moon-child>
'multiseat' is kind of holy grail of hci, but it's been kinda shown not to really work
<zid>
but if you're like.. a mainframe
<moon-child>
but video games are a rare exception to that
<zid>
it might be useful that login daemon claims a keyboard and has its own buffer
<zid>
so if you had 4 keyboards plugged in, init spawned 4 ptys and gave them a keyboard each or whatever
<moon-child>
'claims a keyboard' good point. So within some 'session' events from some devices will be filtered. I will make a note to have a way to handle that. But I think you still want to have multiple devices operable within a single session
<moon-child>
laptops are an obvious example
<zid>
nod, same as keyboard + controller for a single seat game
<zid>
people do that in trackmania, sharp turns with keyboard and loose surfaces with controller :P
<moon-child>
but i still don't know what to do about shift from one device + a from another device!
<moon-child>
just tested freebsd, its behaviour is wrong
<zid>
wrong how?
<moon-child>
shift on one keyboard + a on another gives A. Fine. Press lshift on kb1, press lshift on kb2, release lshift on kb1, press anything: lowercase
<zid>
I would say it's entirely up to the OS and whether the stream is in raw mode etc
<zid>
that seems correct to me.. given I know how keyboards work
<moon-child>
why is that correct?
<moon-child>
it's not like nkro or anything, clearly it can distinguish the events
<zid>
keyboard's are.. edge triggered
<zid>
s/'//
<zid>
it'll send a press packet, and an unpress packet for shift
<zid>
and the last thing you got sent was an unpress packet
<moon-child>
yea, but it knows which keyboard the unpress packet came from
<zid>
but if it's collapsing them into a single 'keyboard state' such that you even get A in the first place
<zid>
You'd expect A and lowercase together like that.
<zid>
otherwise you'd have gotten lowercase a to begin with
<moon-child>
you can keep track of state separately for all keyboards, but say 'do uppercase translation if _any_ shift key is pressed'
<zid>
that's overly complicated for no gain
<zid>
I'd expect either full independnant keyboards, or a single merged virtual one
<zid>
indepednntendnant
<moon-child>
actually that was just the freebsd vt layer
<moon-child>
x handles
<moon-child>
it correctly
<zid>
yea x is probably in a rawer mode
<moon-child>
lshift on kb1 + lshift on kb2 + release lshift on kb1 + a -> 'A'
<zid>
hid rather than vt
<zid>
and does complicated libinput crap
<moon-child>
not sure why x would access rawer events than vt. It's probably just processing them in a more sophisticated manner
<zid>
because vts only care about characters
<moon-child>
right. Shift isn't a character, though, so at that level there's no recognition of it _at all_. The _implementation_ of vt is responsible for translating keyboard events into characters; at that level you have to access all raw keyboard events at a level no higher than x itself does
<zid>
It's probably gone through a couple of simple ass "collect keyboard events into a buffer lol" steps in the kernel for the vt side
<zid>
and X is just talking nearly raw packets
<moon-child>
wait what
<moon-child>
lol
<moon-child>
x on linux gets shift+shift+unshift wrong
<moon-child>
but linux vt gets it right
<moon-child>
??????
<clever>
moon-child: just for the heck of it, i turned on a shiftlock option a while back
<clever>
so the "capslock" key now makes the numbers turn into symbols
<clever>
its more of a shiftlock, and not limited to just letters
<clever>
xkbOptions = "caps:shiftlock";
<moon-child>
clever: that's how typewriters work
<moon-child>
capslock physically shifts the whole thing down
<zid>
I like those scelectrix ball things
<moon-child>
'shiftlock' I can see making sense if you actually use capslock, but ... I don't sooo ¯\_(ツ)_/¯
<zid>
I wouldn't wanna be within 50ft of someone typing on one, but they're rad
<moon-child>
zid: oh, yea, those are cool
<clever>
moon-child: yep
* moon-child
just has a dumb regular ol' electric typewriter, nothing fancy
<clever>
capslock is the weird one, refusing to shift other keys
<moon-child>
got it mainly for the cool factor, then found out the ergonomics are SHIT. I still kinda wanna hook up my keyboard to it, though
<zid>
curious marc has some rad gear
<zid>
networked mechanical terminals and stuff
fly_ has joined #osdev
fly_ has quit [Quit: Lost terminal]
devcpu has joined #osdev
regreg has joined #osdev
MiningMarsh has quit [Ping timeout: 245 seconds]
<moon-child>
I've decided modifiers from one device _should_ affect events from another device
<moon-child>
imagine the case of foot-pedal-as-meta-key
<moon-child>
or two one-handed maltrons
<zid>
nod, fair
<zid>
plugin numpad is a real thing too
<zid>
and you might want to ctrl-3 in nethack
<moon-child>
no love for hjklyubn? D:
<zid>
vikeys and numpad have different autowalk behavior
<zid>
but numpad is more annoying to play on
<moon-child>
'autowalk'?
<zid>
HJKL
<moon-child>
you mean like the difference between shift+direction and ctrl+direction?
<zid>
yea
<zid>
whether they stop for nasties or turn corners and things is slightly different
<moon-child>
so that's shift vs ctrl, not vikeys vs numpad
<zid>
I don't think shift-numpad does anything though
<zid>
unless that was a config issue
<moon-child>
so that's two reasons not to use numpad!
<moon-child>
:P
<zid>
not using vikeys frees up lots of # commands though!
<zid>
jump for one
<moon-child>
eh, with autocomplete it's not too bad
<zid>
I'd play nethack more but I don't like 3.6
<moon-child>
play slashem
<zid>
cbf to learn it tbh
<zid>
I got to zot with some runes in dcss once, that's about it for non-nethack I've bothered to play
<moon-child>
I added readline bindings to it finally...after _decades_ of not being able to fix prompts without ^U and retyping. Like 200loc
<zid>
I played one game of the nethack4 fork and ascended and quit undefeated :P
<moon-child>
haha
<zid>
(I got annihilated by a lightning golem in zot)
<zid>
I had +++ lit res or whatever but I was in a corridor and got max-bounced
<moon-child>
the only non-nethack roguelikes I've tried to play are angband and cogmind
<moon-child>
never really got into either
<zid>
I played one game of doomrl
<moon-child>
well, I played ftl. That one was fun
<zid>
I'm semi-decent at nethack
<zid>
but it took me a lot of games to get there
MiningMarsh has joined #osdev
<zid>
I can like, semi-reliably ascend a valk in 3.4.3, but I have a lot more fun going neural human wizard and getting OPOP
<moon-child>
wiz is fun
<zid>
neural or riot, I love the eyes
<kingoffrance>
"I've decided modifiers from one device _should_ affect events from another device" eh, i agree with x. mechanism, not policy. surely should be a way to do that, but i wouldnt mandate it.
<kingoffrance>
to each their own :)
<kingoffrance>
i will always choose meta lol
<moon-child>
what do you mean 'i agree with x'?
<moon-child>
which x? x on linux or x on freebsd?
<kingoffrance>
that was more supposed philosophy
<kingoffrance>
im not saying implementations actually follow it :)
<kingoffrance>
but like why you have window managers
<kingoffrance>
and not a single toolkit
<kingoffrance>
etc.
nvmd has quit [Quit: Later, nerds.]
<kingoffrance>
other people would call that overcomplicated, overengineered, design overkill, etc.
<kingoffrance>
or "lack of design" even
<kingoffrance>
if something is not mandated, what good is it?
<moon-child>
kingoffrance: so, obviously to get correct behaviour wrt shift you have to track modifier states individually per-keyboard. And then at some point you collate that state wrt a single event. This is composition
<moon-child>
as we all know, premature composition is the root of all evil
<kingoffrance>
lol
<moon-child>
so obviously yes it should be possible to control the way that composition occurs
<zid>
I thought it was the cause of soiled underwear
<moon-child>
all I'm saying is I think one way of composing is more sensible than another
<kingoffrance>
np ok, i misinterpreted maybe then.
<kingoffrance>
yeah, you still need a "default" no matter what you do i guess
<kingoffrance>
even for ultra-customizable, sensible defaults still makes sense for expected usage, etc.
<kingoffrance>
or "templates" etc.
<moon-child>
also see previous discussion about device filtering viz sessions
<moon-child>
which is again a sensible class of proto-behaviour, not a hard-fast rule. (At least in my conception of it)
<kingoffrance>
i also tend to lean on flexible because what people will want to do or try as an experiment depends on what is close at hand...
<kingoffrance>
so even if i have no conceivable use for something, i still dont rule it out lol
<kingoffrance>
<-- not productive
<moon-child>
heh! I lean that way too though so i sympathize
<bslsk05>
en.wikipedia.org: Lexer hack - Wikipedia
<moon-child>
you 'parse' something like 'x*y' as 'maybe a multiplication or maybe a declaration'
<moon-child>
and then later on you find all those 'maybe' nodes and figure out what they actually are
<zid>
yea I guess that's what I meant about typedef right
<zid>
"This ambiguity can happen in C if the lexer does not distinguish between variable and typedef identifiers."
<zid>
It doesn't seem that hard to solve if you've hand written it, because you can just.. parse the typedefs on the spot trivially afaik?
<zid>
then just pass the little hash table you made for that forwards or whatever
<moon-child>
yes
<zid>
I really don't want to write a lexer and a parser :(
<zid>
I just wanted to demo my incomplete structure deref
<moon-child>
you can dereference incomplete structures?? ;o ;o
<zid>
You can in my language!
<moon-child>
how?
<zid>
You're allowed to until the first member with an incomplete type
<zid>
tada, that's the entire change.
<moon-child>
oh I see
<moon-child>
so you can have struct a { int x; struct b y; int z; } *a
<moon-child>
and then access a->x but not a->y or a->z
<zid>
so struct apple { int weight; struct apple_private; }; struct apple *a = apple_new(20_GRAMS); if(a->weight == 30) ...; apple_free(a);
<moon-child>
(but yes &a->y?)
<zid>
otherwise you have to leak all the declarations for everything everywhere
<zid>
or use a struct * and eat an indirection
<zid>
or do really sketchy char hidden[]; stuff
<moon-child>
'eat an indirection' you can do better than that
<moon-child>
access 'hidden' indirectly, but actually allocate it right after the main struct
<moon-child>
so that way whenever one is in cache the other is too
<moon-child>
so you still have the dependency but it's not horribly slow
devcpu has quit [Quit: leaving]
<zid>
if anything those solutions are worse, because they fuck up the language
<klange>
a pointer to a struct is equivalent to a pointer to its first member, so just make `struct apple_private { struct apple ..., your private shit here }`
<zid>
nothing stops you making automatics of them
<zid>
klange: You need the size of the inner struct, leaking the dec
<klange>
yes? you need the size of something to calculate where to put something after it?
<zid>
exactly.
<zid>
We can already do what you say, and it sucks because it leaks the dec.
<moon-child>
zid, klange is flipping your structure around; the public thing is inside the private thing, not the other way around
<moon-child>
the private parts of apple_private are not leaked
<zid>
Yea I've done that typically, you have to cast everywhere
<klange>
only on the private side
<zid>
you end up looking like the sockets api
<klange>
boo hoo
<zid>
it'd all be transparent and perfect if I could just make my one change
<zid>
afaik plan9 has it
<zid>
oh it also has the problem if being fuck-uppable with automatics