Then u can use a Getscalar() or a typedlist custom query with an aggregate, You may have a look in the manual for how to deal with that.
But the principle is the same, just fetch your max pk, and perform the increment in the code. It may not be very elegant by leaving the sequence away, but it shouldn't be that bad.
The only thing is you need to apply optimistic persistence, it requires that you're the only one to deal with the dbase, in which case you should be able to track the sequence from the code without having to retrieve it every time.
But now if some other systems get to perform saves, then you should retrieve some "proof of consistency together with your pk", and add some concurrency support (there are some features supported by llblgen, see the manual reference), to make sure that they were not any inserts between your pk fetchs and your own inserts.
Basically you add a where conditional clause to your statements which checks for consistency.
Actually I'm thinking of something that might be feasible to keep up with a single optimistic query (Frans to say): Use a combination of an expression applied to your pk field with a comparesetpredicate to directly compute your sequence on the insert statement. You can do things similar which are documented in the manual (see "field expressions and aggregates"), but it might be just too demanding for this one.
Anyway, there are workarounds obviously.